Capstone: Mock Loop
Self-exam across the full interview
Screen rehearsal
After this you can deliver your story and 'why Cursor' to a clock.
The recruiter screen is won or lost in the first ninety seconds. Before anyone asks about Clay tables or routing logic, they're deciding one thing: does this person build durable GTM infrastructure or do they run campaigns by hand. Rehearse against a timer until that answer is unmistakable.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
This capstone rehearses every stage; the five sections below mirror this sequence.
Set a 30-minute clock and run the whole screen out loud - your build story, your why Cursor, your questions. Record it. The gap between what you think you said and what you actually said is where this round is decided.
The 90-second build-something storyone system, one number
Pick one GTM system you built end to end, not a project you helped with. The screener wants to hear ownership of the plumbing: a data flow, a routing engine, an enrichment pipeline that someone still relies on today.
- 1Open with the mess. Name the manual, broken workflow before the fix: "reps were enriching leads by hand in spreadsheets and 40% of inbound sat untouched past the first day."
- 2Name the system you built. Two sentences on the architecture - sources, the orchestration layer, where decisions got made. Concrete tools, not adjectives.
- 3Land one quantified metric. Match rate, time-to-route, leads handled per week, hours of toil removed. One number, stated as a delta from the old world.
- 4Close on durability. Say who still uses it and how it extended to a case you didn't originally build for. That sentence is what separates engineer from operator.
“Inbound from our startup program was being enriched by hand - reps copy-pasting from LinkedIn and roughly 40% of leads went stale before anyone touched them. I built a Clay-orchestrated pipeline: webhook capture, a three-provider enrichment waterfall, an ICP score and score-based routing into the right rep's queue with an SLA timer. Match rate went from about 55% to 91% and median time-to-first-touch dropped from a day to under ten minutes. It still runs and when we launched the partner program we reused the same scoring primitive with a different threshold.”
The 30-second 'why Cursor'
Generic enthusiasm reads as a red flag here. Ground it in two specifics: the product you actually use and the shape of this role. Cursor is a developer-led, PLG-to-enterprise motion and they want someone who reaches for AI to remove toil by instinct.
- Weak 'why Cursor'
- "I love AI and want to work on what's new."
- Strong 'why Cursor'
- "I write code in Cursor daily and I want to build GTM the way the product builds software - AI-native by default."
- Weak 'why Cursor'
- "It's a fast-growing company."
- Strong 'why Cursor'
- "The motion is developer-led and self-serve-to-enterprise, which is exactly the kind of GTM plumbing I find most interesting to make durable."
- Weak 'why Cursor'
- "The team seems great."
- Strong 'why Cursor'
- "A small, flat, talent-dense team is where a GTM engineer ships from week one instead of waiting for headcount around them."
| Weak 'why Cursor' | Strong 'why Cursor' |
|---|---|
| "I love AI and want to work on what's new." | "I write code in Cursor daily and I want to build GTM the way the product builds software - AI-native by default." |
| "It's a fast-growing company." | "The motion is developer-led and self-serve-to-enterprise, which is exactly the kind of GTM plumbing I find most interesting to make durable." |
| "The team seems great." | "A small, flat, talent-dense team is where a GTM engineer ships from week one instead of waiting for headcount around them." |
The right answer names the product, the motion and the team shape - not vibes.
Three questions that signal seniority
Junior questions ask what it's like to work there. Senior questions probe the system you'd inherit and the impact you'd have. Bring three, ask the two that fit the conversation.
- "Where's the current source of truth for the lead and account object model and how much identity-resolution debt am I inheriting?"
- "Which growth programs are most blocked on infrastructure today - startup, dev ecosystem or partnerships - and what would 'unblocked' look like in 90 days?"
- "How do you draw the line between what GTM engineering owns versus Data versus Eng, so I'm building plumbing and not stepping on a platform team?"
Self-score the screen
- Axis
- Clarity
- Weak (1-2)
- Rambled past two minutes; no clear arc.
- Strong (4-5)
- Mess → system → number → durability in 90 seconds.
- Axis
- impact
- Weak (1-2)
- Described effort, headcount, hustle.
- Strong (4-5)
- Described systems that removed human toil and scaled.
- Axis
- Specificity
- Weak (1-2)
- Adjectives and tool name-drops.
- Strong (4-5)
- One real metric, real architecture, real reuse.
- Axis
- Fit
- Weak (1-2)
- Generic AI enthusiasm.
- Strong (4-5)
- Product use + PLG-to-enterprise motion + team shape.
| Axis | Weak (1-2) | Strong (4-5) |
|---|---|---|
| Clarity | Rambled past two minutes; no clear arc. | Mess → system → number → durability in 90 seconds. |
| impact | Described effort, headcount, hustle. | Described systems that removed human toil and scaled. |
| Specificity | Adjectives and tool name-drops. | One real metric, real architecture, real reuse. |
| Fit | Generic AI enthusiasm. | Product use + PLG-to-enterprise motion + team shape. |
Score below 3 on any axis and re-run the clock before the live screen.
The single most common failure on this screen is sounding like marketing ops - "I ran the nurture program, I managed the lead lists, I owned the email cadence." That language describes operating a funnel, not building infrastructure. Recast every verb toward what you built: not "I managed routing" but "I designed the routing engine, the fallback logic and the SLA escalation." If your story has no system in it, pick a different story.
Takeaway. Open with the mess, name the system, land one quantified metric and close on durability - then ground 'why Cursor' in the product you use and the PLG-to-enterprise motion, never in vibes.
Self-check
QA candidate's 90-second story is: "I owned our inbound program, managed the lead lists in Salesforce, ran the nurture sequences and hit our MQL target two quarters running." Why does this underperform for a GTM Engineer screen and how would you recast it?
Live systems-design drill
After this you can whiteboard an end-to-end GTM system in 30 minutes.
“Design enrichment, scoring and routing for a new startup program.” That's the prompt and the clock is thirty minutes. This is the AI-barred round - no copilot, no autocomplete - so the room is grading your raw reasoning and whether you narrate the tradeoffs you reject, not just the ones you keep.
Run a fixed spine so the open-endedness doesn't sink you: capture, dedup, enrich, score, route, measure. Draw it as a left-to-right flow on the board and walk it once before you go deep on any box.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Walk left to right once; the gates are the boxes the room is really grading.
The pipeline, box by boxthe diagram you'll draw
- Stage
- Capture
- What it does
- Webhook / form / list import lands a raw lead.
- The decision the room is watching
- Idempotency: a duplicate webhook must not create a duplicate lead.
- Stage
- Dedup + identity
- What it does
- Resolve to a single person and account.
- The decision the room is watching
- What's your match key - email, domain, normalized company? Person vs. account grain.
- Stage
- Waterfall enrich
- What it does
- Chain providers in sequence until matched.
- The decision the room is watching
- Cost vs. coverage: stop calling once matched; don't pay three vendors per lead.
- Stage
- ICP score
- What it does
- Compute a 0–100 fit score from enriched fields.
- The decision the room is watching
- Which signals, what weights and is it explainable to a rep?
- Stage
- Route
- What it does
- Send to a rep, a queue or nurture by threshold.
- The decision the room is watching
- Round-robin vs. ownership, SLAs, fallbacks when no rep matches.
- Stage
- Measure
- What it does
- Instrument one metric the program is judged on.
- The decision the room is watching
- Pick the number before you build, not after.
| Stage | What it does | The decision the room is watching |
|---|---|---|
| Capture | Webhook / form / list import lands a raw lead. | Idempotency: a duplicate webhook must not create a duplicate lead. |
| Dedup + identity | Resolve to a single person and account. | What's your match key - email, domain, normalized company? Person vs. account grain. |
| Waterfall enrich | Chain providers in sequence until matched. | Cost vs. coverage: stop calling once matched; don't pay three vendors per lead. |
| ICP score | Compute a 0–100 fit score from enriched fields. | Which signals, what weights and is it explainable to a rep? |
| Route | Send to a rep, a queue or nurture by threshold. | Round-robin vs. ownership, SLAs, fallbacks when no rep matches. |
| Measure | Instrument one metric the program is judged on. | Pick the number before you build, not after. |
Walk left to right once, then let the interviewer pull you deep on one box.
Dedup and the waterfall - where most candidates rush
Dedup is the box people skip and it's the one that breaks GTM systems in production. State your match key explicitly and handle the person-versus-account grain. Then make the enrichment a true waterfall, not a fan-out.
- 1Pick a deterministic key first. Normalized email for person, normalized domain for account. Lowercase, strip plus-addressing, strip
www/subdomains. - 2Fall back to fuzzy only when deterministic fails. Company-name + region similarity, gated by a confidence threshold, never silent.
- 3Order the waterfall by cost and hit-rate. Cheapest, highest-coverage provider first; stop the chain the instant you have a confident match.
- 4Cap spend per lead. Set a max number of provider calls so a hard-to-match lead can't run up the bill against all four vendors.
A fan-out hits every provider in parallel and merges results - fast, but you pay every vendor on every lead. A waterfall goes in sequence and stops at the first confident match, so coverage stays high while cost tracks difficulty. Saying this distinction out loud is one of the highest-signal moves in the round, because it shows you think about unit economics, not just match rate.
Scoring and routing - make it explainable
A score nobody can explain gets ignored by reps and overruled by leadership. Keep it a transparent weighted sum to start, with thresholds that map cleanly to routing actions.
- Signals
- Company size band, funding stage, tech-stack fit, title seniority, engagement recency.
- Form
- Transparent weighted sum to 0–100; resist a black-box model until you have labeled outcomes.
- 75+
- Route to a named AE, round-robin within the matching segment/territory, SLA timer starts.
- 40–74
- Route to a shared queue or SDR for qualification.
- <40
- Drop to automated nurture; never silently discard.
- Fallback
- No rep matches the territory → escalate to a default owner, alert and log; never 404 a lead.
This is production plumbing, so a senior answer covers failure modes before being asked: idempotent capture so retried webhooks don't double-create, retries with backoff on provider timeouts, dead-letter handling for leads that fail enrichment and rate-limit awareness so a vendor's 429 doesn't drop leads on the floor. A candidate who designs only the happy path is designing a demo, not a system.
Generalize the one case into a primitive
The last five minutes are where this round is actually won. The prompt was one program, but Cursor wants reusable program primitives that extend across segments, geos and program types.
Enrich → score → route for ONE startup program.
Hardcoded thresholds and one routing map.
A scoring primitive parameterized by signal weights + thresholds.
A routing primitive parameterized by ownership model + SLA, so partnerships and dev-ecosystem reuse it with config, not a rewrite.
In AI-barred mode, narrate at least two options you rejected and why - "I considered a fan-out to maximize match rate but rejected it on cost; I considered an ML score but rejected it until we have labeled outcomes." Stating the road not taken is the clearest signal of senior judgment and it's the thing silent diagrammers never do.
Takeaway. Walk capture → dedup → waterfall enrich → score → route → measure, design the failure modes out loud, then spend the last five minutes turning the one program into a parameterized primitive other programs reuse with config.
Self-check
Practical project brief
After this you can rehearse the decision-round build under realistic constraints.
The practical project is the decision round - at Cursor, finalists often do an intensive, paid, hands-on build with the team. This section is a self-administered version of that brief, with the realism injected on purpose, because a clean sample list teaches you nothing about how you behave when a provider dies mid-run.
Give yourself a fixed window (2–3 hours), a 200-row sample list and the constraints below. Build it in Clay if that's your tool or script it - the team cares that it works and that you can defend it, not which logo you used.
The briefwhat 'done' looks like
- 1Enrich. Take a raw list (name, email, company) and resolve firmographics through a provider waterfall with a per-lead call cap.
- 2Score. Compute a transparent 0–100 ICP score and write it back to each row with the contributing signals visible.
- 3Route. Bucket by threshold into top-rep / SDR-queue / nurture, with a fallback owner for unmatched territories.
- 4Report. Produce one metric or mini-dashboard: match rate, score distribution and counts routed to each bucket.
Inject the realism
A demo that only handles clean data fails the round. Seed your sample with the four failures below and make sure your flow survives all of them without silent data loss.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Same four injected failures; the difference is whether the flow loses data silently.
- Injected failure
- Dirty data (BLAKE@Co.com , trailing spaces, 'Inc.')
- What a weak build does
- Treats them as distinct; double-counts.
- What a strong build does
- Normalizes email/domain/company before any match.
- Injected failure
- A failing provider (mid-run 500s)
- What a weak build does
- Whole run dies or drops rows.
- What a strong build does
- Retries with backoff, then falls through to the next provider in the waterfall.
- Injected failure
- A rate limit (429 from a vendor)
- What a weak build does
- Hammers the API; loses leads.
- What a strong build does
- Respects Retry-After, throttles, queues the remainder.
- Injected failure
- A dedup collision (same person, two companies)
- What a weak build does
- Picks one at random.
- What a strong build does
- Applies a stated precedence rule and logs the conflict for review.
| Injected failure | What a weak build does | What a strong build does |
|---|---|---|
| Dirty data (BLAKE@Co.com , trailing spaces, 'Inc.') | Treats them as distinct; double-counts. | Normalizes email/domain/company before any match. |
| A failing provider (mid-run 500s) | Whole run dies or drops rows. | Retries with backoff, then falls through to the next provider in the waterfall. |
| A rate limit (429 from a vendor) | Hammers the API; loses leads. | Respects Retry-After, throttles, queues the remainder. |
| A dedup collision (same person, two companies) | Picks one at random. | Applies a stated precedence rule and logs the conflict for review. |
These four are the ones interviewers seed on purpose; handle them before you polish anything.
Earn the AI step
Cursor builds an AI tool and expects you to apply AI to real workflows, but a gratuitous LLM call is worse than none. Add exactly one AI step that genuinely beats a deterministic rule and put a guardrail on it.
Classify a free-text company description into an ICP segment a regex can't.
Draft a one-line, fact-grounded personalization from enriched fields.
An LLM doing arithmetic the score already computes.
A model 'deciding' routing a threshold handles deterministically and cheaper.
# Constrain the output space, ground it in real fields and verify before trusting it.
prompt = f"""Classify this company into exactly one segment.
Allowed values: ["startup", "midmarket", "enterprise", "unknown"].
Return only the value, no prose.
Company: {row.company}
Employee count: {row.employee_count}
Description: {row.description}
"""
label = llm(prompt).strip().lower()
# Guardrail: reject anything off-menu; never let a hallucinated label route a lead.
if label not in {"startup", "midmarket", "enterprise", "unknown"}:
label = "unknown" # fail closed, send to human review
# Cross-check against a hard signal so the LLM can't override ground truth.
if row.employee_count and row.employee_count > 2000 and label == "startup":
label = "needs_review" # contradiction → flag, don't silently trustThe guardrail is the part the team is actually grading: constrain the output to an allowed set, fail closed to human review on anything off-menu and cross-check the model against a hard signal it shouldn't be able to override. "I used an LLM" is table stakes; "I used an LLM and here's how I keep it from routing a lead on a hallucination" is the senior answer.
Deliverables and the demo script
The build is half the score. The other half is the short spec/runbook and how you narrate it, because this role lives or dies on written communication and clear decisions.
- Working flow
- Runs end to end on the sample list and survives the four injected failures.
- Spec / runbook
- One page: architecture, the decisions and their rejected alternatives, how to operate and debug it.
- One metric
- Match rate + score distribution + routed-bucket counts, with the definition stated.
- Demo script
- Decisions made, options rejected, the AI guardrail and how the flow generalizes to another program.
Open your demo with the decision, not the tour: "The core decision was ordering the waterfall by cost-adjusted hit rate and capping calls per lead; here's what I rejected and why." Then show it running, including a deliberately broken row so they watch your error handling catch it live. Ending with "and here's the one config change to point this at the partnerships program" closes the loop on generalizable infrastructure.
Takeaway. Seed the four failures (dirty data, dead provider, rate limit, dedup collision) and survive them, add exactly one AI step with a guardrail that fails closed, then ship a one-page runbook and a demo that leads with decisions and shows it generalizing.
Self-check
QIn the practical build, you add an LLM column to classify each company's segment. The reviewer asks, "What stops a wrong label from routing a high-value lead into nurture?" What's your answer?
Data drill
After this you can answer a funnel question in SQL and defend the number.
The data round hands you a schema and one question: "What's our stage conversion by segment?" The trap is that the obvious query double-counts. This drill is about getting the grain right, handling nulls on purpose and being honest about what your number does not capture.
Assume a typical GTM warehouse shape: a leads table (one row per captured lead, with segment, score, created_at) and a stage_events table (one row each time a lead enters a funnel stage). Set a 25-minute clock and narrate every definition as you write it.
- leads
- lead_id, person_email, account_domain, segment, score, created_at - but emails are not yet deduped.
- stage_events
- event_id, lead_id, stage ('captured'|'qualified'|'meeting'|'won'), entered_at.
- Gotcha 1
- Same person captured twice (two lead_ids) inflates every stage if you don't dedup to a person.
- Gotcha 2
- A lead can re-enter a stage; raw event counts overstate progression.
- Gotcha 3
- segment is NULL for self-serve signups that skipped the form.
Task 1 - stage conversion by segment, without double-counting
Collapse to one row per person before you count and count distinct people who ever reached each stage, not raw stage events. Make the NULL segment its own visible bucket instead of letting it vanish.
WITH person AS ( -- collapse duplicate leads to one person
SELECT
LOWER(TRIM(person_email)) AS person,
MAX(lead_id) AS canonical_lead_id,
COALESCE(MIN(segment), 'unknown') AS segment -- NULL segment is a real bucket, not a silent drop
FROM leads
WHERE person_email IS NOT NULL
GROUP BY LOWER(TRIM(person_email))
),
reached AS ( -- did this person EVER reach each stage
SELECT
p.person,
p.segment,
BOOL_OR(e.stage = 'captured') AS hit_captured,
BOOL_OR(e.stage = 'qualified') AS hit_qualified,
BOOL_OR(e.stage = 'meeting') AS hit_meeting,
BOOL_OR(e.stage = 'won') AS hit_won
FROM person p
JOIN leads l ON l.lead_id = p.canonical_lead_id
JOIN stage_events e ON e.lead_id IN ( -- all lead_ids belonging to this person
SELECT lead_id FROM leads WHERE LOWER(TRIM(person_email)) = p.person)
GROUP BY p.person, p.segment
)
SELECT
segment,
COUNT(*) FILTER (WHERE hit_captured) AS captured,
COUNT(*) FILTER (WHERE hit_qualified) AS qualified,
COUNT(*) FILTER (WHERE hit_meeting) AS meeting,
COUNT(*) FILTER (WHERE hit_won) AS won,
ROUND(100.0 * COUNT(*) FILTER (WHERE hit_qualified)
/ NULLIF(COUNT(*) FILTER (WHERE hit_captured), 0), 1) AS cap_to_qual_pct
FROM reached
GROUP BY segment
ORDER BY captured DESC;“I dedup to a person on normalized email before counting, because the same human captured twice would otherwise inflate every stage. I count distinct people who ever reached a stage with BOOL_OR, not raw stage_events, because a lead can re-enter a stage and that would overstate the funnel. And I'm bucketing NULL segment as 'unknown' rather than dropping it, so the self-serve signups stay in the denominator instead of quietly disappearing.”
Task 2 - define 'qualified' and state what it misses
Before you trust the number, define the word. "Qualified" is a choice, not a given and the round rewards you for saying which choice you made and what it leaves out.
- Decision
- The threshold
- What you chose
- score ≥ 75 AND reached 'qualified' stage event.
- What it does not capture
- A high-fit lead a rep hasn't touched yet looks unqualified.
- Decision
- The grain
- What you chose
- Distinct person, earliest qualifying event.
- What it does not capture
- Account-level intent when several people from one company engage.
- Decision
- The window
- What you chose
- Captured in the last 90 days.
- What it does not capture
- Long sales cycles that qualify after the window closes.
- Decision
- The source
- What you chose
- Form + product signals only.
- What it does not capture
- Offline conversations and partner-sourced intent never hit the table.
| Decision | What you chose | What it does not capture |
|---|---|---|
| The threshold | score ≥ 75 AND reached 'qualified' stage event. | A high-fit lead a rep hasn't touched yet looks unqualified. |
| The grain | Distinct person, earliest qualifying event. | Account-level intent when several people from one company engage. |
| The window | Captured in the last 90 days. | Long sales cycles that qualify after the window closes. |
| The source | Form + product signals only. | Offline conversations and partner-sourced intent never hit the table. |
Naming the limits is the point of the round, not a hedge - it's what 'defend the number' means.
Nearly every wrong answer in this round comes from a grain error: counting rows when the question is about people or people when it's about accounts. Before you write a SELECT, say out loud "the grain of this answer is one row per ___." If you can't finish that sentence, you can't trust the number and the interviewer already knows it.
Task 3 - propose the feedback loop
The round closes by asking what you'd do with the number. A GTM engineer doesn't just report conversion; they wire it back into the system so it improves.
- 1Find the leak. The query already exposes which segment has the worst capture→qualified rate; start there.
- 2Form one hypothesis. Low rate in the 'unknown' segment likely means missing enrichment, so those leads never clear the ICP threshold.
- 3Close the loop in the system. Feed won/lost outcomes back as labels to recalibrate score weights and add an enrichment retry for the segment that's starved of firmographics.
- 4Re-measure on the same definition. Watch the same cohort conversion after the change so you're comparing like with like, not a moved goalpost.
Takeaway. Dedup to the right grain before you count, bucket NULLs as a visible value instead of dropping them, define 'qualified' out loud with what it misses, then propose a feedback loop that re-measures on the same definition.
Self-check
QYour first-pass query reports a 38% capture→qualified rate. The interviewer notes the raw stage_events table has many more rows than there are leads. What's the most likely error and how do you fix it before defending the number?
Values reps & self-assessment
After this you can pressure-test your behavioral stories and find gaps.
The values round screens for truth-seeking, agency, simplicity and AI-native impact - and it does it with follow-ups, not the opening question. A story that survives the first ask but collapses under "what would you do differently" tells the room more than a polished headline ever could.
Interactive diagram. Tab through its regions; each focused region shows its detail in the panel below.
Load one true, specific, quantified story for each - weight reflects how hard it's probed.
For each Cursor value, have one real story loaded, then run it against the tough follow-up below until the answer holds without inflation. If a story isn't true, specific and quantified, cut it.
One story per value, stress-testedthe follow-up is the real test
- Value
- Truth-seeking
- What your story must show
- You reasoned from first principles and surfaced an inconvenient truth.
- The follow-up to survive
- "What did the data say that you didn't want it to say and what did you do?"
- Value
- Agency / ownership
- What your story must show
- You shipped without waiting for permission or headcount.
- The follow-up to survive
- "What broke because you moved fast and how did you handle it?"
- Value
- Simplicity
- What your story must show
- You turned a messy workflow into a repeatable system.
- The follow-up to survive
- "What did you choose NOT to build and why was that the right call?"
- Value
- AI-native impact
- What your story must show
- You used AI to remove real toil, with a guardrail.
- The follow-up to survive
- "Where did the AI fail and how did you catch it before it caused harm?"
| Value | What your story must show | The follow-up to survive |
|---|---|---|
| Truth-seeking | You reasoned from first principles and surfaced an inconvenient truth. | "What did the data say that you didn't want it to say and what did you do?" |
| Agency / ownership | You shipped without waiting for permission or headcount. | "What broke because you moved fast and how did you handle it?" |
| Simplicity | You turned a messy workflow into a repeatable system. | "What did you choose NOT to build and why was that the right call?" |
| AI-native impact | You used AI to remove real toil, with a guardrail. | "Where did the AI fail and how did you catch it before it caused harm?" |
If a story can't answer its follow-up honestly, it isn't ready - pick a different one.
Cursor's bar prizes reasoning from first principles over what's convenient and the round will probe whether your stories are real. The fastest way to fail truth-seeking is to dress up a tidy success with a fake 'lesson learned.' If a project went well, say it went well and name the actual risk you were nervous about; if it went sideways, own the cause without diffusing blame. A specific, slightly unflattering truth beats a polished arc every time.
The true / specific / quantified gate
Run each story through three filters before it goes in your kit. Most stories fail on specificity - they describe a category of work instead of one Tuesday when you did the thing.
- True
- It happened, you can name the people and the system and the follow-up won't expose a stretch.
- Specific
- One incident with a date-shaped texture, not 'we generally...'. Names, tools, the exact decision.
- Quantified
- At least one number - match rate, hours saved, time-to-route, leads handled - stated as a delta.
Find your weakest stage and fix it
You don't get to choose where you're weak, but you do get to choose what you drill last. Score yourself honestly across the loop and spend your remaining time on the lowest box, not the one that's already comfortable.
- Stage
- Screen
- Strong looks like
- 90-sec system story + grounded 'why Cursor'.
- If this is your weakest, drill
- Re-record the 90 seconds until it lands without notes.
- Stage
- Live design
- Strong looks like
- Capture→measure spine, tradeoffs out loud, a primitive.
- If this is your weakest, drill
- Whiteboard three different prompts cold, AI-barred, on a timer.
- Stage
- Practical build
- Strong looks like
- Survives the four failures; one guarded AI step.
- If this is your weakest, drill
- Rebuild the sample flow and break it on purpose.
- Stage
- Data drill
- Strong looks like
- Right grain, NULLs handled, honest limits.
- If this is your weakest, drill
- Write the dedup + funnel query from a blank editor twice.
- Stage
- Values
- Strong looks like
- True/specific/quantified, survives follow-ups.
- If this is your weakest, drill
- Have a friend hammer your stories with the follow-up column.
| Stage | Strong looks like | If this is your weakest, drill |
|---|---|---|
| Screen | 90-sec system story + grounded 'why Cursor'. | Re-record the 90 seconds until it lands without notes. |
| Live design | Capture→measure spine, tradeoffs out loud, a primitive. | Whiteboard three different prompts cold, AI-barred, on a timer. |
| Practical build | Survives the four failures; one guarded AI step. | Rebuild the sample flow and break it on purpose. |
| Data drill | Right grain, NULLs handled, honest limits. | Write the dedup + funnel query from a blank editor twice. |
| Values | True/specific/quantified, survives follow-ups. | Have a friend hammer your stories with the follow-up column. |
Rank the five honestly; your last 48 hours belong to the bottom two.
Final readiness checklist
- I can tell one build-something story in 90 seconds with a single quantified metric and a reuse line.
- I can whiteboard enrich→score→route end to end, name the failure modes unprompted and generalize it to a primitive.
- I can build (or script) the sample flow so it survives dirty data, a dead provider, a 429 and a dedup collision.
- I can add one AI step that beats a deterministic rule and explain the guardrail that fails closed.
- I can write the funnel query at the right grain, handle nulls on purpose and state what the number misses.
- Every behavioral story is true, specific, quantified and survives its toughest follow-up.
Make an honest go/no-go on each box above. "Go" means you'd be comfortable doing it live tomorrow; anything else is a "drill." In the last 48 hours, do not re-read the modules you already know - that feels productive and changes nothing. Spend the time on your two weakest stages: re-record the screen, re-run the design cold or have someone stress your stories. The candidate who drills the gap, not the comfort, is the one who ships from week one.
Takeaway. Load one true, specific, quantified story per value, stress it against the follow-up until it holds, then spend the last 48 hours drilling your two weakest stages - not re-reading the ones you already own.