Listen & Pick Roadmap

A product plan for proving a low-friction listening habit with pilot families.

Starter scope
5 days
Listening prompts
15 prompts
First session
No signup
Next3

Line up 3-5 parent-led pilot households

Collect the seven-day evidence: five or more sessions, faster starts than the current tool, and at least one family saying this could become the main practice habit.

core
Validation gate

Prepare the Days 6-10 curriculum extension

The recommended next slice is Days 6-10, a small family-routine extension that doubles the starter pack only after pilot evidence and asset dry-run checks.

next
Recommended slice

Persistent parent progress after retention proof

Add child profiles, cross-device progress and parent dashboards only after repeat usage is visible.

later
After validation
In Progress2

Recruit and observe pilot households

Use the waitlist, contact route, local pilot log, and browser-only household readiness tracker to turn conditional interest into real seven-day family behavior.

core
Current slice

Manual Cloudflare pilot launch path

Keep deployment outside GitHub Actions, verify Worker resources manually, and use the Day 1 local preflight before every pilot deploy.

next
Launch path
Done3

Public starter pack is live in the app shell

Home and /play open without signup, using a 5-day local-first practice flow with one sentence and two clear pictures.

core
Shipped foundation

Local progress resumes the next session

Saved nickname, selected day, review mode, follow-read and speech speed survive reloads in local storage.

later
Zero-account progress

Local friction log captures session evidence

The result page now opens the pilot log with practice day and seconds-to-first-sentence prefilled while keeping parent notes local until they choose to share.

next
Pilot evidence

Manual Cloudflare pilot launch path

Keep the first pilot launch manual and evidence-driven: run the Day 1 local preflight, deploy with Wrangler, then run the live smoke command against the public workers.dev URL before sending families Day 1.

Copy-ready pilot launch runbook

Use this runbook to move from local preflight to manual deploy, live smoke, and the waitlist send gate without guessing which action is allowed next.

1. Local Day 1 preflight

pnpm listen-pick:preflight
Local only

Proof: Terminal ends with "Listen & Pick Day 1 local preflight OK" and no deploy, R2 upload, live smoke, checkout, account gate, or invite send was attempted.

Blocked until done: Do not deploy, copy the Day 1 invite, or upload curriculum media.

2. Manual Worker deploy

pnpm deploy
Manual

Proof: Wrangler deploy succeeds for the intended Worker and prints the deployed workers.dev route.

Blocked until done: Do not run live smoke against the old build or send Day 1.

3. Live workers.dev smoke

pnpm listen-pick:smoke:live
Live proof

Proof: The command passes for /, /play?day=1&start=1, /pilot-log, /waitlist, their /zh localized equivalents, and /api/ping.

Blocked until done: Do not copy or send the Day 1 invite.

4. Waitlist send gate

Open /waitlist
Human gate

Proof: The tracker shows 3 invite-ready households and the browser-local Day 1 send checklist has local preflight plus live smoke checked.

Blocked until done: Keep recruiting or finish the missing release check before the invite is copied.

5. Copy and send Day 1

Copy Day 1 invite from /waitlist
Invite

Proof: The readiness report has been copied first, and the invite includes the practice link, pilot log link, daily note prompt, and child-privacy boundary.

Blocked until done: Do not treat the send as curriculum validation until Day 1-5 notes come back.

Pilot launch gates

Day 1 local preflight

Run pnpm listen-pick:preflight before deploy. It sequences config audit, Biome, locale checks, public-shell privacy contract, legal-page privacy boundary contract, contact feedback safety contract, About thesis contract, Practice Lab contract, public content contract, public footer pilot journey contract, monetization boundary contract, account boundary contract, pnpm listen-pick:settings-boundary-contract, pnpm listen-pick:curriculum-expansion-contract, pnpm listen-pick:repeat-entry-contract, pnpm listen-pick:manifest-contract, pnpm listen-pick:seo-contract for sitemap and robots coverage, start contract, pnpm listen-pick:assets-contract, asset dry run, evidence/log/invite contracts, pnpm listen-pick:live-smoke-contract, locale compile, and production build without deploying, uploading assets, opening checkout, expanding curriculum, running live smoke, or requiring accounts before practice.

Cloudflare config audit

Run pnpm cf:launch:check and clear blocking Worker, D1, R2, env, and domain findings before a pilot deploy.

Starter-pack asset dry run

Run pnpm listen-pick:assets-contract and pnpm listen-pick:assets; require no missing referenced files before any R2 upload or public pilot link is shared. Use pnpm listen-pick:assets:upload -- --confirm-token-scope only after Cloudflare token scope checks pass and an intentional R2 copy is needed.

Local production build

Run pnpm build locally so the TanStack Start Worker bundle passes before pnpm deploy is attempted.

Live workers.dev smoke pass

After deploy, open /, /play?day=1&start=1, /pilot-log, /waitlist, their /zh localized equivalents, and /api/ping on the workers.dev URL before inviting families.

Manual command sequence

1. Run the Day 1 local preflight
pnpm listen-pick:preflight
2. Deploy manually after gates pass
pnpm deploy
3. Smoke test the live workers.dev pilot
pnpm listen-pick:smoke:live

Live smoke checklist

Run pnpm listen-pick:smoke:live on the workers.dev URL after deploy and before sending the Day 1 invite. It checks the exact English and /zh public pilot paths families will use.

workers.dev

HTTP 200, visible Day 1 CTA, no anonymous login/signup gate before practice.

HTTP 200, first listening question is visible, replay/continue control is usable.

HTTP 200, local daily friction log form renders with the privacy boundary.

HTTP 200, pilot consent form, Day 1 invite copy, and household readiness tracker render.

HTTP 200 JSON response: { "message": "pong" }.

Manual gates before Day 1 invite

The roadmap is intentionally descriptive. These gates still require the launch owner to confirm real local and live evidence before copying the Day 1 invite.

3 invite-ready households in /waitlist

Each household has the 4-6 age fit, 7-day parent-led agreement, and daily friction-log agreement recorded locally.

Local preflight checked in the Day 1 send checklist

The checkbox represents a real pnpm listen-pick:preflight pass before manual deploy.

Live smoke checked in the Day 1 send checklist

The checkbox represents a real pnpm listen-pick:smoke:live pass on English and /zh public paths after deploy.

Day 1 send readiness report copied before invite copy

The report gives the launch owner one local summary of household, preflight, live smoke, public path, and privacy evidence.

No R2 upload, live smoke, deploy, or invite send from local preflight

Local preflight is a release gate only; online checks and family sends stay manual.

Next curriculum slice decision

Keep the public starter pack at five days, then prepare a small Days 6-10 family-routine extension after pilot evidence and asset dry-run checks. Do not jump straight to Levels 1-20 or the full 100-level library.

Current days
5
Target days
10
Target prompts
30

Recommended next slice

Days 6-10 · Family Routine Extension

5 additional days · 15 prompts · one familiar daily scene per day

It extends the existing habit without changing the product shape: same short session, same two-picture choice, and a clearer sense that the starter pack can grow into a curriculum.

Expansion readiness

Not ready

Keep Days 6-10 in planning until the starter pack has real household evidence and the expanded assets pass a dry run.

Not ready

Release guard

Do not publish Days 6-10 or upload R2 yet.

Keep Days 6-10 on hold until the curriculum-expansion contract and expanded asset dry run both pass.

Curriculum-expansion contract
pnpm listen-pick:curriculum-expansion-contract
Expanded asset dry run
pnpm listen-pick:assets

Days 6-10 · Family Routine Extension

5 additional days · 15 prompts · one familiar daily scene per day

Prepare after pilot signal

It extends the existing habit without changing the product shape: same short session, same two-picture choice, and a clearer sense that the starter pack can grow into a curriculum.

Levels 1-20 Pilot Pack

20 levels · larger media bundle · stronger curriculum signal

Defer until repeat use is visible

This would help parents trust depth, but it is too much asset and QA work before the first five-day behavior is proven.

Full 100-Level Library

Full library · R2-first media plan · long QA cycle

Not the first expansion

A full library would reintroduce platform-building before we know whether families come back tomorrow.

Publish only after

Pilot families are lined up
Needs live outreach

At least three parent-led households are ready to try the public build and share daily friction notes.

Starter pack evidence exists
Blocked until 7-day evidence

Use seven-day logs to confirm whether parents ask for more adjacent content instead of heavier account features.

Asset dry run stays clean
Needs expanded asset dry run

Run the repeatable asset sync dry run with no missing references before any R2 upload or curriculum expansion.

Try the current public practice flow

The current build is intentionally narrow: open the first day, hear one sentence, pick one picture, and watch whether the habit survives real family use.

Start Day 1