Funnel v2

The whole HomeZero funnel, end to end — one canonical design after a week of live iteration.

HomeZero · 2026-06-23 · market under build: North Fork Valley (Paonia · Hotchkiss · Crawford · Somerset) · only Paonia 81428 in Convex today · siblings: launchpad-redesign · onboarding-smoke-test

The funnel in one breath. A stranger lands anonymously → fills two short forms (one for their advisor, one for the market) → a tiny resolver picks their market in milliseconds → the market agent reflects its read back as a live dashboard → they create an account → they land on an activation-first launchpad → they open a board of homes that lead with the read, not a budget slider → they zero a home → a full briefing blooms. Every household gets exactly one advisor and one market agent. The market under build is the North Fork Valley. Every number on every surface is real, computed live from Convex.
01
Landing
Anonymous. Search like you do today.
02
Two forms
Advisor context · market context.
03
Resolver
Tiny fast workflow → your market.
04
Reflection
"We read North Fork Valley" + numbers.
05
Create account
Births advisor + market agent.
06
Launchpad
Install extension · connect WhatsApp.
07
Board
Cards lead with the read.
08
Zero → bloom
A full briefing authors itself.

02 Two-form onboarding

Onboarding asks for two different things and keeps them apart on purpose. One form feeds your advisor — a relationship of one-to-one. The other feeds the market agent — which reads every user's answer in aggregate. The split is the design: your advisor reads yours alone; the market pools everyone's, and that pool is a demand signal.

Form A · Advisor context private · 1-of-1

Consumed by your advisor, alone. Never aggregated.

  • Your situation — where you are in the move
  • Your yearnings — what "a home that takes care of you" means to you
  • What you'd trade off, what you won't
  • How you want to be reached

Form B · Market context shared · aggregate

Pooled across all users by the market agent. This is demand.

  • Where — the place you typed (feeds the resolver)
  • Price band you're shopping
  • Must-haves (acreage, single-level, shop, water…)
  • Timeline

Locked

03 The resolver — a tiny, fast agentic workflow

The place a user types has to become a market in the time it takes to tab to the next field. So the resolver is deterministic-first and only reaches for an agent when it has to.

The path

  1. Deterministic match (the hot path). Compare the typed place against the known markets table — names, aliases, ZIPs, town lists. A hit resolves instantly. No LLM in the onboarding hot path.
  2. Agent on miss (only). No deterministic hit → a tiny Flue workflow runs: classify the place, decide near-miss vs. out-of-bounds. This is exactly the "run a tiny fast workflow" slot in the Flue framework.

Out-of-bounds policy — "Waitlist + adjacent pull"

Births stay gated. No market is born on the fly during onboarding. Cold-start is the enemy — the advisor must wake into a market that already has data. We never hand a user an empty market and call it personalization.

04 Reflection — the market billboard

Step 1 of onboarding doesn't just accept the place — it reflects the market agent's read back. Type "Paonia," and the screen answers "We read North Fork Valley" and unfurls a mini dashboard of real numbers. This is the keystone moment: the entire resolver-plus-market pipeline firing in one screen, before the user has spent a dime or made an account.

Reflection · "We read North Fork Valley" — computed live from Convex
North Fork Valley, at a glance
43
On the market
$599k
Typical asking
58d
Median on market
13
Over the record
2
Honest deals

The sharp proof — why we lead with the read

05 The daily-alarm metric skill

Those numbers don't come from a hand-edit. The market agent owns them — because market-wide numbers are shared, they belong to the shared agent, not the private advisor. The agent has a skill that runs on the Flue cron alarm and rewrites the billboard once a day.

// Flue DO — billing-safe scheduled work, never `claude -p`
cron: "0 9 * * *"          // daily 09:00
  → scheduled handler fires
  → self-dispatch: { kind: 'metrics' }
  → skill: recompute key numbers from Convex listings
           (on market · typical asking · median DOM · over-the-record · honest deals)
  → write to the billboard / board

Locked

06 The launchpad /home — activation-first

After Finish, /home is an activation surface, not a dashboard. Two goals, in order: (1) install the Chrome extension, (2) connect WhatsApp. Everything else is secondary. The built visual lives in launchpad-redesign.html.

The greeting — agent talking, no costume

Fixed now → agent-fluid later. Today the layout is deterministic: activation first, board second, placeholders last. The target state is an advisor-curated launchpad that decides which widgets to surface by where you are in the journey. We ship the fixed version and earn our way to fluid.

07 The board — read-led

Killed: the money slider. One data point was hijacking every card — a parlor trick. Affordability is one input, not the headline. It comes off the cards.

Cards now lead with the read: the verdict's category chip and headline, first. Budget becomes a quiet filter, not a hero element. The carry/footing math moves off the cards into a "Run your numbers" workbench, where someone goes when they want it — not in their face on every tile.

Board · cards lead with the verdict — real listings, real verdicts
overpriced
A genuine cabin, an optimistic price
41014 Beaver Trail
$509k
caution
Walkable, chasing the market down
57 Cedar Drive
$625k
fair
An honest price, finally
613 3rd Street
$306k
good
Honest price, heart of town
229 Colorado Ave
$425k

Locked

08 One advisor, many windows

There is one relationship, surfaced in three places. The launchpad greeting, the WhatsApp thread, and the questions on a board card are the same conversation session. The user never re-introduces themselves; the agent always has a way to reach them.

🏠

Launchpad

The greeting up top — the agent talking to you on arrival.

💬

WhatsApp

Morning briefing + live alerts, same thread.

🗂️

Board

Questions on a card — answered into the same session.

09 Real data everywhere

Every number on every user-facing surface is computed live from Convex listings — 46 listings, 43 active in Paonia. No invented content on anything public-facing. No individual people's names (institutional names are fine).

10 The mechanical cutover (building now)

Three changes are being implemented in parallel with this spec. None need more design — they're plumbing.

#ChangeWhat
aLabel fix"Delta County market agent" → "North Fork Valley market agent", everywhere it surfaces.
bWhatsApp out of onboardingRemove the WhatsApp field from the onboarding flow; it lives on the launchpad now.
cWire star→ringMarketZeroing a home rings the Flue market agent's drain sweep (marketDoorbell.ringMarket), retiring the old cells doorbell ring. Makes Act 3 of the smoke test click-only.

Acceptance gate: the onboarding smoke test runs at the end of every build. Green there = the funnel is alive.

11 Status — per surface

SurfaceStateNotes
Resolver — deterministic matchlivemarkets table + resolveMarket in production (NFV seeded).
Resolver — agent-on-missto buildTiny Flue workflow for near-miss / out-of-bounds classification.
Reflection billboardlive numbers via skillStep-1 reflection ships; the daily metric skill that writes the tiles is to build.
Two-form onboardingto buildSplit advisor (private) / market (aggregate) forms. WhatsApp removed (§10b).
Daily-alarm metric skillto buildFlue cron "0 9 * * *" → recompute → write billboard.
Launchpad (activation-first)mockedDesign locked in launchpad-redesign.html; build pending.
Board — read-led cardslive slider removalTyped boardCards table live; remove the footing slider, lead with verdict.
Star → ringMarketto build§10c — the wire-up that makes the bloom click-only.
One-session advisorlivePer-session models live; launchpad greeting writes into the WhatsApp thread.

The two siblings

Launchpad redesign →
docs.cells.md/launchpad-redesign
The built activation-first /home visual.
Onboarding smoke test →
docs.cells.md/onboarding-smoke-test
The end-of-build acceptance gate.

HomeZero · Funnel v2 · 2026-06-23 · canonical funnel design. Resolver + reflection + two-form onboarding + daily metric skill + activation launchpad + read-led board + one-session advisor. Build via the smoke test as the gate. Published to docs.cells.md/funnel-v2.