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.

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" }.

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