Senior Product Manager — Platform · Infra · DevEx · AI Case Study: Smart Resume AI Chrome MV3 · Vanilla ESM · 3 LLM Gateways

Resume Tailoring, Rebuilt as a Trust-First AI Product

I designed and shipped Smart Resume AI — a Chrome extension that turns any job posting into a tailored, truthful application. One fabricated number can decide whether a candidate gets the interview, so the system is built so the model can't invent: every output grounded, diffed, and human-reviewed.

A product case study in making AI trustworthy where it has never been — built by a solo product lead directing an AI engineering fleet.

Watch the 3-minute product tour
Hrs→Mins
what per-application prep collapses to once the loop runs*
One run turns a job posting into a review-ready application
  • Tailored resume
  • Company research brief
  • First-draft cover letter
  • You approve every change
*Research, drafting, and fact-checks arrive done; your time goes to reviewing the diff — minutes, not an evening.
Strategic Intel Hub — Executive Fit 78/100 · Strong Fit SHIPPED PRODUCT
Smart Resume AI Strategic Intel Hub showing an executive fit score of 78 out of 100, company snapshot, mined vault evidence with STAR story references, and company intelligence briefs
Visual diff comparison between base master profile and AI-tailored resume

Every Change Audited

green = added · yellow = tailored · gray = preserved fact

◈ 3 DEPTHS This page is progressively disclosed. Skim the headlines for the product story → open the “Inspect the engineering” panels for prompts, formulas, and architecture → click any screenshot for full resolution. Depth is opt-in; nothing mandatory.

Watch one posting become a review-ready application.

Three narrated minutes, end to end: the posting goes in, the vault and guardrails do their work, and what comes out is a diff you audit — not text you're asked to trust.

Smart Resume Extension — narrated walkthrough 3 MIN · YOUTUBE

The hard part wasn't generation. It was trust.

Anyone can call an LLM API and get resume-shaped text back. The product question that mattered: how do you ship AI into a workflow where a single fabricated number — an invented "$4M ARR" on a resume — is a disqualifying, unrecoverable failure?

Before

The manual truth tax

  • Estimated 30–45 minutes of manual prep per application (planning assumption, not measured)
  • 50–100 quality applications ⇒ a 40-hour weekly data-entry job
  • Context lives in the candidate's head, not in any system
Why generic AI fails

Hallucination is a feature of the form

  • Generators invent plausible metrics — career-ending on a resume
  • One-shot prompts have no access to verified career evidence
  • No company context ⇒ canned letters recruiters have read a thousand times
  • ATS parsers filter ~75% of resumes before a human sees them; fluff fails semantic matching
Design principle

The AI gets a strategist's job description

“Mine what I actually did, in my own verified words. Research what the company actually is. Tailor the framing to what this role actually needs — and invent nothing.”

That constraint set the architecture: a grounded evidence store, a staged pipeline, hard output contracts, and a human sign-off on every diff.

A 5-stage pipeline where the LLM is scoped, not trusted.

The extension captures the job description straight off the ATS page (Ashby, Greenhouse, Lever, Workday — including shadow-DOM traversal), then runs staged generation where each LLM call does one bounded job. Deterministic code does what code does best.

STAGE 0

ATS Capture

Per-ATS DOM parsers scrape title, company & full JD in place — no copy-paste.

STAGE 1

JD Analysis

Deconstructs responsibilities, mandatory stack, seniority, company type.

STAGE 2

Experience Mining

Maps vault stories against requirements; returns relevance-ranked matrix + per-dimension fit scores.

STAGE 3

Company Research

Live web snippets → optional LLM synthesis. Checklist-gated: unchecked topics never enter the prompt.

STAGE 4

Resume Synthesis

Tailored bullets aligned to JD pain points — metrics locked verbatim.

STAGE 5

Cover Letter

Strategic hooks from research, proof points from the vault — run in parallel with Stage 4.

Every synthesis stage passes the same gate: metrics from the candidate's verified profile must appear as-is — or not at all. Enforced by rule blocks in every prompt and asserted by dedicated test suites — and every stage has a fallback path, so a failure degrades visibly instead of producing faulty output.

