Everything that defines Andrew lives here. Code lives in src/ and reads from this directory; this directory has no code.
| File | What it is | Who reads it |
|---|---|---|
cv.yml |
Structured CV — person, tagline, experience, education, openSource, technologies, and the three positioning variants. Validated against schemas/resume.schema.json. |
/, /cv, /cv/print, OG image, eval harness, LinkedIn export, tailor prompt context |
profile.md |
Narrative facts — hometown, family, co-founders, education backstory, Andrew's recurring phrases and framings, next-role shape. Not derivable from cv.yml. |
Chatbot (always-on prompt context), tailor prompt context |
qa/ |
Q&A corpus (~150 entries across 6 categories). One markdown file per category, each Q&A pair tagged with id + tags via HTML comments. Source of truth for the chatbot. | Chatbot RAG retrieval |
leadership.md |
Distilled 5-theme summary of qa/04-leadership.md, rendered as the "How I run things" section on /cv. Derived by npm run gen:leadership but can also be hand-edited. |
/cv (LeadershipPhilosophy.astro) |
APPROACH.md |
Methodology document — how the chatbot works (Q&A-over-RAG-over-blog, BM25, etc.). Rendered at /about-the-bot. |
/about-the-bot |
When you change something here:
cv.yml→ runnpm run validate:resumeto confirm the schema still passes. If you change the variants' tagline or openTo, also runnpm run gen:ogto refreshpublic/og.png. If you change anything material, re-runnpm run eval:tailorto see whether tailored CV scores shifted.profile.md→ no validation; chatbot picks it up at next build. The tailor prompt also injects this, so a change here changes summaries the tailor can produce.qa/*.md→ pre-parsed intosrc/lib/qa-corpus.generated.ts(gitignored) bynpm run gen:qa-corpus. The regen runs automatically beforedev,build, andtypecheck, so editing a .md file and running any of those picks up the change. If you change04-leadership.md, the/cvleadership section won't update until you runnpm run gen:leadership(or hand-editleadership.md).leadership.md→ either regenerate fromqa/04-leadership.mdvianpm run gen:leadership, or hand-edit directly.APPROACH.md→ renders at/about-the-boton next build. No other consumers.
- Resume schema lives in
schemas/resume.schema.json(so multiple data files could share it if needed) - Portrait images live in
src/assets/(Astro's<Image>pipeline requiressrc/, notpublic/) - Generated artifacts that other tools write:
src/lib/qa-corpus.generated.ts(fromnpm run gen:qa-corpus, run automatically before dev/build/typecheck),linkedin.md(fromnpm run gen:linkedin),public/og.png(fromnpm run gen:og),tailor-prompt.dump.txt(fromnpm run inspect:tailor-prompt),cover-letters/*.md(fromnpm run gen:application)