Acceptance Spec — Realtor "Coming Soon" / Pre-Market Listings (P1 MVP)
- Status: Proposed (MVP) — 2026-07-02
- Priority: P1. Creates urgency + a reason to register; the incumbent has it.
- Product: WiseAI Realtor Pro Website (
/s/[slug]) - Parent:
WISEAI_REALTOR_BACKEND_REPLACEMENT_REQUIREMENTS_2026-07-02.md§1.9. SellingToolz parity: "Coming Soon Listings".
1. Why
A "Coming Soon" surface teases pre-market / exclusive / soon-to-list properties before they hit MLS. It drives buyer sign-ups ("be first to know") and signals seller demand. It lives on the agent's own website only — never REALTOR.ca (a manual listing has no MLS® number).
2. Do NOT reinvent — extend these
- Listings storage/manager: reuse
local_business_listings+ the manual-listing CRUD (/api/real-estate/listings). Coming-soon rows aresource='manual'. - Template sections + listing card/detail: reuse; add one section + optional page.
3. The one schema change
REListingStatustoday ='active' | 'conditional' | 'sold' | 'pending'— add'coming_soon'(types.ts) + allow it in the DBstatus(confirm any CHECK constraint onlocal_business_listings.status; widen if present — migration inchurchwiseai-web/migrations/). Coming-soon rows are excluded from the normal active for-sale grid and shown only in the coming-soon surface.
4. Scope
In: owner adds a manual coming-soon listing (address/photos/price optional, "expected on market" note); a "Coming Soon" section on the homepage + optional /s/[slug]/coming-soon page; a "Notify me" CTA that captures a lead (reuse the existing lead intake → re_contacts). Out: any MLS® number / REALTOR.ca push (impossible + non-compliant for pre-market), automated go-live scheduling.
5. Compliance (important)
- Coming-soon = exclusive/pre-market; it must follow the board's exclusive-listing rules (e.g. seller consent, no MLS® marketing before the listing agreement/MLS entry). No MLS® number, no REALTOR.ca trademark on a coming-soon card. Label clearly as "Coming Soon — not yet on MLS®".
[verify with brokerage]the exclusive-listing marketing rules before enabling for a client.
6. UI
- Homepage section (hidden when none) + optional
/coming-soonpage: card grid with a "Coming Soon" badge, teaser photo, area, optional price range, and a "Notify me when it's listed" button → lead capture (name/email/phone, consent, CASL-gated) →re_contactswithsource_detail='coming_soon'. - Hydration-safe; reduced-motion safe; mobile-first.
7. Owner surface
- Listings manager: add/edit a coming-soon listing (status = Coming Soon). account_id-in-query rule applies.
8. Acceptance criteria
- Owner adds a coming-soon listing → appears in the coming-soon section/page with the badge; does NOT appear in the active for-sale grid or search results.
- No MLS® number is shown; the "not yet on MLS®" label renders.
- "Notify me" captures a consented lead into
re_contacts(verify the row + consent event). - Zero coming-soon listings → section hidden, honest empty state on the page.
- Tenant isolation holds;
source='manual'only.
9. Verification (deployed URL)
- TeamMoelker test tenant: add a coming-soon listing, Playwright the public surface (badge + no-MLS label), submit a "notify me" lead, verify the
re_contacts/consent rows. Evidence-or-nothing.
10. See also
do-not-reinvent.md (listings data flow — manual = pre-market/exclusive) · parent requirements doc §1.9 · identity-consent-model.md (lead consent).