Rehearsal compiler · every claim carries a receipt

Rehearse the interview you’re about to have.

Paste a job description and a resume. DryRun diffs them into evidenced gaps — every gap citing the JD line that demands it and the resume line that’s silent — then compiles the questions those gaps predict, and debriefs you afterwards by quoting your own answers back to you.

How it works

Every stage hands the next one a receipt.

Compile

JD and resume become atomic requirement and evidence lines, then a gap diff — every gap citing exactly the spans it was built from.

Missing skill

Kubernetes orchestration at scale

JD L14“must have deployed and maintained production Kubernetes clusters serving 1M+ daily requests”

Plan

Up to six questions, compiled from the gaps — conceptual for what’s missing, behavioral with STAR hints for what’s weakly evidenced.

q-2Behavioral

Tell me about a time you diagnosed a production outage under time pressure.

because ofgap-2 · incident response

Debrief

Every “covered” claim quotes the transcript verbatim, re-located mechanically. What failed to re-locate is dropped, never displayed.

“I wrote a reconciliation script that caught the drift before it hit prod.”turn 1

The four stages

  1. 01Compile

    Paste a job description and a resume. Every gap cites the JD line that demands it and the resume line that’s silent.

  2. 02Plan

    Up to six questions compiled from the gaps, each one traceable back to the gap that produced it.

  3. 03Session

    Answer them live against an AI interviewer that follows up on what you actually said, capped at two follow-ups.

  4. 04Debrief

    What each answer covered and missed — every covered claim quoting your own words back to you.

A sample debrief · static excerpt

What the debrief sounds like.

Not a live session — a fixed excerpt from one question, shown to demonstrate the shape of the feedback: what got covered, quoted; what got missed, named without a quote to invent.

q-2 · Tell me about a time you diagnosed a production outage under time pressure.

Covered
“I wrote a reconciliation script that caught the drift before it hit prod.”turn 1

Names a concrete diagnostic action taken under pressure.

Missed

Didn’t say how long the outage lasted or how the fix was verified afterward — no quote is shown here because there is nothing in the transcript to cite.

No scores, no grades. Every covered claim above quotes the words that back it, or it isn’t shown.

The receipts

What we measured before we called this done.

Every target below was locked on 26 Jul, before any of this was built. The engine model was upgraded on 31 Jul only after passing these same gates — the two “not measured” rows are exactly that, not hidden misses.

MetricTargetMeasured
Displayed-question grounding100% by construction (≥95% pre-guard)pre-guard 29/29 across 5 pairs (30/30 on the adopted engine); displayed rate guard-enforced
Displayed debrief quotes valid100% by construction · dropped-rate <10%every quote a literal slice of the candidate's turn, 0 dropped (live sessions, disclosed n)
Gap-set consistency (20 runs/pair)mean pairwise Jaccard ≥0.60.881 / 0.770 on the adopted engine (0.794 / 0.900 baseline)
Gap precision / recall vs gold≥0.8 / ≥0.7not measured — descoped 30 Jul; protocol + review sheets committed, CI-green
Cost (compile / session)≤$0.05 / ≤$0.25 mediannot captured — token counts reported; ≈$0.035/compile derivable at posted rates
Compile latency (p50)≤60s16.6–19.1s fixture · 40–45s real JD, production 31 Jul (was 99.65s / 146.3s)
Plan latency≤20s9.4–11.0s production 31 Jul (was 33.4s)
First-turn token≤3s6.9–9.2s — still missed after a 41% prompt trim; partner-gateway-bound, restated
Debrief latency≤45s6.9s production 31 Jul (22.7s baseline)
Video quote→timestamp exact mapping≥90%lane no-go'd at its pre-committed gate; substrate dormant, 14 passing tests
Zero-shot baseline uncited ratereported side-by-side0.0% audited re-run (100/100 verbatim) · 1.03% on 28 Jul — see the README

Final as of 31 Jul, from evals/results/ and production probes — targets were locked before building; the full table with sources lives in the README.

Questions

Honest answers, kept short.

Why no scores?

Because an unprovable number is worse than no number. The debrief describes what an answer covered and what it missed, quoting your own words for every covered claim — never a score, a grade, or a readiness percentage.

Where do my documents go?

Nowhere, until you say so. The JD and resume you paste are held in your browser session; compiling sends them to the model that reads them, and nothing stores a copy ambiently. The one exception is the explicit “Save & share debrief” button, which writes a single debrief you choose to publish — anyone with the link can view it.

Which AI interviews me?

Agnes AI runs the interviewer lane by default. If a request to Agnes fails, the session automatically fails over to OpenAI, and the transcript labels which one actually answered — never silently.

What exactly is a receipt?

A verbatim span from a source document or transcript that’s mechanically re-checked to still match it. If a claim can’t be tied to one, it’s demoted to a visible dropped count instead of being shown.

Compile your interview.

Paste a job description and a resume. Nothing is graded, nothing is displayed without a receipt.

Compile your interview →
open source · built for the Launchpad challenge