Agents watch a local market, run real-estate strategies against it, and an editor publishes a small daily issue of cards — generated editorial front, real data on the back. You flip through it like a strange little magazine somebody made for your town.
The plan in one breath: one repo, three deployables (Next.js site, Convex backend, flue agents). One market agent per market with two nightly beats — sweep (collect) and press (publish the issue). For the MVP the agent's thinking runs locally on the codex subscription and art runs through pix, so a nightly issue costs roughly nothing. No auth, no payments, one market, ~6 strategies, public website. Five build streams, each ending in something you can hold.
Everything upstream is structured JSON; everything downstream is presentation. The front of a card is disposable art we can regenerate forever. The back is the system of record — exact numbers, listing history, evidence, links. The front makes a claim; the back shows its work.
Same proven layout as homezero — one PR ships a feature across all three layers. Fully independent of homezero: own data pipeline, own Convex deployment, own worker.
The dial. Three routes: /, /:market, /:market/:date. Card dial + flip, mobile-simple, desktop shows neighbors peeking in. Public, read-only, no auth in v0. OpenNext on Cloudflare.
What the site serves: markets, issues, cards. The agent writes finished issues here; the site reads them reactively. Card front images live in Cloudflare Images (pix already uploads there).
One Durable Object per market. Owns the listing store (its own SQLite) and the domain tools. Two beats: sweep — Bright Data Zillow pull; press — run strategies, compose the issue, art-direct fronts, publish.
The flue agent is the durable body — store, tools, HTTP surface. But for the MVP, the thinking is driven locally, the same dial-local pattern the homezero market agent already uses:
# nightly, via launchd on the Mac
sweep: driver → agent tools → Bright Data → listing store
press: codex exec (ChatGPT sub) reads the store,
runs strategies → composes issue JSON,
art-directs fronts → pix (ChatGPT sub) → CF Images,
writes issue → Convex → site is live
Strategies are skills, not agents — each is a prompt plus a deterministic pass over the listing store, emitting Findings JSON. They live in the repo for the MVP; the marketplace and the strategy-mining agent come later.
The editor emits one JSON per card. Fronts can be regenerated, restyled, A/B'd; the back never lies.
{
"front": { "headline": "THE SELLER BLINKED",
"subhead": "$55K disappears from a Paonia listing.",
"art_direction": "bold independent real-estate magazine…",
"renderer": "image-gen | native" },
"back": { "title": "218 Cedar Ave",
"metrics": [["Current price","$484,000"], ["Cut","$55,000"], ["DOM","74"]],
"chart": "price_history",
"evidence": ["…why the strategy flagged it…"],
"actions": ["view_listing"] } // v0: link out; watch/ask come with auth
}
Each stream ends in something real you can look at. Real North Fork data from day one — nothing mocked, ever, on anything public.
Repo, Next app shell, Convex project, flue worker skeleton, dev deploy lane. Boring on purpose.
Proves the three deployables exist and deploy.
Market agent DO + sweep beat: Bright Data → North Fork listings, price history, status changes into the agent's own store. flow's own pipeline, independent of homezero.
Proves the store holds today's real market, refreshed nightly.
Convex schema + press beat v0, driven locally by codex: three strategies, real findings, a composed issue in Convex. Fronts are typographic for now.
Proves the editor can look at a real market and say something interesting.
The site: card dial + flip, mobile-simple, desktop peek. Reads the real issue from S2. This is the product's whole interaction vocabulary — left/right, tap to flip.
Proves the core question: is flipping through this fun?
Art-direction spec → pix → Cloudflare Images → the generated front renderer, with a native/generated toggle per card. The bakeoff from the design conversation, live on real cards.
Proves the "holy shit" card — and which renderer wins where.
launchd schedule, issue archive (/:market/:date), pix-down fallback, share URLs. Then point a domain at it.
Proves you wake up to a fresh issue three mornings straight without touching it.
| Decision | Call |
|---|---|
| Repo topology | One repo (flow), three deployables. Split only if it ever hurts. |
| Data | Own pipeline — Bright Data Zillow sweep into the agent's own store. Independent of homezero. |
| Card art | pix (ChatGPT-subscription path), fronts stored in Cloudflare Images. Typographic fallback. |
| Agent shape | One market agent per market; strategies are skills, not agents. Editor = the press beat. |
| Execution | MVP beats driven locally (codex sub + pix + launchd); hosted flue alarms are the graduation path. |
| Auth / billing | None in v0. Public read-only magazine. Clerk arrives with "watch this property." |
| Scope | One market (North Fork Valley), ~6 strategies, daily issue of 5–8 cards. |