ListingLab
Reconciliation gate: numbers inside the book have to agree before export.
Prereq met via pnpm dev:demo (CoStar PDF extract ON for demos; finished OM HQ ~61 MiB fits under upload max).
Client meeting — demo this
Chair dry-run checklist: docs/partner/CHAIR-DRY-RUN-CHECKLIST.md · Meeting one-pager: docs/partner/CLIENT-MEETING-ONEPAGER.md
Prereq: pnpm dev:demo — then Start demo (F1 fail) → Sources (model + finished OM) → Monterra clean (Model vs OM) → Verify Maps (pins + POI checklist) → Compose Callouts → Export. Numbered callout boxes ship only when checklist confirmed, hero aerial matches outline, and ≤8 places.
Pre-meeting check (30s): ./scripts/demo-smoke.sh — engine health, F1 blocks export, Monterra clean. Full dry-run steps live in the one-pager.
After meeting — optional approve pastes (one-pager → After the meeting): G-07 Financials-review outline (plans/27-financials-review/VISUAL-PLAN-OUTLINE.md; currently deferred) · G-26 mobile shell outline (plans/25-mobile-story/VISUAL-PLAN-OUTLINE.md) unblocks DealShell collapse CSS. Residual GAP order: plans/46-gap-residuals/PLAN.md. Partner files: docs/partner/CORPUS-GAPS-PARTNER-REQUEST.md. No multi-file UI until TASK_LOG shows the matching founder approve line.
- Fail — rent roll doesn’t add up — Real retail OM; export blocked on SUM finding
- Clean — Monterra reconciles — Zero blocking; open Model vs finished OM when model + OM PDF are both loaded; maps + POI checklist still need confirm
- Maps — confirm pins + POI checklist — Approximate stub pins (not survey-grade) + POI checklist; confirm pins unlocks export; numbered callouts need checklist confirmed + hero aerial match + ≤8 places
- Compose — Callouts + layout — Callouts tab after POI checklist confirmed; drag adjust gated until aerial matches outline; Deal last saved on Compose + Media; Export waits for Saved
- Export — Quick RGB OM — ~14 pages when gates pass; waits for Compose Saved; manifest poi_callouts_applied true/false — numbered boxes only when checklist + aerial + ≤8; Previous downloads when history exists
Also useful
- New deal wizard — 4 steps → Sources ?new=1 checklist; Verify first shows “Nothing to check yet”
- Sources — model + finished OM + comps — Load Monterra model, then upload finished OM PDF (headlines) + CoStar or MLS export — not portal scrape
- Verify — Model vs finished OM — After model + OM upload: side-by-side price / cap / units on Verify
- Rules catalog — 60 MF checks (+ SUM-14 on portfolios; 61 in catalog) — sums, cross-refs, comps; Partial on a gap ≠ cheaper risk (see Rules)
- Outline + Callouts — Juno aerial stand-in + parcel suggestion; Callouts tab after POI checklist — drag gated until aerial matches outline
- Senior review (Demo view) — Matthew ?as=reviewer — Document thumbs, no Re-export; in-app only, no email or Slack
Do not claim: CoStar portal scrape · finished OM layout · print-ready PDF · “every figure cites source” · liability framing · numbered callouts on every export. Optional: sidebar Demo view → Matthew for senior read-only review — in-app only; we do not email or Slack yet.
Quick verify demos: Monterra (clean) · F1 retail (blocking)
Legacy HTML prototype (internal dev tour — flow reference only; real product path is the deal journey above)