Skip to main content

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 are source='manual'.
  • Template sections + listing card/detail: reuse; add one section + optional page.

3. The one schema change

  • REListingStatus today = 'active' | 'conditional' | 'sold' | 'pending'add 'coming_soon' (types.ts) + allow it in the DB status (confirm any CHECK constraint on local_business_listings.status; widen if present — migration in churchwiseai-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-soon page: 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_contacts with source_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

  1. 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.
  2. No MLS® number is shown; the "not yet on MLS®" label renders.
  3. "Notify me" captures a consented lead into re_contacts (verify the row + consent event).
  4. Zero coming-soon listings → section hidden, honest empty state on the page.
  5. 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).