Skip to content

feat: DOCX-first resume pipeline with visual QC and recruiter-driven restructure#152

Merged
jbdevprimary merged 45 commits into
mainfrom
feat/docx-first-resume-tooling
Jun 9, 2026
Merged

feat: DOCX-first resume pipeline with visual QC and recruiter-driven restructure#152
jbdevprimary merged 45 commits into
mainfrom
feat/docx-first-resume-tooling

Conversation

@jbdevprimary

Copy link
Copy Markdown
Contributor

Why

Feedback: DOCX quality control had collapsed. Investigation confirmed it: the shipped DOCX was unstyled pandoc output whose first line was the site nav text ('← jonbogaty.com Download PDF Download DOCX') — pandoc ignores CSS and no process ever looked at the artifact. Separately, the resume was 3+ pages with known LLM-tell copy.

What

Toolchain (scripts/resume/) — the DOCX is now the resume; the PDF target is removed everywhere (scripts, site links, workflows, release assets):

  • pnpm resume:build — compiles public/Jon_Bogaty_Resume.docx from typed data, no Astro build needed
  • pnpm resume:qc — renders the actual DOCX via LibreOffice headless → per-page PNGs so the artifact gets read before shipping
  • tests/unit/resume-docx.test.ts — structural gate: no nav text, every position present, styled fonts, no template artifacts, no LLM-tell phrases

Dataresume.jsonsrc/content/resume.ts: typed, commented, multiline prose, onResume/resumeDescription fields so site and resume can diverge without forking data.

Content restructure (per docs/resume-review/recruiter-review-2026-06-09.md — full recruiter/copy-editor/career-coach review included; facts unchanged, framing rebuilt):

  • One searchable headline; pipe-stacked title removed
  • Work history ends on strength: Flipside (5yr) / GoHealth / Symbiont — Independent + ClassPass are site-only
  • $100K/mo cost win and tm_cli lead the Flipside bullets
  • Earlier career condensed to a single consulting-arc paragraph
  • OSS is a compact section pointing at jonbogaty.com
  • Skills condensed to 7 JD-matching categories
  • departureContext removed (cover-letter material, never resume)

Result: 2 clean pages (QC-verified screenshots), down from 3+ unstyled.

Verification

  • 24 unit + 16 e2e tests green; astro check + tsc green; biome clean
  • pnpm resume:qc pages visually reviewed at every iteration

🤖 Generated with Claude Code

…restructure

The shipped DOCX was unstyled pandoc output that embedded the site nav
('← jonbogaty.com Download PDF Download DOCX') as body text — pandoc
ignores CSS entirely and nothing ever looked at the artifact. This
replaces the whole pipeline and kills the PDF target: the DOCX is the
resume.