The user's loop — from job posting to attached PDF

STEP 01

Open any job posting

Ashby, Greenhouse, Lever, Workday, or any careers page — the extension reads the posting in place. Nothing to copy-paste.

STEP 02

Capture & run the loop

One click scrapes the JD and the 5-stage pipeline runs with a live stepper.

Popup wizard showing the captured job description fields and the live five-stage progress stepper
STEP 03

Review the output

Tailored resume + cover letter, plus a <200-word recruiter pitch and hiring-manager DM.

Popup review step showing tailored resume summary and the sub-200-word Quick CV with email pitch and hiring manager DM tabs
STEP 04

Edit & export the PDF

Live split editor with a vector PDF preview — then auto-attach it to the application form.

Split-screen editor with tailored content on the left and the live vector PDF preview on the right
Animated walkthrough: reading a job description on an ATS site, capturing it, running the five-stage pipeline, reviewing diffs, and exporting the vector PDF
The complete loop, running: job site → capture → 5-stage tailoring → diff review → vector PDF → attach to applicationWORKING VIDEO

Six guardrails that make LLM output shippable.

Each subsystem answers one failure mode of naive generation. Open a tab, then “Inspect the engineering” for the actual prompts, formulas, and fallback logic — this is the layer a product lead actually designs.

GUARDRAIL 01 / GROUNDING

The Experience Vault — evidence before eloquence

The #1 reason AI resume tools fabricate is that the model has no source of truth. This product's moat is a structured evidence store the LLM is forced to cite.

    Experience Vault showing prioritized STAR stories with situation, task, action, result and verified metrics
    🔍 Click to inspect high-resolution UI
    Research scope is a budget dial, not a toggle
    Topics injected into the Stage-3 prompt per preset — unchecked topics never enter the prompt at all

    The JSON schema itself is assembled from active toggles — the model can't wander into disabled topics, and users on trivial postings don't pay for analysis they don't need.

    6-dimension fit profile — live model
    the same math the product runs · hover any vertex for its formula
    Candidate profile 80 — "good" benchmark
    Scenario: Product Lead role — strong fit. Values are the documented worked example from the shipped scoring engine — no composite score exists by design; six independent axes make “why” inspectable.
    DimensionFormulaScoreBand
    Bands at ≥80 good · ≥60 watch · <60 missing. Four axes are normalized LLM judgments; ATS coverage and risk are computed deterministically in code — a deliberate blend so the scorecard can't be gamed by the model grading its own homework.

    The product ships AI. The process ran on directing an AI fleet.

    A significant share of the early effort went into stress-testing the hypothesis itself — was truthful AI tailoring viable, and what exactly should be generated? — before committing to product code. The build then ran as parallel flows in isolated worktrees, with the human setting direction, reviewing every diff, and making the kill decisions. A working preview of AI-era product team topology.

    Phase 01 · Hypothesis

    Stress-Testing The Idea

    Before building, the core question was pressure-tested from multiple angles: can an LLM tailor a resume truthfully, and what exactly should it produce? Exploratory flows proved out the generation approach before any of it became product.

    Viability First
    Phase 02 · Architecture

    Parallel Architecture Bake-Off

    Candidate stacks were explored simultaneously in separate worktrees. The wrong architecture — a bundler that fought the extension platform — was killed while it was still cheap to kill, and the product was rebuilt on fundamentals that held.

    Kill Decisions Early
    Phase 03 · Core Build

    The Application Loop

    ATS capture, the staged pipeline, vector PDF export, and one-click form upload — the end-to-end loop that makes the product usable on a real job posting.

    End-to-End Loop
    Phase 04 · Trust Layer

    Intelligence & Guardrails

    Experience Vault, the diff engine, fit scorecards, and zero-hallucination contracts — the layer that made AI output reviewable and trustworthy, plus the discipline to cut shipped features nobody loved.

    Trust & Scope Discipline
    HUMAN · THE REFEREE

    What I kept

    • Direction & product judgment — what to build, what “done” means
    • Kill decisions — delete the bundler at 5 minutes old, cut shipped features
    • Standards — every commit reviewed; tests as the acceptance gate
    • Keys & privacy posture — local-first, no telemetry, user-owned API keys
    AI · THE FLEET

    What the fleet did

    • Paired implementation — one AI acted as “pair-programming product lead” on the intelligence layer
    • Parallel flows in isolated worktrees, merged into one reviewed line of work
    • Forensic debugging — e.g. root-causing reasoning-model crashes against real vendor responses
    • Documentation — README, test suites, retrospective artifacts
    OPERATING RULE

    The division of labor

    AI expands capacity; the human owns the judgment. The same principle that governs the product's human-in-the-loop review governs the team that built it.

    “Direct the fleet. Review every diff.
    Kill bad architecture while it's cheap.”

    Trust claims are test assertions, not marketing copy.

    The anti-hallucination policy is enforced in prompts and verified in code: dedicated test suites assert that metric-preservation rules exist in every generation prompt and that unknown companies degrade honestly. All green at time of writing.

    51 + 302
    Tests & Assertions
    In-browser diagnostics + zero-dependency Node CLI — all green (capture below shows 49 at ship date)
    27 + 20
    Anti-hallucination Assertions
    Strict metric preservation (27) + unavailable-company zero-invention contracts (20)
    32
    Radar & Fit Diagnostics
    Tooltip wiring, band classification, formula clamps — the scorecard is tested too
    3
    Model Gateways
    Cost is model-dependent by design — run budget DeepSeek or frontier Claude/GPT; per-token spend tracked in-app
    In-browser diagnostic test runner showing 49 tests with 49 passed and zero failed, grouped by category including anti-hallucination and radar analytics
    Test categories cover parsers, diffs, PDF binaries, radar, anti-hallucination100% PASS

    What the tests actually pin down

    • Zero-tolerance prompt rules: assertions grep every generation prompt builder for the verbatim-metric contract — the policy can't silently regress.
    • Honest degradation: when research finds nothing verifiable, the model must set companyInfoAvailable: false and say so — no invented HQ, funding, or headcount.
    • Source priority: structured stories → raw narrative → base resume, in that order, with tests on the fallback ladder.

    Known limits — reported, not hidden

    • Absent evidence scores too kindly: a missing LLM scorecard defaults dimensions to 80/100. It's documented in the retrospective as “default-missing ≠ default-good” — a fix, not a feature.
    • Research is snippet-scrape based: DuckDuckGo snippets, not a paid search API — brittle by choice, compensated by the zero-invention contract.

    Three rules I'd carry into any AI product.

    Distilled from shipping this system and steering the fleet that built it.

    PRINCIPLE 01

    Your prompt is your API contract

    The verbatim-metric rule blocks do more for product trust than any UI polish. Treat prompts as versioned interfaces: tested for regression, explicit about failure modes, and boring on purpose. “Invent nothing” is a spec, not a vibe.

    PRINCIPLE 02

    Automate the work, never the judgment

    The system automates scraping, mining, drafting, and formatting — then stops. The diff engine, revert controls, and export gate exist so a human makes the final call on every claim that carries their name. Same rule worked for running the AI fleet.

    PRINCIPLE 03

    Honest degradation beats confident fabrication

    When the system doesn't know the company, it says so. When a story has no metrics, the bullet stays qualitative. “I don't know” rendered in the UI is a feature — it's what makes the confident answers believable.

    Building AI products people can trust?

    I'm looking for product leadership roles where the interesting question isn't “where do we bolt on an LLM?” but “how do we make model output safe, grounded, and accountable enough to ship?”

    This case study is one instance of a pattern I keep reaching for: technically hard systems, honest constraints, human judgment preserved where it matters — whether that's financial infrastructure, developer platforms, or applied AI.

    Applied AI Products LLM System Design Anti-Hallucination Engineering Platform & Infrastructure Developer Experience