updating generation code to straight JS

This commit is contained in:
2026-01-27 12:16:28 -06:00
parent 451cc73864
commit 44f1176073
16 changed files with 896 additions and 896 deletions

View File

@@ -1,9 +0,0 @@
{
"permissions": {
"allow": [
"WebFetch(domain:jsonresume.org)"
],
"deny": [],
"ask": []
}
}

View File

@@ -1,33 +0,0 @@
name: Build and Push Docker Image
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
# required to ensure we have node and all the build requirements for gitea actions
container: docker.io/catthehacker/ubuntu:act-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to Gitea Container Registry
uses: docker/login-action@v3
with:
registry: git.sneakygeek.net
username: ${{ github.actor }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
git.sneakygeek.net/ptarrant/resume:latest
git.sneakygeek.net/ptarrant/resume:${{ github.sha }}

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
node_modules/
*.docx
package-lock.json
.claude/

View File

@@ -0,0 +1,71 @@
%PDF-1.7
%<25><><EFBFBD><EFBFBD>
1 0 obj
<</Pages 2 0 R /Type/Catalog>>
endobj
2 0 obj
<</Count 3/Kids[ 4 0 R 10 0 R 12 0 R ]/Type/Pages>>
endobj
3 0 obj
<</CreationDate(D:20251208124202)/Creator(PDFium)/Producer(PDFium)>>
endobj
4 0 obj
<</Contents 5 0 R /MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</Font 6 0 R /ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Rotate 0/Trans<<>>/Type/Page>>
endobj
5 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 1829>>stream
GatU3gMYb8&:O:Sb_lM"Po,[YDLJNo.u42I<[9#/!Pb_X-+,J<bNpj`W9D9GG'Sp\0Jo4bJ4/gBk00>UZgtoNO(Z5&*8k*.Dr5p"q%+n2"\o'V)OB@$f*ecg3M!usmc.arF7#>g06!E4SqMH24N.PDAkqlEF+tK)SZs-lF;VpGp;:XY?>Uijlun<An-t%X+T)CtcW6amO8+!<H9-5NnX&:"OjiW\?TEhe>RSe;FgVfZ1*u\q_HXPEVGk">R_"^[2rN#7iFFtf<MP6p;A--^:NOB.-PC\^^1R;*`[h$-AG1k"1\[4*\&Eo0)(UI7`aNt8TX)DeM/;NgZoaA[5rJX/A:>Kd^d=MnBHNOu)n:5*qrRLKh(&=1m^C<p,$`s[mbrJ;)_Q@(%rCt:mFanfhpq9ng_HtU0DdjQc_f!`_rJ!`WlBPLnMKH'`a2<4C!%VB4GEreWM/7SVbnn25/CMjE<-_X5t4F>,oi=:JFEIE-VC09Oamlscu6FY;'&S]'S/T.-d#Y<P"%dXAj)UD.M4FK4GEai2;gsq9$CV]!OJ1m))7:SZ(h/Q8\oJj[;oXsOc7;'T4jd2XX"Nni_;ZG(aCsqAi@I;M*[,Vka=0*W-i&f9I'r@bYpA!V'Y6&5#?,4Hn@pEn-9^9<LQ$\9HA*7$r0*F)5lBJ5_nls1=E"p%d^,Dco#F$+?[GI`;%e4AUiG>CS?h@11hiOn^J`dI3?,/`d!/XWlC$\9c2Sr`^csMcRp`lQWQtl3\)dY_I;S5@XuRq_'Cn'=D,Wa,e00,U""<6DY1r8XYH$l+m)N0bnG&r0e8V*$E4_0I;iS.Ec"9S^KPLZkgX'#J=H9`r72,F<'s>:N=8(2@Au[jl=V0IFq-&d%-u[fB/Lu\bqb6#iUkYd0__,@7i__r8N$L)-B23>Xi^XmNk&;4b<qbc[KN`fM.NP]:uL4)Vrg-N0rE#'o`!!Wr@s=.[ZW*[]RSDrp=SbQg@$V!YIenY(bU)+;G862Qjq7lb:Q)!(m^X\7##qHHHuq/TrBB73]^HNe3s6`jC=@0UTFQ[,\ASD1!S5>Cc+)&1CUg6l;*Jmh(hH@YJ4Z@@9qLW2r7-_e.:RJ1SN2D'7tu6=<\>W$F.TM@7d#r&4e@0QAuMJU!un;NYt#J>A$/XKtr[)o`?2Zgs/YM)Gg2k8KZkP1p+h2dS)bGf:GX,9eCpdI)4]9cJF*kRS^.8ljJDj;AB43=VRfd\CBN>aRBi0L7(VqkiZ.($TJuI2PQ?&of&U/^_L]@c.$\M<Dh/;13sJ'bD[\:>4OS),O;I*DP]lMlGieQ8(?mh6@#U5UIA%6,r()c*Eo[6VPIWr5=Eibe/3]/MT59S>f9F^kW&Nq$o=tJ;`m<_2Q]5EN>Yq37c=pdThJN*R-'5#[&l)LgshSWMb6/$7q\s3(TTdf8u>t;eUQ&r<dV($0>86.Xds`7IOu/s[CJ-$<G#f!kgrRZ2!WR)hjse[VS"E^VU+IL/e^ZCZjC%`-71=>_:Z`=O(Qca2&?Wm+1"mg-OQ`;OH^Wsen<A)m'`QT<kc^9Da*Jd&T@NgIC'sQcun-ZT46Tn@oHh.M.T;?(u+mG4\R<.\RKoqe\f@@8._jXFkAMU+>Pu3e'X;2:te`^:\nHUFRdBmeg,a$ae6K4>(]j\980X$om-]D/$O/8g93$`ACRS/hIumQFN%KRcVl=tM/uRF]l#^Z:l<LN1,i<7IDSfhD-H<AZtXtYN#E;.DGa#u,rmTQf5p<)3`X/:ru=8*.N;p&OB+>>%'dLq<qe&lm_7^FRiYrbO-mf3@4'2?J@M>.;:WKU,.&197t!Fc28(-q22gGQ?gamS('~>
endstream
endobj
6 0 obj
<</F1 7 0 R /F2 8 0 R /F3 9 0 R >>
endobj
7 0 obj
<</BaseFont/Helvetica/Encoding/WinAnsiEncoding/Name/F1/Subtype/Type1/Type/Font>>
endobj
8 0 obj
<</BaseFont/Helvetica-Bold/Encoding/WinAnsiEncoding/Name/F2/Subtype/Type1/Type/Font>>
endobj
9 0 obj
<</BaseFont/Helvetica-BoldOblique/Encoding/WinAnsiEncoding/Name/F3/Subtype/Type1/Type/Font>>
endobj
10 0 obj
<</Contents 11 0 R /MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</Font 6 0 R /ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Rotate 0/Trans<<>>/Type/Page>>
endobj
11 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 1739>>stream
Gat=,?#uJp'Re<2\1aCEG@D@BpuAVRdN-XlD79.J?5/Je)^,ebfM-ko*W^GQ0#:\OB<Ws5EmMG^S9pfg!kcD4R[-@6f(@pB87=pP%>F=3VY(b:?CsBPL#(&-S7[?0N4#<]1\hoKKnh&7Cl,&`%SuW@3+%*GUaokulEm7s.%8P[0!"iR():+=h/d(O=rZFlkjCP?U'\8%nK-T$Io#B[B`3\sj);S:KJK)o`fUeop[r(EY.kaJO/d$$##1>EO)bqnK>fZ>BYC24]5T['<QZT5a@F!"\tj:;:/caW9>Qn"`)<A4V6ZC^<0G^r)^fUGd]O/Vc@8eeAO>L#F7oK`Y!+LY`<oU7Zdag`hr>*5^M:=4MNllc+RF?5de(>8icb;#_/>r!<GFM"*En-*&WYZTl"e^VT>,0X^S@o=5cQTh1=aN^.5L%=<Ym_C;NKCJlV*j1e5YN=i]Wt+SMgutWHY-g-VEp83B<$WS;a@/Ga%rt>sAM](Ea0"UC,N"MOH;\2RQ/*1ea(mX<aK;=Z=ku:+k`lNi]MB<m^?!B;16S\B9Nbgk.cJ6je$QNn#nQc,]E>Ce<EbT7ZGLBP?)%Tpq+&jbOXn]cb#AE+M<s3XAJ*"UtgohUYT`>??!;18UH9<Qq;YIjtasH_TSUPt+*ZI<811K,T_Ua*2<@<i;l#rrEg?73fp`>bWR1L&cXp+)fbAKr\?X:pskg.h8i@)o4JA/`L9bN8mD,Op::OlZROV:_`UA:D+X%Sfppd"N^nKST"a<Nbg9e-coMGC)/Kq&FF);\g9n*3M&H@F>a9S%W@=,4Xd:04p%aI3]j$-[Zqg8'efE#-([QC[dq#kYBa;"mtZ#&'Nk,GmghMKT+$'rS0YeF&BBuC;]$q!VclV])dTL\:Bcegp$EN:g&"gj*7R7KPS.G\l.*'lERGCC_^^ej7R"+tIai0nnWTp'"6(^Gp4*/lhVMXI,&@!_3AYAh5oH'<=<'Lj0Y6hhciR\0Q74I:<(]>W8,eflRJ/%na'm<s@PU1$U9E8^&Q5Tn/!*Y1TLV!DRknTaigo"E"/+m_gn4qL#D2^k$=g(/:!K$%;iBO[YF3L]Z0KUm#4YE"8[%>*8U/Cbd7kGfi?/p+PC$%2Lnk>RW%D2OaP6]Gr1fBVIMb%,<`EZ5kig-_`!1ItDoTZ2$dtph7Lb^UL-CPK%XQYi$',K0YGg?;>B/,,YO7HZT^_Sh9jkY<[t5,O_2#p[Nu#'._+4+XAAP`".5IMf?"_JHOmPN<%>W-DY,#_j[22.g`"g/c[eQO0'@7e:!E\H^KC+d%+I^9_i^ZU9(B5,Y,$/*n[F6Gn!1@mZI6^<@W7l:7"*h8,/_^eU+I&24Zk+O38r04*8!ZAT=B.iEj@j\PTi\k/o7Cj5QVFhoQ_;Pb#Y&KC_J91YRG1NkBSr1!>euor6OecAH)Tpm$C/'6W5IQ1=g-2I+?@!EJ*"67HiV1LaVeV\!?gD82"AI.g%sRB&[2o^Mc.nRp;)Y=gZ%o\PJTcDX5IqX5=r]4,f9IR`7Nh@gM1u40P5PP=Ao^G?N3P(VVkmRZ3M*b_DqE,*DVX=ol$Q'6-EXnUInKVZJmO%h)#;W9[6/B=*%OsYAYQ=gcKGPOL?$a,FOVhL\NQnSugn3#O-Q<J$h'PV@p7&bf$)?qu5u$8^4PAkrTA8i!7jfou!H++H*_UB=NS,bSEq%[GZ;[[G-*o05B#Im4Ws=Pg.GI4J<bW)6]Nb@i"b8^B$Cm(Ob)11]~>
endstream
endobj
12 0 obj
<</Contents 13 0 R /MediaBox[ 0 0 612 792]/Parent 2 0 R /Resources<</Font 6 0 R /ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Rotate 0/Trans<<>>/Type/Page>>
endobj
13 0 obj
<</Filter[/ASCII85Decode/FlateDecode]/Length 1014>>stream
Gat=j968Q9'SZ;['mIJJ/Z#H(G*aQJOeFH44ET&3,2YAS[M0uID>l]M<`09L>f_00MecJpma4%XIIQIkq`A]rhA(!UiI`4;YlI"W6r7.+H#`?6^u(/G1J#2s0\*hMVQ0fFc$u1=hJHqln7e2+Nl1*nNZ,VUDmceg31#nl8<pe087<hsC9FA/R^B/No1-N*Z9l&_$p6bL5tTu<hVHQk']5U/dkQ9JlSksl$R\51p1HP]?2Xq9lJ(W]K:_k`:K+dC&qjMbZ(b].-u!(_1c0&d`Q;!q$X>P>XVtWp!976#"/R\PMg9+&AX$u(Q#*BPH7hjpa;QiPm3D-lpjkW'bglIOj#sQM<\"4qI$@*>+DQpJX3nS6L=Hf.,6>)r@t^P2N*F-1B-$X2$`n*OR4EF[!dg;0Os0NAG4e#N$dHa/jVEkeZqIOTC'hO1<]*\Bpdc`PlQDhm=gRo3b[g?^J2tn1=8tL_(W_q@E,tJMeE]jspdjW!cKq0@M[S_6f_M!64mM>m*HH:mCfC*fOq[;NQok.WSt6\d)U'gnA.8F\h4a!PK<]6tJ-TML,U[+M1rLe6IWiOBZKePSWb`ZG%43hWQgC24Ve)4;Kk?RUQJ8iTr"Z!g<q7iD;3o^c`(F1kg2\fp_"fE`Xe,A1B+L0A'ZU*[\8M^iYsqI[Y@?t<0l2s9H38o(8PTBZ%;;Q-nP3?>>,,7q&HtP)a2YX.&D^Ya8H>ON[Vp&r%5/\0A<_i/JW*hQ6#UOR,O=)D03d:+3qgfH:'Le87F=='l4<-"@hbhp7+/9eLa3"K6MmGJ4lg0!A@LCg:bH/5KI2`e##eORfH2<b`.Q7&Hou%=34.P)2nI_\1/1VMYn0Y[1\T3M9*Z[SVX`LT\X_b[\@g()$7EnHc66Psl7EP%TZ!C1"W_HY7gYAm0F2),ll?4!35*BRi5KT;cJ97#MA,f<L(8jB]hb"IcKo<?42OEX#<#i7Y#2s,Nh6c,4nOnc]\_[Bl'J-3jcCRFI5s:AaoDZ2!V-bC7K~>
endstream
endobj
xref
0 14
0000000000 65535 f
0000000017 00000 n
0000000066 00000 n
0000000138 00000 n
0000000225 00000 n
0000000396 00000 n
0000002314 00000 n
0000002367 00000 n
0000002466 00000 n
0000002570 00000 n
0000002681 00000 n
0000002854 00000 n
0000004683 00000 n
0000004856 00000 n
trailer
<<
/Root 1 0 R
/Info 3 0 R
/Size 14/ID[<F9B98603F188DAF209E01A59031F93DD><F9B98603F188DAF209E01A59031F93DD>]>>
startxref
5960
%%EOF

162
2025/Head-of-SOC/Resume.md Normal file
View File

@@ -0,0 +1,162 @@
# PHILLIP TARRANT
**Head of Security Operations | SOC Director**
Morrison, TN | (706) 294-6733 | ptarrant@gmail.com | [LinkedIn](https://www.linkedin.com/in/phillip-tarrant-cyber)
---
## PROFESSIONAL SUMMARY
Results-driven Security Operations leader with 20+ years in cybersecurity and proven expertise scaling SOC operations in high-growth MSSP environments. Successfully grew SOC client base by 225% while managing a team of 17 direct reports and improving operational margins from 18% to 52%. Hands-on leader combining strategic vision with deep technical expertise in SIEM, SOAR, DFIR, and threat detection. Track record of building operational structure through SOPs, playbooks, and automation that drove 47% automated ticket resolution at scale.
---
## CORE COMPETENCIES
| SOC Leadership & Operations | Technical Expertise |
|:---------------------------|:-------------------|
| Team Building & Development (17+ direct reports) | SIEM: Splunk, Sentinel, ELK, Stellar Cyber |
| SOC Scaling & Growth Strategy | SOAR: Swimlane, D3, Torq |
| Playbook & Workflow Development | EDR: SentinelOne, Defender, Darktrace |
| SOP Creation & Process Design | DFIR & Malware Analysis |
| KPI Development & Metrics Reporting | Threat Hunting & Detection Engineering |
| P&L Management & Profitability | Python, PowerShell, Automation |
| Vendor Management & Negotiations | Cloud Security: AWS, Azure |
| Executive Communication | NIST, PCI-DSS, HIPAA Compliance |
---
## PROFESSIONAL EXPERIENCE
### Senior Information Security Consultant
**Confidential** | Remote | January 2025 - Present
Contract consulting providing SOC leadership and cybersecurity expertise to multiple organizations.
- Served as interim SOC Director at ATS Cyber Security Services, restructuring SOC workflows and elevating team capabilities through targeted training programs
- Currently leading SOC operations for US Defense Space market supplier across multiple Microsoft tenants and international locations
- Managing full SOC lifecycle including alert triage, DFIR engagements, and vulnerability management
- Designed and implemented automation operations including SDLC processes and deployment pipelines
- Managed enterprise Vulnerability Management Program for major fintech client using Qualys, building custom reports and automation scripts
---
### Director of Automation
**Compuquip Cybersecurity** | Doral, FL | June 2024 - December 2024
Led Automation Team to transform SOC operational efficiency through intelligent automation.
- **Built automation infrastructure handling 3,500 tickets weekly with 47% closed without human intervention**
- Designed, programmed, and deployed AI-powered tools using custom prompts and logic engines for security automation
- Spearheaded new automation architecture using Python, AWS Lambda, and SOAR platforms
- Drove team development in automation workflows and modern SOAR technologies
- Created custom heuristics, filtering rulesets, and rule engines for automated alert triage
---
### SOC Director
**Compuquip Cybersecurity** | Doral, FL | March 2023 - June 2024
Directed Security Operations Center serving MSSP clients, overseeing all SOC, Red Team, and managed services operations.
- **Scaled SOC client base from 16 to 52 customers (225% growth) through service expansion**
- **Improved SOC profitability from 18% to 52% margin (80% in peak quarter), contributing to 15% annual net income growth**
- **Managed team of 17 direct reports** including SOC analysts, engineers, and specialists
- Part of executive leadership team with COO/CEO/CFO, participating in quarterly strategic planning
- Oversaw Red Team/Offensive Security operations and Managed Remediation Service projects
- Managed DFIR engagements, MDR services, proactive vulnerability scanning, patching, and penetration testing
- Developed and maintained situational awareness reports for APT and foreign adversary incidents
- Created threat trend analysis reports and operational metrics for executive visibility
---
### SOC Technical Manager
**Compuquip Cybersecurity** | Tampa, FL | January 2021 - March 2023
Managed SOC operations with focus on process development, team mentorship, and incident research.
- Authored comprehensive SOPs and training documentation establishing operational standards
- Led incident research activities and mentored SOC engineers on advanced investigation techniques
- Developed SOC playbooks and workflows standardizing response procedures
- Generated end-of-month operational reports for management and customer stakeholders
- Maintained threat intelligence and situational awareness reports for advanced persistent threats
- Created threat trend analysis reports and performance metrics
---
### Sr. Cyber Security Architect
**Travel Syndication Technology (TST)** | Alpharetta, GA | April 2020 - January 2021
Responsible for security architecture, compliance programs, and security operations strategy.
- Developed and maintained cloud security posture and protection controls
- Created custom automation tools for infrastructure attack simulation and detection design
- Led organization through PCI and NIST 800-series compliance audits
- Formulated and managed phishing awareness and developer security training programs
- Designed automated security verification and testing programs
---
### Senior Cyber Security Engineer
**Intercontinental Exchange** | Marietta, GA | March 2020 - April 2020
Architecture and Automation Team member focused on SOC tooling and data pipeline optimization.
- Designed security data flow architecture from endpoints through aggregation, parsing, and storage
- Developed custom tools automating SOC triage and response activities
- Built vulnerability and threat hunting dashboards for tracking and mitigation
- Incorporated security into CI/CD pipelines including cloud-based deployments
---
### Cyber Security Engineer
**Intercontinental Exchange** | Marietta, GA | August 2018 - March 2020
Incident Response and Digital Forensics Team lead investigator.
- Served as lead investigator on critical security incidents with thorough forensic investigations
- Created extensive documentation establishing IR team processes and procedures
- Led malware analysis operations in isolated sandbox environments
- Developed training programs including custom malware writing exercises for junior analysts
- Managed multi-server compromise investigations coordinating across three teams and time zones
---
### Technical Services Manager
**The National Wild Turkey Federation** | Edgefield, SC | October 2015 - August 2018
Managed IT team of 8 direct reports supporting 300+ staff members.
- Directed team of technicians and developers with full performance management responsibilities
- Managed security for entire web presence including network and application security
- Negotiated vendor contracts saving $50,000+ annually through in-house migrations
- Oversaw infrastructure expansion doubling server capacity
---
## CERTIFICATIONS
| Certification | Issuer |
|:-------------|:-------|
| **GWAPT** - Web Application Penetration Tester | GIAC |
| **GCFA** - Forensic Analyst | GIAC |
| **GCIH** - Incident Handler | GIAC |
| **Lethal Forensicator Coin** | SANS (Award for Digital Forensics Excellence) |
---
## EDUCATION
**Associate Degree in Network Administration** | Virginia College | 2014-2016 | GPA: 4.0
---
## KEY ACHIEVEMENTS
- **SOC Scaling**: Grew MSSP SOC from 16 to 52 clients while maintaining service excellence
- **Operational Excellence**: Improved SOC margins from 18% to 52% through process optimization
- **Automation Leadership**: Built systems processing 3,500 weekly tickets with 47% automated resolution
- **Team Development**: Successfully led and mentored teams up to 17 direct reports
- **Executive Partnership**: Collaborated with C-suite on strategic direction as part of leadership team
- **Enterprise Scale**: Managed operations for 50+ clients, 150,000+ assets, 1M+ users

View File

@@ -1,49 +1,50 @@
# CLAUDE.md # Resume Generator with docx-js
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Overview
This project generates professional Word documents (.docx) from JSON Resume format using the `docx` npm package.
## Repository Purpose ## Setup
```bash
This repository generates resumes based on existing resume documents and recent work history. Resumes can be general-purpose or tailored for specific job roles/titles. npm install docx
## Output Structure
All generated resumes must follow this folder structure:
```
YEAR/ROLE/Resume.md
YEAR/ROLE/Resume.pdf (or Resume.docx if PDF not possible)
``` ```
Example: `2025/Security-Director/Resume.md` ## Usage
1. Place your resume data in `resume.json` following the JSON Resume schema (https://jsonresume.org/schema/)
2. Run: `node generate_resume.js`
3. Output: `Phillip_Tarrant_Resume_{YEAR}.docx`
## Output Formats ## Key docx-js Patterns
Every resume generation requires two outputs: ### Page Setup
1. **Markdown version** - Primary editable format - Always set explicit page size (US Letter: 12240 x 15840 DXA, where 1440 DXA = 1 inch)
2. **PDF version** - Preferred final format (use MS Word .docx if PDF generation is not possible) - Set margins in DXA units
## Source Materials ### Text Formatting
- Use `TextRun` for text with formatting (bold, italic, size, font)
- Size is in half-points (22 = 11pt, 24 = 12pt, 32 = 16pt)
- Always specify font explicitly for consistency
Reference these files in `sources/` when generating resumes: ### Lists/Bullets
- Never use unicode bullets manually (like "•" in text)
- Use `numbering` config with `LevelFormat.BULLET`
- Reference the numbering config in paragraphs
**Resume Documents:** ### Critical Rules
- `sources/Phillip_Tarrant_Resume_2024.docx` - Most recent general resume 1. Never use `\n` for line breaks - use separate Paragraph elements
- `sources/Phillip_Tarrant_Resume_2024_c_level.docx` - Executive/C-level focused version 2. Always set table `width` when using tables
- `sources/Phillip_Tarrant_Resume_2023.docx` - Previous year resume 3. PageBreak must be inside a Paragraph
4. Use Arial as default font (universally supported)
**Work History Details:** ## Customization
- `sources/compuquip.md` - Compuquip role accomplishments - Modify margins in `sections[0].properties.page.margin`
- `sources/contractor.md` - Recent contract roles - Change fonts by updating the `font` property in TextRun objects
- `sources/briarwood.md` - Briarwood experience - Adjust spacing with `spacing: { before: X, after: Y }` on Paragraphs
- `sources/ice.md` - ICE experience
- `sources/morgan.md` - Morgan experience
- `sources/nwtf.md` - NWTF experience
- `sources/tst.md` - TST experience
- `sources/older_experience.md` - Earlier career history
## Resume Generation Workflow ## JSON Resume Schema
The input JSON should follow the standard JSON Resume format with these sections:
1. **General resume**: Use 2024 resume as base, incorporate recent history from markdown files - `basics`: name, label, email, phone, url, summary, location, profiles
2. **Role-specific resume**: Tailor content to emphasize relevant experience for the target role/title - `work`: array of positions with name, position, startDate, endDate, summary, highlights
3. Create the YEAR/ROLE directory structure before generating files - `education`: institution, area, studyType, startDate, endDate, score
4. Generate both Markdown and PDF/Word outputs - `certificates`: name, issuer, date
- `awards`: title, awarder, date, summary
- `skills`: array of skill categories with name, level, keywords

View File

@@ -1,18 +0,0 @@
# Multi-stage build for JSON Resume HTML generation
# Uses jsonresume-theme-even for rendering
FROM node:20-alpine AS builder
WORKDIR /app
# Copy resume.json
COPY resume.json .
# Install theme and generate HTML using its built-in CLI
RUN mkdir -p www && npx jsonresume-theme-even < resume.json > www/index.html
# Serve with nginx
FROM nginx:alpine
COPY --from=builder /app/www /usr/share/nginx/html
EXPOSE 80

BIN
Phillip_Tarrant_Resume.docx Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,28 +0,0 @@
# Resume
Personal resume repository using the [JSON Resume](https://jsonresume.org) standard.
## Quick Start
Generate HTML resume with Docker:
```bash
docker build -t resume .
docker run resume > resume.html
```
## Structure
```
resume.json # JSON Resume data file
Dockerfile # Builds HTML using jsonresume-theme-even
sources/ # Source documents and work history details
```
## JSON Resume
The `resume.json` file follows the [JSON Resume schema](https://jsonresume.org/schema). Edit this file to update resume content, then rebuild the Docker image to generate updated HTML.
## Themes
To use a different theme, modify the Dockerfile's `npx jsonresume-theme-even` line to use another theme package (e.g., `jsonresume-theme-elegant`, `jsonresume-theme-stackoverflow`).

View File

@@ -1,5 +0,0 @@
services:
resume:
image: git.sneakygeek.net/ptarrant/resume:latest
ports:
- "8080:80"

382
generate_resume.js Normal file
View File

@@ -0,0 +1,382 @@
const fs = require('fs');
const {
Document, Packer, Paragraph, TextRun, AlignmentType,
HeadingLevel, LevelFormat, ExternalHyperlink, BorderStyle
} = require('docx');
// ============================================
// CONFIGURATION - Modify these paths as needed
// ============================================
const INPUT_FILE = './resume.json';
const OUTPUT_FILE = `./Phillip_Tarrant_Resume_${new Date().getFullYear()}.docx`;
// Load resume data
const resumeData = JSON.parse(fs.readFileSync(INPUT_FILE, 'utf8'));
// ============================================
// HELPER FUNCTIONS
// ============================================
// Create a bullet point paragraph
function createBulletParagraph(text, reference) {
return new Paragraph({
numbering: { reference: reference, level: 0 },
spacing: { after: 60 },
children: [new TextRun({ text: text, size: 22, font: "Arial" })]
});
}
// Format date from YYYY-MM to "Mon YYYY"
function formatDate(dateStr) {
if (!dateStr) return '';
const date = new Date(dateStr + '-01');
return date.toLocaleDateString('en-US', { month: 'short', year: 'numeric' });
}
// ============================================
// BUILD DOCUMENT CONTENT
// ============================================
const children = [];
// --- HEADER SECTION ---
// Name - centered, bold, larger
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 80 },
children: [new TextRun({
text: resumeData.basics.name,
bold: true,
size: 32, // 16pt
font: "Arial"
})]
}));
// Title/Label - centered
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 80 },
children: [new TextRun({
text: resumeData.basics.label,
size: 24, // 12pt
font: "Arial"
})]
}));
// Contact line 1: email • phone
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 40 },
children: [new TextRun({
text: `${resumeData.basics.email}${resumeData.basics.phone}`,
size: 22, // 11pt
font: "Arial"
})]
}));
// Contact line 2: LinkedIn • Location
const location = `${resumeData.basics.location.city}, ${resumeData.basics.location.region}`;
children.push(new Paragraph({
alignment: AlignmentType.CENTER,
spacing: { after: 200 },
children: [
new ExternalHyperlink({
link: resumeData.basics.url,
children: [new TextRun({
text: resumeData.basics.url.replace('https://', ''),
style: "Hyperlink",
size: 22,
font: "Arial"
})]
}),
new TextRun({
text: `${location}`,
size: 22,
font: "Arial"
})
]
}));
// --- SUMMARY SECTION ---
children.push(new Paragraph({
spacing: { after: 240 },
children: [new TextRun({
text: resumeData.basics.summary,
size: 22,
font: "Arial"
})]
}));
// --- CAREER EXPERIENCE SECTION ---
children.push(new Paragraph({
spacing: { before: 120, after: 200 },
children: [new TextRun({
text: "Career Experience",
bold: true,
size: 26, // 13pt
font: "Arial"
})]
}));
// Work experience entries
resumeData.work.forEach((job, index) => {
const startDate = formatDate(job.startDate);
const endDate = job.endDate ? formatDate(job.endDate) : 'Present';
const dateRange = `${startDate} ${endDate}`;
const companyLine = job.location ? `${job.name}, ${job.location}` : job.name;
// Job title and company
children.push(new Paragraph({
spacing: { before: 160, after: 60 },
children: [
new TextRun({
text: job.position,
bold: true,
size: 22,
font: "Arial"
}),
new TextRun({
text: `\n${companyLine}`,
size: 22,
font: "Arial"
}),
new TextRun({
text: ` ${dateRange}`,
size: 22,
font: "Arial",
italics: true
})
]
}));
// Job summary
if (job.summary) {
children.push(new Paragraph({
spacing: { after: 100 },
children: [new TextRun({
text: job.summary,
size: 22,
font: "Arial"
})]
}));
}
// Highlights as bullet points
if (job.highlights && job.highlights.length > 0) {
job.highlights.forEach(highlight => {
children.push(createBulletParagraph(highlight, "bullets"));
});
}
// Spacing after each job
children.push(new Paragraph({ spacing: { after: 120 }, children: [] }));
});
// --- EDUCATION, CERTIFICATIONS, AND AWARDS SECTION ---
children.push(new Paragraph({
spacing: { before: 200, after: 160 },
children: [new TextRun({
text: "Education, Certifications, and Awards",
bold: true,
size: 26,
font: "Arial"
})]
}));
// Certificates
if (resumeData.certificates) {
resumeData.certificates.forEach(cert => {
const year = cert.date ? new Date(cert.date).getFullYear() : '';
children.push(new Paragraph({
spacing: { after: 60 },
children: [
new TextRun({
text: cert.name,
bold: true,
size: 22,
font: "Arial"
}),
new TextRun({
text: `, ${cert.issuer}`,
size: 22,
font: "Arial"
}),
new TextRun({
text: year ? `, ${year}` : '',
size: 22,
font: "Arial"
})
]
}));
});
}
// Awards
if (resumeData.awards) {
resumeData.awards.forEach(award => {
const year = award.date ? new Date(award.date).getFullYear() : '';
children.push(new Paragraph({
spacing: { after: 60 },
children: [
new TextRun({
text: award.title,
bold: true,
size: 22,
font: "Arial"
}),
new TextRun({
text: `, ${award.awarder}`,
size: 22,
font: "Arial"
}),
new TextRun({
text: year ? `, ${year}` : '',
size: 22,
font: "Arial"
})
]
}));
if (award.summary) {
children.push(new Paragraph({
spacing: { after: 60 },
indent: { left: 360 },
children: [new TextRun({
text: award.summary,
size: 22,
font: "Arial",
italics: true
})]
}));
}
});
}
// Education
if (resumeData.education) {
resumeData.education.forEach(edu => {
const dateRange = edu.startDate && edu.endDate ? `${edu.startDate} ${edu.endDate}` : '';
children.push(new Paragraph({
spacing: { after: 60 },
children: [
new TextRun({
text: `${edu.studyType} in ${edu.area}`,
bold: true,
size: 22,
font: "Arial"
}),
new TextRun({
text: `, ${edu.institution}`,
size: 22,
font: "Arial"
}),
new TextRun({
text: dateRange ? `, ${dateRange}` : '',
size: 22,
font: "Arial"
})
]
}));
if (edu.score) {
children.push(new Paragraph({
spacing: { after: 60 },
indent: { left: 360 },
children: [new TextRun({
text: `GPA: ${edu.score}`,
size: 22,
font: "Arial",
italics: true
})]
}));
}
});
}
// --- TECHNICAL SKILLS SECTION ---
children.push(new Paragraph({
spacing: { before: 200, after: 160 },
children: [new TextRun({
text: "Technical Skills",
bold: true,
size: 26,
font: "Arial"
})]
}));
if (resumeData.skills) {
resumeData.skills.forEach(skillCategory => {
children.push(new Paragraph({
spacing: { after: 60 },
children: [
new TextRun({
text: `${skillCategory.name}: `,
bold: true,
size: 22,
font: "Arial"
}),
new TextRun({
text: skillCategory.keywords.join(", "),
size: 22,
font: "Arial"
})
]
}));
});
}
// ============================================
// CREATE AND SAVE DOCUMENT
// ============================================
const doc = new Document({
styles: {
default: {
document: {
run: { font: "Arial", size: 22 }
}
}
},
numbering: {
config: [
{
reference: "bullets",
levels: [{
level: 0,
format: LevelFormat.BULLET,
text: "•",
alignment: AlignmentType.LEFT,
style: {
paragraph: {
indent: { left: 720, hanging: 360 }
}
}
}]
}
]
},
sections: [{
properties: {
page: {
size: {
width: 12240, // 8.5 inches (1440 DXA = 1 inch)
height: 15840 // 11 inches
},
margin: {
top: 720, // 0.5 inch
right: 1080, // 0.75 inch
bottom: 720, // 0.5 inch
left: 1080 // 0.75 inch
}
}
},
children: children
}]
});
// Save the document
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync(OUTPUT_FILE, buffer);
console.log(`Resume created successfully: ${OUTPUT_FILE}`);
}).catch(err => {
console.error('Error creating document:', err);
process.exit(1);
});

204
package-lock.json generated Normal file
View File

@@ -0,0 +1,204 @@
{
"name": "resume",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"docx": "^9.5.1"
}
},
"node_modules/@types/node": {
"version": "24.10.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.9.tgz",
"integrity": "sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==",
"license": "MIT",
"dependencies": {
"undici-types": "~7.16.0"
}
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"license": "MIT"
},
"node_modules/docx": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/docx/-/docx-9.5.1.tgz",
"integrity": "sha512-ABDI7JEirFD2+bHhOBlsGZxaG1UgZb2M/QMKhLSDGgVNhxDesTCDcP+qoDnDGjZ4EOXTRfUjUgwHVuZ6VSTfWQ==",
"license": "MIT",
"dependencies": {
"@types/node": "^24.0.1",
"hash.js": "^1.1.7",
"jszip": "^3.10.1",
"nanoid": "^5.1.3",
"xml": "^1.0.1",
"xml-js": "^1.6.8"
},
"engines": {
"node": ">=10"
}
},
"node_modules/hash.js": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
"license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
}
},
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
"license": "MIT"
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"license": "ISC"
},
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"license": "MIT"
},
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"setimmediate": "^1.0.5"
}
},
"node_modules/lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"license": "MIT",
"dependencies": {
"immediate": "~3.0.5"
}
},
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
"license": "ISC"
},
"node_modules/nanoid": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz",
"integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.js"
},
"engines": {
"node": "^18 || >=20"
}
},
"node_modules/pako": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"license": "(MIT AND Zlib)"
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"license": "MIT"
},
"node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"license": "MIT"
},
"node_modules/sax": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz",
"integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==",
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=11.0.0"
}
},
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
"license": "MIT"
},
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/undici-types": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"license": "MIT"
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"license": "MIT"
},
"node_modules/xml": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz",
"integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==",
"license": "MIT"
},
"node_modules/xml-js": {
"version": "1.6.11",
"resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
"integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
"license": "MIT",
"dependencies": {
"sax": "^1.2.4"
},
"bin": {
"xml-js": "bin/cli.js"
}
}
}
}