Toolchain (scripts/resume/):
- template.ts: Word-semantics HTML (borderless tables for title/date
  alignment, inline styles, Georgia/Calibri, print accent #996B1D)
- build-docx.ts: @turbodocx/html-to-docx compile, no Astro build needed
- qc.ts: renders the actual DOCX via LibreOffice headless → PNG pages
  so the artifact gets READ before it ships
- tests/unit/resume-docx.test.ts: structural gate (no nav text, every
  position present, styled fonts, no template artifacts)

Data: src/content/resume.json → resume.ts (typed, commented, multiline
prose, onResume/resumeDescription fields for site-vs-resume divergence).

Content restructure per docs/resume-review/recruiter-review-2026-06-09.md
(facts unchanged, framing rebuilt):
- One searchable headline, pipe-stack removed
- Work history ends on strength: Flipside (5yr) / GoHealth / Symbiont;
  Independent and ClassPass are site-only entries
- Flipside highlights lead with the $100K/mo cost win and tm_cli
- Earlier career condensed to a single consulting-arc paragraph
- OSS reduced to a compact section pointing at jonbogaty.com
- Skills condensed to 7 JD-matching categories
- LLM-tell phrases removed and regression-tested (battle-tested,
  production-ready, Track record of, spearheaded, departureContext)

Resume is now 2 pages (was 3+ unstyled). PDF removed from scripts, site
links, workflows, and release assets.

Decision: DOCX compiled from typed TS data via turbodocx, not pandoc or raw docx lib
Why: pandoc drops CSS; docx lib broke Apple Pages previously (fdcd220); turbodocx was the validated path and QC now guards it
Resolves: user directive to make DOCX the sole, properly-styled distributable

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jbdevprimary, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 43 minutes and 57 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9d8f9c3d-b8c0-4b0e-bfdf-35fe43a98483

📥 Commits

Reviewing files that changed from the base of the PR and between 8f3ef7d and d0bccf5.

⛔ Files ignored due to path filters (3)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • public/Jon_Bogaty_Resume.docx is excluded by !**/*.docx
  • public/Jon_Bogaty_Resume.pdf is excluded by !**/*.pdf
📒 Files selected for processing (32)
  • .agent-state/decisions.ndjson
  • .github/workflows/release.yml
  • .github/workflows/resume.yml
  • .gitignore
  • .ui-design/reviews/ai-look-diagnosis_20260609.md
  • README.md
  • docs/resume-review/recruiter-review-2026-06-09.md
  • package.json
  • scripts/generate-og-image.ts
  • scripts/generate-resume-pdf-only.ts
  • scripts/generate-resume.ts
  • scripts/resume/build-docx.ts
  • scripts/resume/qc.ts
  • scripts/resume/template.ts
  • src/App.tsx
  • src/components/HeroSection.tsx
  • src/components/SectionTabs.tsx
  • src/components/SiteFooter.tsx
  • src/components/sections/AboutSection.tsx
  • src/components/sections/EarlierCareer.tsx
  • src/components/sections/EducationList.tsx
  • src/components/sections/JobList.tsx
  • src/components/sections/ProjectGrid.tsx
  • src/components/sections/SkillGrid.tsx
  • src/content/resume.json
  • src/content/resume.ts
  • src/layouts/Layout.astro
  • src/pages/resume.astro
  • tests/e2e/navigation.spec.ts
  • tests/e2e/resume.spec.ts
  • tests/unit/resume-data.test.ts
  • tests/unit/resume-docx.test.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/docx-first-resume-tooling

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@amazon-q-developer

Copy link
Copy Markdown

⚠️ Review Failed

I was unable to finalize my review because the pull request head or merge base was modified since I began my review. Please try again.

Request ID: 77d0954c-c1cf-5815-a894-f7ee619a4541

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request replaces the previous JSON-based resume and PDF generation pipeline with a TypeScript-based resume data module and a DOCX-first compilation pipeline using @turbodocx/html-to-docx. It also introduces a visual quality control script that renders the compiled DOCX to PNGs via LibreOffice, along with structural unit tests to verify the document's integrity. The resume content has been rewritten to remove LLM-like writing tells and focus on a single professional identity. The review feedback highlights opportunities to improve cross-platform compatibility and robustness, specifically by replacing the external unzip CLI command in tests with the Node-native jszip library, wrapping the external pdftoppm execution in a try-catch block to handle missing dependencies gracefully, and fixing a layout bug in the HTML template where an empty edu.honors array would still render an empty paragraph tag.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread tests/unit/resume-docx.test.ts Outdated
Comment thread tests/unit/resume-docx.test.ts Outdated
Comment thread scripts/resume/qc.ts Outdated
Comment thread scripts/resume/template.ts Outdated
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

jbdevprimary and others added 3 commits June 9, 2026 18:16
…s, data-derived test dates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Resume DOCX has been automatically regenerated from updated source files.

pull_request paths filters match the whole PR diff, so the workflow
re-ran on its own regenerate commits, and the DOCX zip is not
byte-deterministic so the diff was always dirty — 11 bot commits in a
row. Guard on the bot author and diff word/document.xml content instead
of zip bytes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jbdevprimary jbdevprimary merged commit c0b9051 into main Jun 9, 2026
13 checks passed
@jbdevprimary jbdevprimary deleted the feat/docx-first-resume-tooling branch June 9, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant