Coverage audit — stop trusting a hand-built deck, measure what's missing
The owner is prepping for an interview trusting only this deck, and asking concurrency terms surfaced that a lot was missing. Rather than patch ad hoc, ran a 9-domain coverage audit (canonical interview topics vs the real deck inventory) to make every gap visible, then started filling the MUST gaps — concurrency first (20 cards).
The real problem wasn't concurrency. The owner is preparing for an interview trusting only what this app contains, and probing a few concurrency terms (mutex, semaphore, deadlock) showed they weren't there. A hand-built deck can't be proven complete, and calling it "done" was the actual risk.
So instead of patching term by term, built a way to see the gaps. Extracted the full deck inventory (809 card titles across /concepts, /ai, /phrases, /moves, /sd, /lld, dbperf, behavioral), then ran a 9-domain audit: for each domain an agent enumerated the canonical must-know topics for a senior backend interview (Opendoor-flavored — relational DB at scale, first-principles, ship the boring-right thing), and a second agent checked each canonical topic against the real inventory as covered / weak (mentioned but no dedicated card) / missing.
The honest result: 357 canonical topics checked, 62 missing, 76 weak, 47 of them MUST-level. The shape matters — the areas Opendoor weighs most (relational DB at scale 36/43, system design 33/44, spoken English 26/31, behavioral 21/31) are already strong. The holes are concentrated in Backend/Java + concurrency (14/42, the worst), DSA (22/44), low-level/OO design (18/40), and distributed-systems depth (24/44, mostly "weak" = present in passing but no dedicated card). The full map is checked in at docs/coverage-gaps.md so the gaps stay visible instead of hidden.
Then started filling MUST gaps, worst-first. Batch 1: 20 concurrency cards (mutex, semaphore, read-write-lock, deadlock, livelock, starvation, compare-and-swap, memory-visibility, spinlock, optimistic-vs-pessimistic locking, distributed-lock, condition-variable, producer-consumer, reentrant-lock, critical-section, false-sharing, context-switch, ABA problem, thread-safety, concurrency-vs-parallelism). Each card is full-fidelity (the same shape as the existing cards, no lossy shortcuts): Korean + English, a real Java snippet, a line-by-line code walkthrough in both languages, failure modes in both, and three self-attack probes each with a model English answer. Generated then fact-verified by a second agent pass (55 corrections applied). CONCEPTS went 136 → 156.
On trust: the deck is a drilling aid, not a guarantee — the interview also tests live reasoning and, in this owner's case, listening to fast English (the actual thing that sank the last attempt). The accuracy backstop is the per-card ask-AI button, which fact-checks any card live so nothing static has to be trusted blindly. The audit is the completeness backstop. Together they turn "I hope it's complete" into "here's exactly what's covered and what isn't."