5
package.json Normal file
View File

@@ -0,0 +1,5 @@
{
"dependencies": {
"docx": "^9.5.1"
}
}

View File

@@ -1,615 +0,0 @@
<!doctype html>
<html lang="en" style="">
<head>
<meta charset="utf-8" />
<title>Phillip Tarrant</title>
<meta name="description" content="Accomplished and analytical professional with 20+ years of experience in cybersecurity, server infrastructures, and data-center operations. Proven expertise in AI use in Cyber Operations, digital forensics, penetration testing, information system management, malware reversing, threat detection, and threat hunting. Proactive leader with a proven record of managing multiple large teams and leading the charge to complete project goals. Managed MSSP operations for 50+ large business clients encompassing over 150,000 assets and 1 million+ users." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700&display=swap" />
<style>
:root{color-scheme:light dark;--color-background-light: #ffffff;--color-dimmed-light: #f3f4f5;--color-primary-light: #191e23;--color-secondary-light: #6c7781;--color-accent-light: #0073aa;--color-background-dark: #191e23;--color-dimmed-dark: #23282d;--color-primary-dark: #fbfbfc;--color-secondary-dark: #ccd0d4;--color-accent-dark: #00a0d2;--color-background: var(--color-background-light);--color-dimmed: var(--color-dimmed-light);--color-primary: var(--color-primary-light);--color-secondary: var(--color-secondary-light);--color-accent: var(--color-accent-light);--scale-ratio: 1.25;--scale0: 1rem;--scale1: calc(var(--scale0) * var(--scale-ratio));--scale2: calc(var(--scale1) * var(--scale-ratio));--scale3: calc(var(--scale2) * var(--scale-ratio));--scale4: calc(var(--scale3) * var(--scale-ratio));--scale5: calc(var(--scale4) * var(--scale-ratio))}@media (prefers-color-scheme: dark){:root{--color-background: var(--color-background-dark);--color-dimmed: var(--color-dimmed-dark);--color-primary: var(--color-primary-dark);--color-secondary: var(--color-secondary-dark);--color-accent: var(--color-accent-dark)}}*{box-sizing:border-box;margin:0;padding:0}html{font-size:14px}body{background:var(--color-background);color:var(--color-primary);display:grid;font:1em/1.5 Lato,sans-serif;gap:2em;grid-template-columns:[full-start] 1fr [main-start side-start] minmax(min-content,12em) [side-end content-start] minmax(min-content,36em) [main-end content-end] 1fr [full-end];grid-template-rows:auto [content] 0;margin-bottom:4em}body:before{content:"";grid-column:full;grid-row:content}ol,ul{padding-left:1em}:not(.icon-list,.tag-list)>li+li{margin-top:.4em}li::marker,.network{color:var(--color-secondary)}a{color:var(--color-accent);text-decoration:none}a:focus,a:hover{text-decoration:underline}h1,h2,h3,h5{font-weight:400}h1,h2,h3{line-height:1.2}h1{font-size:var(--scale5)}h2{color:var(--color-secondary);font-size:var(--scale4)}h3{color:var(--color-secondary);font-size:var(--scale3);grid-column:side;margin-bottom:1rem}h4{font-size:var(--scale2)}h5{font-size:var(--scale1)}h6{font-size:var(--scale0)}blockquote{border-left:.2em solid var(--color-dimmed);padding-left:1em}cite{color:var(--color-secondary);font-style:inherit}cite:before{content:"— "}svg{margin-right:.2em;vertical-align:text-bottom}.masthead{background:var(--color-dimmed);display:inherit;gap:inherit;grid-column:full;grid-template-columns:inherit;padding:4em 0;text-align:center}.masthead>*,section{grid-column:main}.masthead>img{border:4px solid;border-radius:50%;margin:0 auto;max-width:12em}article>*+*,blockquote>*+*,.timeline>div>*+*{margin-top:.6em}.meta{color:var(--color-secondary)}.stack{display:grid;gap:1.5em}.icon-list{display:flex;flex-wrap:wrap;gap:.4em 1em;justify-content:center;list-style:none;padding:0}.grid-list{display:grid;gap:1em}.tag-list{display:flex;flex-wrap:wrap;gap:.4em;list-style:none;padding:0}.tag-list>li{background:var(--color-dimmed);border-radius:.2em;padding:.2em .6em}.timeline>div{position:relative}.timeline>div:not(:last-child){padding-bottom:1rem}.timeline>div:not(:last-child):before{content:"";position:absolute;top:1rem;left:-15px;width:2px;height:100%;background:var(--color-secondary)}.timeline>div:not(:only-child):after{content:"";position:absolute;top:.6rem;left:-20px;width:8px;height:8px;background:var(--color-secondary);border:2px solid var(--color-background);border-radius:50%}@media print,(min-width: 48em){h3{text-align:right;margin-bottom:inherit}.masthead{text-align:inherit}.masthead>*,section{grid-column:content}.masthead img{grid-column:side;grid-row:span 2;max-width:100%}section{display:contents}.icon-list{flex-direction:column}.grid-list{grid-template-columns:repeat(auto-fit,minmax(calc((100% - 1em)/2),1fr))}}time+time-duration:before{content:"· "}@media print{time-duration{display:none}}
</style>
<script type="module">
const pluralize = (num, str) => `${num} ${num === 1 ? str : str.concat('s')}`
class TimeDuration extends HTMLElement {
connectedCallback() {
const dates = this.getAttribute('dates')
if (!dates) return this.remove()
const duration = dates.split('|').reduce((acc, _date, i, dates) => {
if (i % 2) return acc
const [startDate, endDate] = dates.slice(i)
return acc + (startDate ? +new Date(endDate || Date.now()) - +new Date(startDate) : 0)
}, 0)
const diffDate = new Date(duration)
const years = diffDate.getFullYear() - 1970
const months = diffDate.getMonth()
const days = diffDate.getDate() - 1
const segments = [
years && pluralize(years, 'yr'),
months && pluralize(months, 'mo'),
days && !years && !months && pluralize(days, 'day'),
].filter(Boolean)
if (!segments.length) return
this.textContent = segments.join(' ')
}
}
customElements.define('time-duration', TimeDuration)
</script>
</head>
<body>
<header class="masthead">
<div><h1>Phillip Tarrant</h1> <h2>Cybersecurity Director | Automation Leader</h2></div>
<article><p>Accomplished and analytical professional with 20+ years of experience in cybersecurity, server infrastructures, and data-center operations. Proven expertise in AI use in Cyber Operations, digital forensics, penetration testing, information system management, malware reversing, threat detection, and threat hunting. Proactive leader with a proven record of managing multiple large teams and leading the charge to complete project goals. Managed MSSP operations for 50+ large business clients encompassing over 150,000 assets and 1 million+ users.</p></article>
<ul class="icon-list">
<li>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-map-pin"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg> Morrison, United States
</li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-mail"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
<a href="mailto:ptarrant@gmail.com">ptarrant@gmail.com</a>
</li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-phone"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"></path></svg>
<a href="tel:(706)294-6733">(706) 294-6733</a>
</li>
<li><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg> <a href="https://www.linkedin.com/in/phillip-tarrant-cyber">www.linkedin.com/in/phillip-tarrant-cyber</a></li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-linkedin"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg> <a href="https://www.linkedin.com/in/phillip-tarrant-cyber">phillip-tarrant-cyber</a>
<span class="network">(LinkedIn)</span>
</li>
</ul>
</header>
<section id="work">
<h3>Work</h3>
<div class="stack">
<article>
<header>
<h4>Senior Information Security Consultant</h4>
<div class="meta">
<div>
<strong>Confidential</strong>
</div>
<div><time datetime="2025-01">Jan 2025</time> Present <time-duration dates="2025-01|"></time-duration></div>
<div>Remote</div>
</div>
</header>
<div class="timeline">
<div>
<p>Contract consulting role providing cybersecurity leadership and technical expertise.</p>
<ul>
<li><p>Develop, design, and review risk assessments and vulnerability scans of client networks and systems</p></li><li><p>Developing and implementing robust security controls and countermeasures to mitigate identified risks</p></li><li><p>Designing and deploying secure architectures for cloud, on-premises, and hybrid environments</p></li><li><p>Providing guidance on compliance with industry regulations (HIPAA, PCI-DSS, GDPR, NIST 800-53)</p></li><li><p>Collaborating with clients to develop and implement incident response and disaster recovery plans</p></li><li><p>Conducting regular security audits and assessments to ensure ongoing compliance and security posture</p></li><li><p>Short-term director role at American Technology Services (ATS) restructuring SOC flow and training</p></li><li><p>Managed Vulnerability Management Program for largest fintech client using Qualys</p></li><li><p>Currently managing SOC operations for US Defense Space market supplier across multiple Microsoft tenants</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>Compuquip Cybersecurity</h4>
<div class="meta">
<div><time-duration dates="2024-06|2024-12|2023-03|2024-06|2021-01|2023-03"></time-duration></div>
</div>
</header>
<div class="timeline">
<div>
<div>
<h5>Director of Automation</h5>
<div class="meta">
<div><time datetime="2024-06">Jun 2024</time> <time datetime="2024-12">Dec 2024</time> <time-duration dates="2024-06|2024-12"></time-duration></div>
<div>Doral, Florida</div>
</div>
</div>
<p>Lead the Automation Team to deliver the automation needs of the business.</p>
<ul>
<li><p>Spearheaded new automation processes and procedures including standup of new architecture and infrastructure</p></li><li><p>Drove and mentored the team in new Automation workflows using Python, AWS Lambda and SOAR technology</p></li><li><p>Developed custom AI processes to handle several key business needs using custom prompts and data</p></li><li><p>Built automation handling 3,500 tickets weekly with 47% closed without human involvement</p></li><li><p>Designed, programmed, and deployed AI tools, prompts, code, and logic for security automation</p></li>
</ul>
</div>
<div>
<div>
<h5>SOC Director</h5>
<div class="meta">
<div><time datetime="2023-03">Mar 2023</time> <time datetime="2024-06">Jun 2024</time> <time-duration dates="2023-03|2024-06"></time-duration></div>
<div>Doral, Florida</div>
</div>
</div>
<p>Directed Security Operations Center and Red Team operations for MSSP clients.</p>
<ul>
<li><p>Grew SOC client base from 16 to 52 customers over tenure with expansion of services</p></li><li><p>Improved SOC profitability from 18% to 52% margin (80% in one quarter) contributing to 15% annual net income growth</p></li><li><p>Directly managed team of 17 reports</p></li><li><p>Oversaw Red team / Offensive Security Teams and Managed Remediation Service projects</p></li><li><p>Managed DFIR engagements, MDR services, Proactive Vulnerability Scanning, Patching, and Pentesting</p></li><li><p>Maintained situational awareness reports for advanced threats (APT and FO incidents)</p></li><li><p>Part of leadership team with COO/CEO/CFO involved in quarterly strategic planning</p></li>
</ul>
</div>
<div>
<div>
<h5>SOC Technical Manager</h5>
<div class="meta">
<div><time datetime="2021-01">Jan 2021</time> <time datetime="2023-03">Mar 2023</time> <time-duration dates="2021-01|2023-03"></time-duration></div>
<div>Tampa, Florida</div>
</div>
</div>
<p>Managed SOC Operations and led incident research and engineering teams.</p>
<ul>
<li><p>Authored SOPs and training documentation for SOC team</p></li><li><p>Lead Incident Research and mentored SOC Engineers</p></li><li><p>Developed threat trend analysis reports and metrics</p></li><li><p>Managed SOC Operations and developed SOC playbooks/workflows</p></li><li><p>Generated end-of-month reports for managers and customers</p></li><li><p>Maintained situational awareness reports for advanced threats</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>Sr. Cyber Security Architect</h4>
<div class="meta">
<div>
<strong>Travel Syndication Technology (TST)</strong>
</div>
<div><time datetime="2020-04">Apr 2020</time> <time datetime="2021-01">Jan 2021</time> <time-duration dates="2020-04|2021-01"></time-duration></div>
<div>Alpharetta, Georgia</div>
</div>
</header>
<div class="timeline">
<div>
<p>Responsible for security architecture, training programs, and compliance across the organization.</p>
<ul>
<li><p>Formulated and oversaw phishing and developer security training programs</p></li><li><p>Developed and maintained cloud security protections and security posture</p></li><li><p>Created custom tools to automate attacks against infrastructure and design detections</p></li><li><p>Saved $10,000+ through effective vendor/supplier negotiations</p></li><li><p>Steered organization through PCI and NIST 800 series audits</p></li><li><p>Devised, created, and upgraded cybersecurity related policies and procedures</p></li><li><p>Designed and implemented automated security verification and attack programs</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>Intercontinental Exchange</h4>
<div class="meta">
<div><time-duration dates="2020-03|2020-04|2018-08|2020-03"></time-duration></div>
</div>
</header>
<div class="timeline">
<div>
<div>
<h5>Senior Cyber Security Engineer</h5>
<div class="meta">
<div><time datetime="2020-03">Mar 2020</time> <time datetime="2020-04">Apr 2020</time> <time-duration dates="2020-03|2020-04"></time-duration></div>
<div>Marietta, Georgia</div>
</div>
</div>
<p>Part of the Architecture and Automation Team focused on security data flow and automation.</p>
<ul>
<li><p>Designed and maintained security data flow from network endpoints through aggregation, parsing, and storage</p></li><li><p>Created methods, processes, and algorithms to extract knowledge from structured/unstructured data</p></li><li><p>Designed custom tools to automate SOC triage and response activities</p></li><li><p>Incorporated security into infrastructure CI/CD pipelines including cloud technologies</p></li><li><p>Formulated vulnerability and threat hunting dashboard for tracking and mitigation</p></li>
</ul>
</div>
<div>
<div>
<h5>Cyber Security Engineer</h5>
<div class="meta">
<div><time datetime="2018-08">Aug 2018</time> <time datetime="2020-03">Mar 2020</time> <time-duration dates="2018-08|2020-03"></time-duration></div>
<div>Marietta, Georgia</div>
</div>
</div>
<p>Part of the Incident Response / Digital Forensics Team as lead investigator.</p>
<ul>
<li><p>Served as lead investigator on critical incidents with thorough investigations</p></li><li><p>Created extensive documentation on processes and procedures for the entire IR team</p></li><li><p>Served as leader in Malware Analysis in isolated sandboxed environments</p></li><li><p>Developed skills of junior agents including custom malware writing through training</p></li><li><p>Managed multi-server compromise investigations coordinating across three teams and time zones</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>The National Wild Turkey Federation</h4>
<div class="meta">
<div><time-duration dates="2015-10|2018-08|2015-01|2015-10"></time-duration></div>
</div>
</header>
<div class="timeline">
<div>
<div>
<h5>Technical Services Manager</h5>
<div class="meta">
<div><time datetime="2015-10">Oct 2015</time> <time datetime="2018-08">Aug 2018</time> <time-duration dates="2015-10|2018-08"></time-duration></div>
<div>Edgefield, South Carolina</div>
</div>
</div>
<p>Managed IT team supporting 300+ staff members with focus on infrastructure and security.</p>
<ul>
<li><p>Managed team of technicians and developers facilitating 300+ staff members</p></li><li><p>Oversaw 8 direct reports with performance management responsibilities</p></li><li><p>Conducted vendor/supplier negotiations to minimize costs</p></li><li><p>Managed security of entire web presence including network and programming code</p></li><li><p>Efficiently managed doubling of server space and usage</p></li><li><p>Migrated 3rd party tools to in-house solutions saving $50,000+ yearly</p></li>
</ul>
</div>
<div>
<div>
<h5>Network / Server Administrator</h5>
<div class="meta">
<div><time datetime="2015-01">Jan 2015</time> <time datetime="2015-10">Oct 2015</time> <time-duration dates="2015-01|2015-10"></time-duration></div>
<div>Edgefield, South Carolina</div>
</div>
</div>
<p>Managed Windows and Linux server environments with focus on infrastructure and automation.</p>
<ul>
<li><p>Designed, managed, and monitored infrastructure systems (LANs, WANs, Security)</p></li><li><p>Developed and maintained process automation through scripting and programming</p></li><li><p>Administered servers, computers, printers, routers, switches, firewalls, and phones</p></li><li><p>Spearheaded performance tuning, hardware upgrades, and resource optimization</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>System Administrator</h4>
<div class="meta">
<div>
<strong>Morgan Thermal Ceramics</strong>
</div>
<div><time datetime="2014-10">Oct 2014</time> <time datetime="2014-12">Dec 2014</time> <time-duration dates="2014-10|2014-12"></time-duration></div>
<div>Augusta, Georgia</div>
</div>
</header>
<div class="timeline">
<div>
<p>Contract role managing network support and infrastructure upgrades.</p>
<ul>
<li><p>Managed network support and upgrades including fiber optic link installation</p></li><li><p>Served key role implementing 35 managed switches with several VLANs</p></li><li><p>Resolved major data outage in main switch room without assistance</p></li><li><p>Completed three-month contract in one month</p></li><li><p>Developed automated cloning system to minimize cost and speed deployment</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>IT Coordinator / Network Administrator / System Administrator</h4>
<div class="meta">
<div>
<strong>Briarwood Academy</strong>
</div>
<div><time datetime="2006-08">Aug 2006</time> <time datetime="2014-04">Apr 2014</time> <time-duration dates="2006-08|2014-04"></time-duration></div>
<div>Warrenton, Georgia</div>
</div>
</header>
<div class="timeline">
<div>
<p>Oversaw IT department budgets and deployment strategies for the school.</p>
<ul>
<li><p>Oversaw budgets and deployment strategies for entire IT department</p></li><li><p>Administered servers, desktop computers, printers, routers, switches, firewalls</p></li><li><p>Shifted all servers from physical to virtual to save space and minimize costs</p></li><li><p>Rolled out wireless for entire campus comprising several acres</p></li><li><p>Negotiated and delivered fiber link for the school free of charge</p></li><li><p>Managed Linux NAS storage solutions for 200+ workstations</p></li>
</ul>
</div>
</div>
</article>
<article>
<header>
<h4>Computer Service Technician</h4>
<div class="meta">
<div>
<strong>Pronet</strong>
</div>
<div><time datetime="2005-05">May 2005</time> <time datetime="2006-08">Aug 2006</time> <time-duration dates="2005-05|2006-08"></time-duration></div>
<div>Georgia</div>
</div>
</header>
<div class="timeline">
<div>
<p>IT expert for hire in block time situations and emergency disaster recovery.</p>
</div>
</div>
</article>
<article>
<header>
<h4>Tier 3 Support</h4>
<div class="meta">
<div>
<strong>Sitel Group</strong>
</div>
<div><time datetime="1999-05">May 1999</time> <time datetime="2001-05">May 2001</time> <time-duration dates="1999-05|2001-05"></time-duration></div>
</div>
</header>
<div class="timeline">
<div>
<p>Assisted Tier 2 technicians with customer service issues and tested new developing technologies.</p>
</div>
</div>
</article>
</div>
</section>
<section id="education">
<h3>Education</h3>
<div class="stack">
<article>
<header>
<h4>Virginia College</h4>
<div class="meta">
<div>Associate in <strong>Network Administration</strong></div>
<div><time datetime="2014">Jan 2014</time> <time datetime="2016">Jan 2016</time> <time-duration dates="2014|2016"></time-duration></div>
</div>
</header>
</article>
</div>
</section>
<section id="awards">
<h3>Awards</h3>
<div class="stack">
<article>
<header>
<h4>Lethal Forensicator Coin Winner</h4>
<div class="meta">
<div>Awarded by <strong>SANS/GIAC</strong></div> <time datetime="2019-01-01">Jan 2019</time>
</div>
</header>
<p>SANS Challenge Coin for excellence in digital forensics</p>
</article>
</div>
</section>
<section id="certificates">
<h3>Certificates</h3>
<div class="stack">
<article>
<header>
<h4>GWAPT - Web Application Penetration Tester</h4>
<div class="meta">
<div>Issued by <strong>GIAC</strong></div> <time datetime="2020-01-01">Jan 2020</time>
</div>
</header>
</article>
<article>
<header>
<h4>GCFA - Forensic Analyst</h4>
<div class="meta">
<div>Issued by <strong>GIAC</strong></div> <time datetime="2019-01-01">Jan 2019</time>
</div>
</header>
</article>
<article>
<header>
<h4>GCIH - Incident Handler</h4>
<div class="meta">
<div>Issued by <strong>GIAC</strong></div> <time datetime="2018-01-01">Jan 2018</time>
</div>
</header>
</article>
<article>
<header>
<h4>A+ Certification</h4>
<div class="meta">
<div>Issued by <strong>CompTIA</strong></div> <time datetime="2001-01-01">Jan 2001</time>
</div>
</header>
</article>
</div>
</section>
<section id="skills">
<h3>Skills</h3>
<div class="grid-list">
<div>
<h4>Security Operations & SIEM</h4>
<ul class="tag-list">
<li>Splunk</li><li>ELK Stack</li><li>Microsoft Sentinel</li><li>Microsoft Defender</li><li>Sentinel One</li><li>Rapid7 IDR</li><li>Stellar Cyber</li>
</ul>
</div>
<div>
<h4>SOAR Platforms</h4>
<ul class="tag-list">
<li>Swimlane</li><li>D3 SOAR</li><li>Torq</li><li>Playbook Development</li><li>Workflow Automation</li>
</ul>
</div>
<div>
<h4>EDR & Threat Detection</h4>
<ul class="tag-list">
<li>Darktrace</li><li>Tanium</li><li>Vectra</li><li>FireEye</li><li>Sentinel One</li><li>Detection Engineering</li>
</ul>
</div>
<div>
<h4>DFIR & Forensics</h4>
<ul class="tag-list">
<li>Volatility</li><li>Malware Analysis</li><li>Reverse Engineering</li><li>Incident Response</li><li>Evidence Collection</li><li>Multi-host Investigation</li>
</ul>
</div>
<div>
<h4>Penetration Testing & Red Team</h4>
<ul class="tag-list">
<li>Metasploit</li><li>Web Application Security</li><li>Attack Simulation</li><li>Red Team Oversight</li><li>Purple Team Testing</li><li>Vulnerability Assessment</li>
</ul>
</div>
<div>
<h4>Cloud Platforms & Security</h4>
<ul class="tag-list">
<li>AWS</li><li>Azure</li><li>Oracle Cloud</li><li>Lambda</li><li>EC2</li><li>Cloud Security Architecture</li><li>Hybrid Environments</li>
</ul>
</div>
<div>
<h4>AI/ML & Automation</h4>
<ul class="tag-list">
<li>AWS Bedrock</li><li>Large Language Models</li><li>RAG</li><li>Machine Learning</li><li>Python Automation</li><li>Custom Tool Development</li>
</ul>
</div>
<div>
<h4>Programming & Scripting</h4>
<ul class="tag-list">
<li>Python</li><li>PowerShell</li><li>Bash</li><li>SQL</li><li>YAML</li>
</ul>
</div>
<div>
<h4>Infrastructure & Systems</h4>
<ul class="tag-list">
<li>Windows Server</li><li>Linux/UNIX</li><li>Active Directory</li><li>VMware</li><li>Docker</li><li>Kubernetes</li><li>Network Architecture</li>
</ul>
</div>
<div>
<h4>Compliance & Frameworks</h4>
<ul class="tag-list">
<li>NIST 800-53</li><li>PCI-DSS</li><li>HIPAA</li><li>GDPR</li><li>CIS Benchmarks</li><li>Security Audits</li>
</ul>
</div>
<div>
<h4>Leadership & Management</h4>
<ul class="tag-list">
<li>Team Leadership (17+ reports)</li><li>MSSP Operations</li><li>Budget Management</li><li>Vendor Negotiations</li><li>Training Programs</li><li>Hiring & Mentorship</li>
</ul>
</div>
</div>
</section>
<section id="languages">
<h3>Languages</h3>
<div class="grid-list">
<div><h4>English</h4> Native speaker</div>
</div>
</section>
</body>
</html>

View File

@@ -28,63 +28,24 @@
"startDate": "2025-01", "startDate": "2025-01",
"summary": "Contract consulting role providing cybersecurity leadership and technical expertise.", "summary": "Contract consulting role providing cybersecurity leadership and technical expertise.",
"highlights": [ "highlights": [
"Develop, design, and review risk assessments and vulnerability scans of client networks and systems", "Managing SOC operations for US Defense Space market supplier across multiple Microsoft tenants",
"Developing and implementing robust security controls and countermeasures to mitigate identified risks", "Managed Vulnerability Management Program for one of the largest fintech clients in the US using Qualys",
"Designing and deploying secure architectures for cloud, on-premises, and hybrid environments", "Director role at MSSP restructuring SOC flow and training SOC staff",
"Providing guidance on compliance with industry regulations (HIPAA, PCI-DSS, GDPR, NIST 800-53)", "Designing secure architectures and providing compliance guidance (HIPAA, PCI-DSS, GDPR, NIST 800-53)"
"Collaborating with clients to develop and implement incident response and disaster recovery plans",
"Conducting regular security audits and assessments to ensure ongoing compliance and security posture",
"Director role at MSSP restructuring SOC flow and training SOC Staff",
"Managed Vulnerability Management Program for one of the largest fintech client in the US using Qualys",
"Currently managing SOC operations for US Defense Space market supplier across multiple Microsoft tenants"
] ]
}, },
{ {
"name": "Compuquip Cybersecurity", "name": "Compuquip Cybersecurity",
"position": "Director of Automation", "position": "SOC Technical Manager → SOC Director → Director of Automation",
"location": "Doral, Florida", "location": "Tampa/Doral, Florida",
"startDate": "2024-06",
"endDate": "2024-12",
"summary": "Lead the Automation Team to deliver the automation needs of the business.",
"highlights": [
"Spearheaded new automation processes and procedures including standup of new architecture and infrastructure",
"Drove and mentored the team in new Automation workflows using Python, AWS Lambda and SOAR technology",
"Developed custom AI processes to handle several key business needs using custom prompts and data",
"Built automation handling 3,500 tickets weekly with 47% closed without human involvement",
"Designed, programmed, and deployed AI tools, prompts, code, and logic for security automation"
]
},
{
"name": "Compuquip Cybersecurity",
"position": "SOC Director",
"location": "Doral, Florida",
"startDate": "2023-03",
"endDate": "2024-06",
"summary": "Directed Security Operations Center and Red Team operations for MSSP clients.",
"highlights": [
"Grew SOC client base from 16 to 52 customers over tenure with expansion of services",
"Improved SOC profitability from 18% to 52% margin (80% in one quarter) contributing to 15% annual net income growth",
"Directly managed team of 17 reports",
"Oversaw Red team / Offensive Security Teams and Managed Remediation Service projects",
"Managed DFIR engagements, MDR services, Proactive Vulnerability Scanning, Patching, and Pentesting",
"Maintained situational awareness reports for advanced threats (APT and FO incidents)",
"Part of leadership team with COO/CEO/CFO involved in quarterly strategic planning"
]
},
{
"name": "Compuquip Cybersecurity",
"position": "SOC Technical Manager",
"location": "Tampa, Florida",
"startDate": "2021-01", "startDate": "2021-01",
"endDate": "2023-03", "endDate": "2024-12",
"summary": "Managed SOC Operations and led incident research and engineering teams.", "summary": "Progressive leadership roles managing SOC operations, Red Team, and security automation for MSSP clients.",
"highlights": [ "highlights": [
"Authored SOPs and training documentation for SOC team", "Grew SOC client base from 16 to 52 customers; improved profitability from 18% to 52% margin",
"Lead Incident Research and mentored SOC Engineers", "Built automation handling 3,500 tickets weekly with 47% closed without human involvement",
"Developed threat trend analysis reports and metrics", "Managed team of 17 direct reports across SOC, Red Team, and DFIR engagements",
"Managed SOC Operations and developed SOC playbooks/workflows", "Developed AI-powered security automation using Python, AWS Lambda, and SOAR platforms"
"Generated end-of-month reports for managers and customers",
"Maintained situational awareness reports for advanced threats"
] ]
}, },
{ {
@@ -95,43 +56,22 @@
"endDate": "2021-01", "endDate": "2021-01",
"summary": "Responsible for security architecture, training programs, and compliance across the organization.", "summary": "Responsible for security architecture, training programs, and compliance across the organization.",
"highlights": [ "highlights": [
"Formulated and oversaw phishing and developer security training programs",
"Developed and maintained cloud security protections and security posture",
"Created custom tools to automate attacks against infrastructure and design detections",
"Saved $10,000+ through effective vendor/supplier negotiations",
"Steered organization through PCI and NIST 800 series audits", "Steered organization through PCI and NIST 800 series audits",
"Devised, created, and upgraded cybersecurity related policies and procedures", "Created custom tools to automate attacks against infrastructure and design detections",
"Designed and implemented automated security verification and attack programs" "Saved $10,000+ through effective vendor/supplier negotiations"
] ]
}, },
{ {
"name": "Intercontinental Exchange", "name": "Intercontinental Exchange",
"position": "Senior Cyber Security Engineer", "position": "Cyber Security Engineer → Senior Cyber Security Engineer",
"location": "Marietta, Georgia",
"startDate": "2020-03",
"endDate": "2020-04",
"summary": "Part of the Architecture and Automation Team focused on security data flow and automation.",
"highlights": [
"Designed and maintained security data flow from network endpoints through aggregation, parsing, and storage",
"Created methods, processes, and algorithms to extract knowledge from structured/unstructured data",
"Designed custom tools to automate SOC triage and response activities",
"Incorporated security into infrastructure CI/CD pipelines including cloud technologies",
"Formulated vulnerability and threat hunting dashboard for tracking and mitigation"
]
},
{
"name": "Intercontinental Exchange",
"position": "Cyber Security Engineer",
"location": "Marietta, Georgia", "location": "Marietta, Georgia",
"startDate": "2018-08", "startDate": "2018-08",
"endDate": "2020-03", "endDate": "2020-04",
"summary": "Part of the Incident Response / Digital Forensics Team as lead investigator.", "summary": "Incident Response/Digital Forensics lead, promoted to Architecture and Automation Team.",
"highlights": [ "highlights": [
"Served as lead investigator on critical incidents with thorough investigations", "Lead investigator on critical incidents; managed multi-server compromise investigations across three teams",
"Created extensive documentation on processes and procedures for the entire IR team", "Led Malware Analysis in sandboxed environments; mentored junior analysts",
"Served as leader in Malware Analysis in isolated sandboxed environments", "Designed security data flow pipelines and automated SOC triage tools"
"Developed skills of junior agents including custom malware writing through training",
"Managed multi-server compromise investigations coordinating across three teams and time zones"
] ]
}, },
{ {
@@ -142,73 +82,17 @@
"endDate": "2018-08", "endDate": "2018-08",
"summary": "Managed IT team supporting 300+ staff members with focus on infrastructure and security.", "summary": "Managed IT team supporting 300+ staff members with focus on infrastructure and security.",
"highlights": [ "highlights": [
"Managed team of technicians and developers facilitating 300+ staff members", "Managed team of 8 technicians and developers supporting 300+ staff members",
"Oversaw 8 direct reports with performance management responsibilities", "Migrated 3rd party tools to in-house solutions saving $50,000+ yearly",
"Conducted vendor/supplier negotiations to minimize costs", "Managed security of entire web presence including network and application code"
"Managed security of entire web presence including network and programming code",
"Efficiently managed doubling of server space and usage",
"Migrated 3rd party tools to in-house solutions saving $50,000+ yearly"
] ]
}, },
{ {
"name": "The National Wild Turkey Federation", "name": "Earlier Experience",
"position": "Network / Server Administrator", "position": "IT & Systems Administration Roles",
"location": "Edgefield, South Carolina", "startDate": "1999-01",
"startDate": "2015-01", "endDate": "2015-01",
"endDate": "2015-10", "summary": "Progressive IT roles including Network/Server Administrator at NWTF, System Administrator at Morgan Thermal Ceramics, IT Coordinator at Briarwood Academy, and Technical Support at Sitel Group."
"summary": "Managed Windows and Linux server environments with focus on infrastructure and automation.",
"highlights": [
"Designed, managed, and monitored infrastructure systems (LANs, WANs, Security)",
"Developed and maintained process automation through scripting and programming",
"Administered servers, computers, printers, routers, switches, firewalls, and phones",
"Spearheaded performance tuning, hardware upgrades, and resource optimization"
]
},
{
"name": "Morgan Thermal Ceramics",
"position": "System Administrator",
"location": "Augusta, Georgia",
"startDate": "2014-10",
"endDate": "2014-12",
"summary": "Contract role managing network support and infrastructure upgrades.",
"highlights": [
"Managed network support and upgrades including fiber optic link installation",
"Served key role implementing 35 managed switches with several VLANs",
"Resolved major data outage in main switch room without assistance",
"Completed three-month contract in one month",
"Developed automated cloning system to minimize cost and speed deployment"
]
},
{
"name": "Briarwood Academy",
"position": "IT Coordinator / Network Administrator / System Administrator",
"location": "Warrenton, Georgia",
"startDate": "2006-08",
"endDate": "2014-04",
"summary": "Oversaw IT department budgets and deployment strategies for the school.",
"highlights": [
"Oversaw budgets and deployment strategies for entire IT department",
"Administered servers, desktop computers, printers, routers, switches, firewalls",
"Shifted all servers from physical to virtual to save space and minimize costs",
"Rolled out wireless for entire campus comprising several acres",
"Negotiated and delivered fiber link for the school free of charge",
"Managed Linux NAS storage solutions for 200+ workstations"
]
},
{
"name": "Pronet",
"position": "Computer Service Technician",
"location": "Georgia",
"startDate": "2005-05",
"endDate": "2006-08",
"summary": "IT expert for hire in block time situations and emergency disaster recovery."
},
{
"name": "Sitel Group",
"position": "Tier 3 Support",
"startDate": "1999-05",
"endDate": "2001-05",
"summary": "Assisted Tier 2 technicians with customer service issues and tested new developing technologies."
} }
], ],
"education": [ "education": [
@@ -237,11 +121,6 @@
"name": "GCIH - Incident Handler", "name": "GCIH - Incident Handler",
"issuer": "GIAC", "issuer": "GIAC",
"date": "2018-01-01" "date": "2018-01-01"
},
{
"name": "A+ Certification",
"issuer": "CompTIA",
"date": "2001-01-01"
} }
], ],
"awards": [ "awards": [
@@ -394,7 +273,7 @@
} }
], ],
"meta": { "meta": {
"theme": "executive-slate", "theme": "elegant",
"version": "v1.0.0", "version": "v1.0.0",
"lastModified": "2025-12-08" "lastModified": "2025-12-08"
} }