Skip to content

jordanhenning32/resume-talos

Repository files navigation

Resume Talos

A multi-agent system that writes job-tailored resumes and cover letters that are grounded in your real experience, optimized for AI screeners, and quality-gated — every single claim traced back to a verified fact before anything exports.

Resume Talos takes a job description and a knowledge base of your professional history, then runs a fleet of specialized AI agents to analyze the role, score fit, retrieve the right evidence, draft and revise, simulate how automated screeners and recruiters will read the result, and hard-gate on groundedness before writing a single DOCX or PDF.

The organizing principle is anti-hallucination: a resume that invents a credential is worse than useless. So a Groundedness Verifier sits at the end of the pipeline and blocks export unless every factual claim traces to a specific knowledge-base fact.


What it looks like

Resume Talos dashboard — a 10-step quality-gated pipeline, live monthly spend, and knowledge-base fact count at a glance

AI screening coverage — literal-keyword and semantic ATS scores plus a simulated recruiter triage verdict Knowledge base — the grounded professional history: documents, chunks, and extracted facts

Two layers of ATS simulation and a recruiter-triage verdict (left) · a grounded knowledge base every claim traces back to (right)

Export templates — three ATS-aware layouts (Classic / Executive / Modern), each producing both DOCX and PDF


Pipeline

flowchart TD
    JD(["Job description + knowledge base"]) --> A["JD Analyzer<br/>requirements + success signals"]
    A --> F{"Fit Scorer<br/>cheap early filter"}
    F -->|weak fit| STOP(["Stop — save the spend"])
    F -->|good fit| K["Knockout + KB-gap detection<br/>disqualifiers surfaced honestly"]
    K --> R["Retriever · pgvector<br/>pulls the right KB facts"]
    R --> W["Resume + Cover-letter Writers<br/>grounded drafting"]
    W --> SIM["ATS · recruiter · screener simulation<br/>how it will actually be read"]
    SIM --> QC["Dual QC — Claude + Grok — + consolidator"]
    QC --> V{"Groundedness Verifier<br/>every claim → a verified KB fact"}
    V -->|unverified claim| W
    V -->|all grounded| EX(["Export DOCX / PDF<br/>parseability + page-fit gated"])
    classDef gate fill:#fde68a,stroke:#b45309,color:#111827;
    classDef done fill:#bbf7d0,stroke:#15803d,color:#111827;
    class V gate
    class EX done
Loading

Why it's built this way

Design decision Why
Grounded generation with a hard verifier gate Every claim in the resume/cover letter must trace to a KB fact ID. The Groundedness Verifier is a blocking gate — no export until it passes. This is what makes AI-written application material trustworthy.
Screener- and recruiter-simulation, not guesswork Dedicated agents (ATS simulator, ATS-vendor-aware analysis, recruiter simulator, 7-dimension screener rubric) model how the document will actually be parsed and skimmed — then feed fixes back into revision.
Knockout detection up front A KB-gap detector and knockout detector catch disqualifying requirements (missing clearance, cert, degree) before spending model budget drafting — and surface them honestly instead of papering over them.
Independent dual QC QC Reviewer A (Claude Sonnet) and QC Reviewer B (xAI Grok) review independently; a consolidator merges them. Different model families = genuinely independent second opinions, not an echo.
Per-role multi-provider routing Anthropic (Opus/Sonnet/Haiku), Google Gemini, and xAI Grok are each assigned to the roles they're best at, via a per-role model registry with cost tracking and prompt caching.
Cheap filters before expensive drafting A Haiku fit-scorer runs first; market research is cached by company; a hard cap of 3 review iterations bounds spend.
Parseability-gated export Output isn't just styled — a parseability checker verifies an ATS can actually extract the headings/sections, page-overflow trim keeps it to length, and a mandatory-content enforcer guarantees required items (e.g. specific certifications) survive every pass.

The agent roster (20 modules)

Agent Role
jd-analyzer Extract requirements, skills, and success signals from the JD
fit-scorer Cheap early filter — is this role worth pursuing?
knockout-detector · kb-gap-detector Flag disqualifiers and evidence gaps before drafting
market-research Company culture/tone (Google-grounded), cached per company
retriever · screening-similarity pgvector cosine retrieval of the right KB facts
resume-writer · cover-letter-writer Draft and revise, grounded in retrieved facts
screener · recruiter-simulator · ats-simulator · ats-vendor Simulate AI-screener + human-recruiter + ATS-vendor reading
qc-reviewer · qc-consolidator Dual independent QC review + consolidation
verifier · verifier-fix-suggester Groundedness gate: every claim → a KB fact, with fix routing
cert-acronyms · questionnaire-helper · exemplars Cert normalization, application-question help, style exemplars

Supporting subsystems: a KB pipeline (src/lib/kb/) for ingestion, chunking, fact extraction, dedup, career-timeline and tenure reasoning; an export engine (src/lib/export/) with three resume layouts (classic / executive / modern) in both DOCX and PDF, plus the parseability, trim, and mandatory-content gates.


Human checkpoints & quality gates

  • Checkpoints: fit-score approval → long/short variant choice → market-research approval before cover-letter writing.
  • Gates: both QC reviewers > 90 with no high-priority issues → early stop; max 3 iterations then escalate to an editable web view; groundedness verifier must pass before any DOCX/PDF is written.

Tech stack

  • App: Next.js 16 + React 19 + Tailwind v4 + shadcn/ui
  • Data: Drizzle ORM + Postgres + pgvector (1536-dim cosine, HNSW indexes)
  • LLM: Vercel AI SDK v6 → Anthropic + Google + xAI (+ OpenAI), per-role model registry with pricing/cost tracking and a structured agent-run log
  • Export: DOCX (docx) + PDF (@react-pdf) in three layouts each

Project structure

src/
├── app/                 # Next.js App Router (dashboard, applications, knowledge-base, settings)
├── lib/
│   ├── agents/          # 20 LLM agent modules
│   ├── kb/              # ingest → chunk → extract → dedup → timeline reasoning
│   ├── export/          # DOCX/PDF layouts + parseability / trim / mandatory-content gates
│   ├── applications/    # application lifecycle, QC loop, versioning, export
│   └── models/          # per-role registry, cost tracking, embeddings
└── db/                  # Drizzle schema + migrations
scripts/                 # KB seed/maintenance + deterministic test & smoke scripts

Note on data: the knowledge base and contact details are user-provided and live in your database (not in this repo). Seed scripts under scripts/ show the shape; sample contact values are placeholders. Provide your own via the KB ingestion UI and settings.

Dev

pnpm dev                 # http://localhost:3200
pnpm exec tsc --noEmit   # type check
pnpm db:studio           # browse the DB

About

Multi-agent resume & cover-letter engine — grounded generation with a hard groundedness gate, ATS/recruiter simulation, dual-model QC.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages