../

Product design

Phase 2 of the pipeline: turning a validated problem into the smallest product that solves it, drawn, scoped, prototyped and tested before any production code. It takes the validated problem brief from validation and hands a signed-off one-page spec, a story map with an MVP slice and a tested prototype to building the MVP. The whole pipeline is on the playbook; interface craft (heuristics, layout, forms, accessibility) is on UX/UI design principles.

Phase at a glance

ItemPhase 2: Solution design
Pipeline positionIdeation → Problem validation → Solution design → Build → Launch → Iterate
Goaldecide what to build and what not to, and prove a stranger can use it, before writing production code
Timebox1 week for a solo or 2-person technical founder; 2 weeks only if the domain is unfamiliar
Inputvalidated problem brief (from Phase 1)
Artifactsjob stories, story map with MVP slice, one-page spec, user flows, clickable prototype, test notes, data model sketch, analytics event plan, "not now" list
Outputa scope you can build in 2–4 weeks, and evidence that target users can complete the core loop on the prototype
Main trapspolishing mockups, designing for scale, scope creep, testing with friends, confusing "they liked it" with "they'll use it"

The week, day by day

DayWorkArtifact at end of day
1reread interview notes; write jobs, outcomes and job stories; draft the backbonejob stories, backbone
2fill the story map; cut the MVP slice; MoSCoW the rest; write the specstory map, one-page spec v1, cut list
3user flows, breadboards, fat-marker sketches; data model sketchflows, sketches, ERD sketch
4build the clickable prototype of the core loop only; book 5 test sessionsprototype, test script
5run 5 tests; fix the top problems; finalize spec, event plan and "not now" listtest notes, spec v2 (signed off)

Entry criteria

Do not start Phase 2 without the validated problem brief from validation. Designing without it means designing for an imagined user, which is how people end up polishing a product nobody asked for.

Brief fieldWhat "good enough" looks likeRed flag (go back to Phase 1)
Whoa specific, findable segment: "owners of independent cafés with 5–20 staff""small businesses", "anyone who…"
Problem in their wordsverbatim quotes from ≥ 5 interviews that describe the same painyour paraphrase; only one person said it
Frequencyhow often it bites: daily, weekly, per event"sometimes", "it would be nice"
Current workaround and its costwhat they do now (spreadsheet, WhatsApp, an intern) and hours or money lost"nothing": no workaround usually means no real pain
Willingness-to-pay evidencepre-orders, deposits, letters of intent, a signed pilot, or a stated budget that already existscompliments; "I'd definitely use that"
Reachable channelwhere you found them and can find 50 more (a forum, a trade group, your network)"we'll run ads"
1–3 must-have outcomeswhat must be true after using the product ("rota published and every shift covered")a feature list
VALIDATED PROBLEM BRIEF (input to Phase 2)
Who:            ___________________________________________
Problem (their words, quoted): ____________________________
Frequency:      ______________   Evidence: __ of __ interviews
Workaround:     ______________   Cost: ____ hours/£ per ____
Willingness to pay: _______________________________________
Channel to reach 50 more: _________________________________
Must-have outcomes:
  1. ______________________________________________________
  2. ______________________________________________________
  3. ______________________________________________________

From problem to solution

Work top-down: a job is the progress someone is trying to make; an outcome is how they would measure it; a story is a unit of product behavior that serves an outcome. Features come last.

LevelQuestionExample (café rota tool)
Jobwhat progress is the user trying to make?"keep every shift covered without living on my phone"
Outcomehow would they know it worked?rota published by Thursday; no uncovered shifts; under 30 min/week on rota admin
Job storyin what situation, with what motivation?"When a barista cancels the night before, I want to offer the shift to qualified staff at once, so I can open on time"
User storywhich user does what, for what benefit?"As an owner, I want to post an open shift to eligible staff so that someone claims it"
Taskwhat do we build?open-shift model, notify eligible staff, claim endpoint

User stories vs job stories

User storyJob story
TemplateAs a [role], I want [capability] so that [benefit]When [situation], I want to [motivation], so I can [expected outcome]
Originagile/XP practice (the "role–goal–benefit" template is widely attributed to Connextra, 2001)Intercom: first described by Paul Adams on the Intercom blog (2013), developed by Alan Klement ("Designing features using job stories", 2013)
Anchors ona persona or rolea situation and a motivation
Strengthclear who; slots into backlogs and ticketscaptures context and anxiety; avoids inventing personas
Weakness"As a user…" says nothing; encourages feature-first thinkingless obvious who is acting; harder to estimate
Use it forbuild tickets in Phase 3framing the problem in Phase 2

Adams's later post ("How we accidentally invented job stories", 2016) argues that personas focus on demographic differences when people in very different circumstances often share the same motivation.

Rules for good stories

  • One behavior per story. "…and export and share" is three stories.
  • The benefit clause must be a real outcome from the brief, not a restatement ("so that I can post a shift" is circular).
  • Write stories in the user's words from the interviews. If no interviewee would recognize the situation, delete it.
  • Acceptance criteria as Given / When / Then for anything touching money, permissions or data loss.
JOB STORY
When  <situation, trigger, context>
I want to  <motivation / what they're trying to do>
So I can  <expected outcome>
Evidence: interview #3, #5, #8 ("quote…")
 
USER STORY
As a  <role>
I want  <capability>
So that  <benefit tied to a must-have outcome>
Acceptance:
  Given <state>  When <action>  Then <observable result>

User story mapping

Jeff Patton's story map (User Story Mapping, O'Reilly, 2014; first described in his 2005 "It's all in how you slice it") replaces the flat backlog with a two-dimensional map, so you can see the whole journey and cut it horizontally.

PartWhat it isHow to build it
Backbonethe user's activities left to right in narrative ordertell the story of one user's journey: "first they…, then…"
User tasks / stepsthe steps under each activityone sticky per verb phrase
Details / storiesvariations and options stacked under each step, most essential at the topthe higher the sticky, the more necessary it is
Walking skeletonthe smallest end-to-end slice that lets a user complete the journey (Patton borrows the term from Alistair Cockburn)draw a line under the first sticky of every step
Release sliceshorizontal bands below the skeleton: MVP, next, latereach slice must produce a complete outcome, not a layer

Patton's warning (paraphrased): a flat backlog strips the stories of context, like pulling the leaves off a tree and then cutting the tree down. Prioritize how well each backbone step is done, not whether the backbone exists: an MVP that skips a backbone step does not work end to end.

STORY MAP: café rota tool (MVP slice above the line)
 
BACKBONE ►  Set up team   Build rota     Publish       Handle changes   Get paid*
            ───────────   ────────────   ───────────   ──────────────   ─────────
WALKING     add staff     copy last      send rota     post open shift  (manual
SKELETON    by phone no.  week, edit     by SMS link   staff claims it  invoice)
            ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
MVP         roles/skills  drag shifts    staff view    notify only      Stripe
(slice 1)   per person    conflict warn  (no login)    qualified staff  checkout
            ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
NEXT        import from   templates      calendar      swap requests    annual
(slice 2)   spreadsheet   by season      sync          between staff    plans
LATER       multi-site    labor-cost    printable     availability     payroll
            support       forecasting    PDF           preferences      export
 
* backbone steps may be manual in the MVP, but none may be missing

Scoping the MVP

The MVP is the smallest product that delivers the must-have outcomes to the target user, end to end, well enough that they would be upset to lose it. Not the smallest thing you can ship; the smallest thing that works.

Find the one core loop

The core loop is the repeated sequence where the user gets value: trigger → action → value → reason to return. Everything in the MVP either serves the loop or gets a user into it for the first time.

Product typeCore loop
Rota toolshift changes → owner posts open shift → staff claims → owner sees it covered
Invoicingjob finished → create invoice → client pays → freelancer is notified
Analyticsevent happens → data arrives → user checks dashboard → user acts on it
Marketplacebuyer searches → finds listing → transacts → both rate
Dev tooldeveloper hits problem → runs tool → problem fixed in less time than before

Test: describe the loop in one sentence without "and also". If you can't, you have two products.

MoSCoW

Dai Clegg's MoSCoW (Oracle UK, 1994, in Clegg and Barker's Case Method Fast-Track), later adopted by DSDM. It only works under a fixed timebox, which is exactly the MVP's situation.

BucketMeaningMVP rule of thumb
Must havewithout it the core loop fails or it's illegal/unsafethe walking skeleton plus data integrity, auth, payments if charging
Should havepainful to leave out, but a workaround existsdo it manually, by email or in SQL for now
Could havenice, small impact if absentcut list
Won't have (this time)agreed and recorded as outthe "not now" list, written down so it stops coming back

A healthy MVP is mostly Musts. DSDM guidance is to keep Musts to no more than about 60% of effort so there is contingency; for a 2–4-week MVP, treat anything that isn't a Must as already cut.

Kano model

Noriaki Kano and colleagues, "Attractive quality and must-be quality" (1984), classify features by how their presence and absence affect satisfaction.

Kano categoryCommon namePresentAbsentMVP treatment
Must-bebasictaken for grantedstrong dissatisfactionship, but only to "adequate" (login works, data isn't lost)
One-dimensionalperformancemore is better, linearlydissatisfactionpick one performance axis tied to the core loop and be clearly better on it
Attractivedelighterdisproportionate delightnot missedat most one, and only if cheap and on the core loop
Indifferent—no effectno effectcut
Reverse—some users dislike itsome prefer it absentcut or make it optional later

Categories drift over time: today's delighter becomes tomorrow's basic expectation. An MVP wins on one performance axis (faster, simpler, cheaper, more specific to a niche), meets the basics adequately, and ignores the rest.

The cut list

Keep a literal list of everything you removed and why. It is the most useful artifact of the week because it lets you say "not now" without arguing, and it becomes the start of the iteration backlog in launch & iterate.

Commonly cut from MVPsDo this instead
settings pagespick defaults; change them for a user by hand in the database
roles and permissions beyond owner/memberone role; add more when a paying customer asks
team invites, SSOinvite by email link; SSO when an enterprise deal needs it
admin dashboarda database GUI and saved SQL queries
notifications preferencesone sensible notification, with an unsubscribe link
import/exportimport their spreadsheet for them yourself
search, filters, sortinga single list sorted by date
mobile appresponsive web
dark mode, themes, i18none theme, one language
onboarding toura good empty state and a sample record
integrationsZapier/webhooks later; manual now

Appetite: fixed time, variable scope

Ryan Singer's Shape Up (Basecamp, 2019) is the most useful framing for a founder who keeps overrunning. The key move is to set the appetite (how much time is this worth?) before designing, instead of estimating after. In Singer's words: "Estimates start with a design and end with a number. Appetites start with a number and end with a design."

Shape Up termMeaningMVP use
Appetitea fixed time budget chosen up front; Basecamp uses a small batch (1–2 weeks) and a big batch (6 weeks)the whole MVP is one big batch: 2–4 weeks, hard cap 6
Fixed time, variable scopethe deadline doesn't move; scope is cut to fitwhen you slip, cut stories, never extend
Shapingdefining the work at the right level of abstraction before committing to build itthis week (Phase 2) is the shaping phase
Shaped workrough (room for decisions), solved (main approach clear), bounded (appetite and no-gos set)test your spec against all three
Breadboardingtext-only flow: places (screens), affordances (buttons, fields), connection linessketch flows before any layout
Fat-marker sketcha sketch drawn with a thick pen so you can't add detaillayout ideas without pixel-pushing
Rabbit holesrisky unknowns that could blow the appetite; resolved or removed before buildinglist them in the spec with the decision made
No-gosthings explicitly excludedyour "not now" list
Pitchproblem, appetite, solution, rabbit holes, no-gos (the five ingredients)the one-page spec is a pitch to yourself
Circuit breakerwork that misses its cycle is not extended by defaultif the MVP isn't live at week 6, stop and reshape
Cool-down2 weeks between 6-week cycles for fixes and deciding what's nextthe week after launch

Singer also argues "good" is relative to the appetite: a hot dog is the right meal when you're hungry and in a hurry. For an MVP, "good" means the core loop works reliably, not that every edge case is handled.

BREADBOARD: post an open shift
 
 Rota (week view)          Open shift form           Shift posted
 ────────────────          ───────────────           ────────────
 [shift cell]  ─────────►  role (prefilled)          "Sent to 4 staff"
 "Mark as open"            time (prefilled)   ─────► list: who was
                           note (optional)           notified
                           [Offer shift]             [Back to rota]
 
 Staff SMS link            Claim page
 ──────────────            ──────────
 "Shift Sat 7am" ───────►  shift details
                           [Claim]  ─────────► owner notified,
                                               rota updated

The one-page spec

One page, written in plain language, that you (and any co-founder or contractor) can build from. If it runs to three pages, the scope is too big.

ONE-PAGE SPEC (PRD-lite)                     v__  date: ________
 
PROBLEM
  In their words: "________________________________________"
  Evidence: __ of __ interviews; workaround costs ____/week
 
USER
  Primary: _____________________ (who pays? who uses? same?)
  Not for (yet): _______________________________________
 
CORE JOB
  When ______________, I want to ______________,
  so I can ______________.
 
SUCCESS METRIC (for the MVP)
  Activation: % of sign-ups who ____________ within __ days
  Core loop:  ____ completed per user per week
  Target by week 4 after launch: ______________
 
APPETITE
  Build: __ weeks (hard cap 6). Circuit breaker on: ________
 
SCOPE IN (walking skeleton + MVP slice)
  1. ______________________________________________________
  2. ______________________________________________________
  3. ______________________________________________________
 
SCOPE OUT (not now)
  - ____________________  (manual workaround: ____________)
  - ____________________
 
KEY FLOWS
  1. First run: sign up → ______ → first value ("aha") at ____
  2. Core loop: ________ → ________ → ________
  3. Payment:   ________ → ________
 
RABBIT HOLES (and the decision taken)
  - ______________________ → decided: ______________________
 
OPEN QUESTIONS (owner, due date)
  - ______________________  (_____, ____)
 
RISKS
  Value: will they use it?        test: ______________________
  Usability: can they use it?     test: prototype, 5 users
  Feasibility: can we build it?   spike: _____________________
  Viability: will they pay?       test: ______________________

The four risks in the last block are Marty Cagan's framing (Inspired, 2nd edition, 2017): value, usability, feasibility, business viability. Each needs a named test, not a hope.

User flows and information architecture

Map flows before screens. For an MVP you need exactly three: first run (sign-up to first value), the core loop, and payment. Everything else is a secondary flow and probably on the cut list.

FlowMust answerCommon MVP mistake
First runhow fast does a new user reach first value? what do they see when there is no data?asking for 10 fields before showing anything
Core loopwhat triggers a return visit? how many steps from trigger to value?burying the core action behind navigation
Paymentwhen do we ask? what happens on failure?building billing management instead of linking to the payment provider's hosted portal
Error/recoverywhat if they get it wrong?no undo, no way to delete
FIRST-RUN FLOW (target: first value in under 3 minutes)
 
landing ─► sign up (email link) ─► "Add your team" (paste names
+ phone numbers) ─► rota pre-filled with a sample week ─► edit one
shift ─► "Send rota" ─► staff receive SMS ─► AHA: owner sees
"3 of 5 staff have viewed the rota"

Information architecture for an MVP is usually one navigation level with 3–5 items. Label with the words users used in interviews. Navigation patterns, IA rules and card sorting are covered in UX/UI design principles.

From sketch to prototype

FidelityToolTimeAnswersSkip when
Sketch / fat-markerpaper, iPadminuteswhat goes on the screen and how screens connectnever skip; it's the cheapest thinking
Breadboardtextminutesflow logic without layoutthe flow is trivial (one screen)
WireframeFigma, Excalidraw, Balsamiqhourslayout, hierarchy, contentthe screens follow a well-known pattern (list, form, settings)
Clickable prototypeFigma prototype, or linked pages0.5–1 daycan a stranger complete the core loop?never skip the test; you can skip the tool (see below)
Code prototypethe real stack, fake data1–2 daysthe same, plus feel, latency, real inputthe design is uncertain and you'd resist throwing code away
High-fidelity mockupFigmadaysbrand, polishskip for the MVP; use a component library and a type scale

When to skip Figma and prototype in code

A fluent React/Next.js developer can often build a throwaway clickable version on the real stack as fast as a Figma prototype. Go straight to code when:

  • the UI is standard patterns (lists, forms, tables, a dashboard) and the risk is flow, not visuals;
  • realism matters for the test: real typing, real latency, real data shapes (a paste-your-CSV step, a drag interaction);
  • you commit in writing to deleting or heavily rewriting it. Keep it on a prototype branch with hard-coded data, no auth and no database.

Stay in Figma (or on paper) when the core concept is still in question, when you'd get attached to code, or when you need to show several alternative directions. The trap is spending the design week building infrastructure disguised as a prototype.

Prototype testing

Test the prototype with at least 5 people from the target segment, ideally people who were not in your validation interviews, and never friends or other founders.

Nielsen's five users

Jakob Nielsen ("Why you only need to test with 5 users", NN/g, March 2000), building on Nielsen and Landauer (1993), models the share of usability problems found with nn test users as

found(n)=N(1−(1−L)n)\text{found}(n) = N\left(1 - (1 - L)^n\right)

where NN is the total number of problems and LL the share one user reveals, 31% on average in their data.

Users nn1351015
Share found at L=0.31L = 0.3131%67%84%98%99.6%

Nielsen's recommendation was three rounds of 5 (fix between rounds), not one round of 15.

CaveatWhy it matters
LL varies a lot by product, task and testerwith a lower LL five users find far less; Faulkner (2003) found random sets of 5 from 60 users uncovered between 55% and 99% of problems
it assumes one homogeneous user groupNielsen: 3–4 users per group for two groups, 3 per group for three or more
it finds problems in the tasks you testuntested flows have undiscovered problems regardless of nn
it's for qualitative usability testingnot for measuring rates, preferences or demand; those need far larger samples
usability ≠ desirabilitya flawless prototype of a product nobody needs is still a product nobody needs

Test script

PROTOTYPE TEST (30–45 min, remote or in person, record with consent)
 
1. Intro (3 min)
   "We're testing the design, not you. Think aloud. Nothing
   you say will hurt my feelings. I didn't design it alone."
2. Context (5 min)
   "Tell me about the last time <problem> happened."
3. Tasks (20 min) — realistic scenarios, not instructions
   T1 "You've just signed up. Get your team's rota for next
       week out to your staff."
   T2 "Sam just canceled Saturday 7am. Sort it out."
   T3 "You want to keep using this after the trial. Do that."
   For each: success Y/N, time, where they hesitated, quotes.
   Don't help. If stuck > 2 min, note it and move on.
4. Debrief (5 min)
   "What was hardest?" "What did you expect that wasn't
   there?" "What would you do right now instead of this?"
5. Value check (2 min)
   "If this existed today, what would you stop doing?"
   Ask for a commitment: pilot, pre-order, intro to a peer.
 
SCORING
  Task success: __/5 users   Median time: ____
  Severity: 4 blocks the core loop · 3 major · 2 minor · 1 cosmetic
  Fix all 4s and 3s before build; log the rest.

Signals that matter: task success and where people hesitate. Signals that don't: "I like it", "looks clean", feature requests from people who couldn't finish T1. Asking for a small commitment at the end (a pilot, a deposit, an introduction) is the only part of the session that says anything about demand.

Design sprints, full and compressed

The Design Sprint was developed by Jake Knapp at Google and refined at GV (Google Ventures); it's described in Knapp, Zeratsky and Kowitz, Sprint (Simon & Schuster, 2016). A Decider makes the calls; a Facilitator runs the clock.

DayGV sprintKey activitiesOutput
MondayMaplong-term goal, sprint questions, map of the customer journey, expert interviews, "How might we" notes, pick a targeta target moment on the map
TuesdaySketchlightning demos of existing solutions, then each person sketches alone (the four-step sketch, including Crazy 8s); recruit Friday's testersindividual solution sketches
WednesdayDecidesilent critique and voting on sketches, the Decider picks, storyboard the prototypea storyboard
ThursdayPrototypebuild a realistic façade ("fake it") of just the storyboarda prototype that looks real
FridayTestfive one-to-one customer interviews, the team watches and notes patternsa learning: what works, what doesn't

A 2–3-day solo version

A full five-day sprint is built for a team in a room. Solo, the value is the forced sequence: map → diverge alone → decide → fake it → test with five.

BlockSolo workTimebox
Day 1 AM: mapreread brief; draw the journey (5–15 steps); choose the one moment to test; write 3 "can we…?" sprint questions3 h
Day 1 PM: sketch30 min looking at 3–5 competitors and analogues; Crazy 8s (8 ideas, 8 min) twice; one detailed 3-panel solution sketch3 h
Day 2 AM: decidepick one sketch (you are the Decider; no second-guessing after lunch); storyboard 6–10 frames2 h
Day 2 PM: prototypebuild only the storyboard frames; real copy, fake data4 h
Day 3: test5 × 45-min remote tests, 30 min gaps; synthesise that evening1 day

Book the five tests on day 1. Recruiting is the step that slips.

Design principles for MVPs

PrincipleMeansViolated when
Do one thing wellthe core loop is obvious from the first screenthe home page is a dashboard of six features
Defaults over settingsthe product picks sensible values; power users can ask youa settings page ships before the second customer
Obvious over cleverconventional patterns, plain labels (Jakob's law)custom gestures, clever names, mystery icons
Empty states are onboardingthe no-data screen explains what to do and has one primary action (or sample data)a blank table with "No results"
Time to valueminimize the time and steps from sign-up to the first "aha" (the moment the user first gets the core value)email verification, profile setup and a tour before anything useful
Ask laterequest information only when it's neededa 10-field sign-up form
Make the manual invisiblea human doing work behind the scenes is fine if the user sees a clean resultexposing "pending manual review" states everywhere
Recoverableundo, edit, delete; no irreversible action without confirmationdata loss on a mis-click; no way to delete an account
Fast enoughcore actions feel instant; see the Doherty threshold on UX/UIspinners on every click
Copy is designthe words carry the product until the visuals catch uplorem ipsum in the prototype you test

Define the aha moment as an event, not a feeling: "owner sends first rota and ≥ 1 staff member opens it", "user receives first payment through an invoice". It becomes the activation metric in the event plan below and in launch & iterate.

Pricing decisions at design time

Keep this short; the experiments come later in launch & iterate. But three decisions shape the design, so make them now.

DecisionDefault for a solo B2B/prosumer MVPWhy
Charge from day one?yes, after a trial or for the first real use; free only for deliberate reasons (network effects, consumer virality)payment is the strongest validation signal you'll get; free users give weak feedback
How many plans?one paid plan (maybe two); no free tier at launchtiers are a design and support cost; you don't yet know what to meter
What's the value metric?the unit that grows with value: per location, per active staff member, per invoiceper-seat pricing punishes adoption in small teams
Where is payment in the flow?after first value, before sustained useasking before the aha kills conversion; never asking hides whether anyone would pay

A pricing page is itself a validation tool: publish it in the prototype and during launch, and treat clicks on "Start trial" or "Buy" as a signal. Prototype testers who balk at the price are telling you about the value, not the number. Price anchoring and willingness-to-pay interviews belong in validation.

Data model sketch

Sketch the data model as a design artifact, not an implementation detail. It exposes scope ("do shifts belong to a location or to a team?"), multi-tenancy and ownership questions that are expensive to change later.

ERD SKETCH: café rota MVP
 
 account (tenant) 1 ──< user (owner/manager)
     │
     1
     └──< staff_member ──< skill (role: barista, kitchen…)
     │         │
     1         └──< shift_assignment >── shift
     └──< rota_week ──< shift (start, end, role, status:
                                 scheduled|open|claimed)
 event (id, account_id, user_id, name, props jsonb, at)
 subscription (account_id, provider_customer_id, status)
Question to answer nowDefault
Who is the tenant?an account row; every business table gets account_id and every query filters on it
What is the lifecycle of the core object?a status column with an explicit, small set of states
What must never be lost or duplicated?money and the core object: constraints, foreign keys, unique keys
What's derived vs stored?derive (counts, totals) until it's slow
What do we keep for analytics?an append-only event table from day one

Table design, constraints and indexes are on PostgreSQL and database design; the TypeScript schema is on Drizzle. Phase 3 turns this sketch into a real schema (recipe).

Analytics event plan

Decide what you'll measure before you build, so instrumentation lands with the feature rather than weeks later. Name events object_action in snake_case, past tense, and keep the MVP to 5–10.

EventFires whenKey propertiesAnswers
account_createdsign-up completessource, planacquisition by channel
staff_addedfirst and subsequent staff rowscountsetup progress
rota_publishedrota sent to staffshift_countfirst value (activation)
rota_vieweda staff member opens the linkminutes_since_publishdoes the loop reach staff?
shift_openedowner marks a shift openhours_until_startcore loop trigger
shift_claimedstaff claims itminutes_to_claimcore loop value
checkout_started / subscription_activatedpayment flowplan, pricewillingness to pay
feedback_submittedwidget or email replyscore, textqualitative signal

Write down now: activation = rota_published and ≥ 1 rota_viewed within 7 days of account_created; core loop completed = shift_opened followed by shift_claimed. How to implement the tracking is in building the MVP.

Friction points and fixes

Where people stall in Phase 2, and what to do about it.

Friction pointWhat it looks likeFix
Polishing before usersdays on colors, logo, icons, a design systemcomponent library + one accent color; logo is the product name in a nice font; the timebox forbids hi-fi
Designing for scalemulti-tenant hierarchies, role matrices, sharding in the ERDdesign for the first 50 customers; account_id column and nothing more
Scope creep"while we're at it…"; the MVP slice keeps growingevery addition must displace something above the line; maintain the cut list
Can't cutevery feature feels essentialask "would the first 10 customers refuse to use it without this?" If you can do it manually, it's not a Must
Bikesheddinglong debates about names, stack, color of the buttontimebox decisions to 15 min; the Decider decides; reversible choices are cheap
Persona theatrefictional personas with stock photos and hobbiesuse real interviewees' names (privately) and their quotes
Testing with friends"everyone loved it"recruit from the validation channel; if you can't find 5 target users now, you can't find customers later
No tests bookedthe prototype is "almost ready" for a weekbook 5 sessions on day 1; test what you have on day 5
Confusing usability with demand"they completed the tasks, so they'll pay"ask for a commitment at the end of each test; demand evidence comes from Phase 1 and payment
Analysis paralysis between directionsthree designs, no decisionpick one by Wednesday; the others go in a "later" folder; test beats debate
Spec as novela 12-page PRD nobody readsone page; if it doesn't fit, cut scope, not font size
Premature codebuilding auth and a database "to prototype properly"a code prototype has no auth, no DB, fake data, and a delete date

Exit criteria / handoff

Phase 2 is done when every box below is ticked. The package goes to building the MVP as its entry criteria.

PHASE 2 EXIT CHECKLIST (handoff to Phase 3: Build)
 
[ ] One-page spec signed off (by you and any co-founder), with
    success metric, appetite (build weeks, hard cap 6), scope
    in/out, rabbit holes decided, open questions owned
[ ] Story map with backbone, walking skeleton and a single MVP
    slice drawn; nothing in the slice that isn't on the core
    loop, first run or payment flow
[ ] Clickable prototype of the core loop tested with >= 5 target
    users (heuristic, not a law); all severity 3-4 issues fixed
    in the design; >= 4 of 5 completed the core task
[ ] At least some testers asked for a commitment (pilot,
    pre-order, intro); responses recorded
[ ] User flows: first run (with aha event and target time),
    core loop, payment
[ ] Data model sketch: tenant, core object lifecycle, event
    table, what must never be lost
[ ] Analytics event plan: 5-10 object_action events, activation
    and core-loop definitions written down
[ ] Pricing decision: charge from day one? one plan, value
    metric, where payment sits in the flow
[ ] "Not now" list (cut list) with the manual workaround for
    each item a customer might ask for
[ ] First 20-50 names for the launch list started (from
    interviews and testers)
If this is missingConsequence in Phase 3
signed-off specscope negotiates itself upward daily
story map sliceyou build horizontally (all the database, then all the API) and nothing works end to end until week 4
tested prototypeyou discover usability problems after they're expensive, in code
event plananalytics gets bolted on after launch and you can't read the first cohort
"not now" listthe cut features creep back in as "quick wins"

References