Knowledge > Products > WiseAI Realtor > Backend Completeness Audit
WiseAI Realtor — Backend Completeness Audit
Source: 4 parallel research/review agents (2026-06-27): (A) top Canadian REALTOR® team sites, (B) Canadian consumer portals + brokerage tech, (C) adversarial QA gap audit of our IA+mockups, (D) Canadian compliance/ops. Headline: the public-site, design-system, competitive, and compliance-for-public-site layers are strong — but the backend is designed as screens, not a system. Close the systems-layer gaps (data model, auth/RBAC, identity/consent) before building, and restore the differentiator screens that were dropped from the nav.
P0 — foundational (get wrong → rework everything downstream)
- No backend data-model/schema spec. Only a 14-line ASCII diagram exists. Decide RE-native tables (
contacts,interactions/timeline,consent_events,deals,saved_searches,tasks,listing_overlay,phone_lines,sms_messages) on top of the current per-interactionlocal_business_leadsstore (corrected 2026-06-27: RE leads live inlocal_business_leadsviacreateLead, not the churchvoice_*tables — the gap is thatlocal_business_leadsis per-interaction with no long-lived contact, consent ledger, or dedup). → Done: seedata-model.md(14 RE-nativere_*tables + 3-phase coexistence/migration plan). - No contact identity / dedup / merge model. One person who scans a QR + calls + submits a form = 3 disconnected rows today. Need identity resolution (match on phone/email), merge UI, and the lead→client→past-client lifecycle across multiple deals/years.
- No contact-level consent model + cross-channel opt-out (CASL). Cookie consent is covered; the AI's own email/SMS/voice is not. Need consent type/source/timestamp/scope, implied-consent expiry (6mo inquiry / 2yr transaction), STOP/HELP, voice DNC, consent on imported contacts, and a global suppression that gates every outbound channel incl. the AI.
- No multi-user auth/RBAC. Today = one shared
/admin/[token]magic link. The first client (Team Beckett) is two agents — they can't share one identity without breaking per-agent attribution, routing, and security. Decide per-user auth (Supabase Auth) + an RBAC matrix (who sees commissions/other agents' pipelines) now. - No RE-specific AI guardrails, enforced + tested. The fair-housing linter covers listing copy;
moderation.pyis church life-safety. A live RE conversation (chat/voice/SMS, every language) must refuse steering ("is this a good area for [group]?"), give no legal/mortgage/tax/value advice, never guarantee values. → Author an RE guardrail spec + regression coverage. - Outbound voice/SMS regulatory gate (conditional P0). The moment outbound AI calling/texting ships it triggers Canada's National DNCL, CRTC telemarketing/ADAD rules, calling-hour windows, CASL. Keep MVP inbound-only; gate outbound behind a compliance layer.
P1 — important (credible, sellable product)
Differentiator screens dropped from the nav / never mocked (several are stated BEATs):
- QR Campaigns builder + scan analytics (a "no competitor has it" BEAT — dropped from rail).
- Voice Agent config (lines: Premium vs Community, voices, scripts, routing, hours, escalation, transcripts) + Chat Agent config (knowledge, rules, placement, testing) — collapsed into one "AI agents" link; voice is our #1 differentiator and has no surface.
- Analytics / Reporting — the five "which X creates leads" reports (the core value narrative) have no screen.
- Calendar & Tasks — speed-to-lead + follow-ups + showings land here.
- Website builder / Pages / Area-Guide editor / Tracking & Compliance sub-screens (only the template picker exists).
- Reviews & Testimonials manager (shipped in prod) — dropped from nav.
- Active Business Hub (deals/transactions), Action Plans + drip library, Automations — named NEEDs, no screen.
- Showing scheduler (Cal/Google) and onboarding/concierge setup wizard — named, not designed.
Data model (beyond P0 spine): listing media (gallery order, video/3D/floorplans, alt-text, upload/storage), deal/commission, lead-source taxonomy (first/last-touch), saved-searches/alerts + lightweight buyer account, tasks/activities, multi-line phone/DID, SMS messages, multilingual content variants.
Workflow: speed-to-lead SLA timer + alert; lead assignment/routing (round-robin/claim/pond/geo/language-based — Beckett needs it between 2 agents); AI→human handoff edge cases (in-flight takeover, after-hours, no-response re-engage, live voice transfer); bounced/invalid contact handling.
AI/automation: autopilot/co-pilot per-channel config; escalation rule engine; the SMS/text ISA lane (opt-in, STOP/HELP, quiet hours, throttling); lead-scoring inputs/weights/decay; "facts used" receipt extended to chat/voice (never hallucinate listing facts); recording/transcript consent disclosure.
Notifications: an actual system beyond the bell — event taxonomy (new/hot lead, handoff-needed, showing booked, missed call, review, deal-date due) × channel (in-app/email/SMS/push) × per-user prefs + digests. The instant hot-lead push is make-or-break for speed-to-lead.
Accessibility/responsive/states: no mobile/responsive backend mockups (agents live on phones at showings); error/empty/loading states undesigned (DDF feed down, integration disconnected, send/payment failure).
The Canadian feature bar to support (consumer + agent expectations)
Consumer bar — set largely by HouseSigma/Zoocasa/Wahi (a buyer thinks the site is broken without these):
- Sold prices + sold comparables + price/relisting history + true days-on-market — behind a free email/VOW registration gate (this gate is both the expectation AND the legal mechanism AND our lead-capture engine).
- AI/automated home-value estimate per listing + a standalone "what's my home worth" (publish a confidence range — incumbents hide it).
- Map search with draw/polygon + save-the-area.
- Saved searches + alerts — new-listing, price-drop, just-sold (the "Watched Area" digest pattern).
- Per-neighbourhood market trends — median, DOM, sale-to-list %, days-of-inventory (Zolo refreshes ~15 min).
- School + walk/transit scores on every listing.
- Mortgage / affordability / rent-vs-buy tools.
- Mobile-first (HouseSigma/Zoocasa are app-led; a fast PWA is the MVP substitute). Sleeper hits: sold comparables cluster, price-drop badges, rental/investor cash-flow view, watched-neighbourhood weekly digests, property-tax/assessment context, estimate-accuracy as a trust signal.
CRITICAL data caveat: DDF has zero sold/historical data (and SK + QC are excluded from DDF). Sold comps / price history / AVM cannot be built on the DDF feed — they require a board VOW feed behind a consumer login. Our DDF active-listings sync is now LIVE (PR #1064), but VOW/sold is still greenfield and is the gate to the entire HouseSigma-class feature set. (Beckett/Woodstock is on PropTx, which supports IDX + VOW — a clean path.)
Agent/brokerage floor: the big brokerages (Royal LePage rlpSPHERE, RE/MAX MAX/Tech) both run the same engine — Inside Real Estate's BoldTrail (kvCORE) — given to agents at no per-seat cost. We cannot win on the CRM floor; we must match it (IDX + smart CRM + routing + behavioral follow-up + transaction checklist + reporting + mobile) and lead with the AI front desk none of them have. Transaction management + native mobile are specific weak spots at Royal LePage / Century 21 / Sutton — worth exploiting (and Sutton is the Beckett relationship).
The wedge — fully validated: across all ~13 top Canadian agent sites inspected, zero have a live consumer AI chat or voice concierge. Our AI front office (inbound voice + chat + sub-60-sec speed-to-lead) + true multilingual (FR + Punjabi/Urdu) + Canada-first compliance is genuinely unoccupied territory.
Compliance must-haves (hard legal — counsel/brokerage sign-off before launch)
- Brokerage identity invariant on every page (legal brokerage name + "Brokerage" descriptor; registered agent names; team-name co-display) — RECO/TRESA's #1 complaint; block publish if empty. Province-aware (BCFSA/RECA/OACIQ/etc. — don't hardcode Ontario).
- MLS®/REALTOR® trademark correctness (®/uppercase, ownership statement on every data page, approved logos, never in title/meta/slug/domain).
- DDF display obligations — "Powered by REALTOR.ca" linked badge (≥90px), ToS/privacy browse-wrap, accuracy disclaimer, listing-brokerage "courtesy of" attribution (board IDX requires it), honor listing opt-out, auto-expire off-market within ~24–72h.
- Sold data behind VOW (registration + relationship + terms) or omitted — never public (Competition Bureau v. TREB precedent).
- "Coming soon"/exclusive time-boxed (CREA cooperation rule: on MLS within ~3 days of any public marketing; PropTx requires immediate showing availability) — don't design features that encourage off-MLS marketing.
- PIPEDA + Quebec Law 25 (express + separated consent, profiling disclosure + off-switch, PIA for cross-border, privacy officer, breach + retention) + French for QC (Bill 96: site, forms, consent, AND the AI agent).
- CASL on all outbound (consent ledger, full sender ID + physical address, 10-day/60-day unsubscribe, suppression, no cron sends).
- AODA → WCAG 2.1 AA on public sites AND admin.
- Canadian-region hosting decision + processor/PIA inventory (incl. AI vendors).
- OUT of scope (brokerage back-office — integrate/hand off, never rebuild): trust accounting, deposits, commission disbursement; FINTRAC AML/ID system-of-record (Oct 2025 changes); binding agreement-of-purchase-and-sale generation/e-sign legal record; regulated disclosure documents. Surface reminders/flags at most.
What's already well-covered (audit balance)
Design system (navy/teal/gold, contrast fixed, density toggle, anti-patterns); public-site privacy/consent/analytics/anti-bot doc; competitive "barbell" thesis + Canadian table-stakes; do-not-reinvent reuse map + the DDF inbound-only + featured-overlay "beat"; Smart Lists (per-agent language, never hardcoded); the multilingual moat; the mocked working screens + 2 public templates with banner/footer; multi-agent build discipline.
Recommended sequence
- Write the systems layer (P0): data-model/schema doc → auth+RBAC (≥2 users) → identity/dedup → consent/CASL + global suppression → RE AI guardrail spec. (This is the real risk; the screens sit on top of it.)
- Restore + mock the dropped differentiator screens (P1): Voice/Chat agent config, QR campaigns, Analytics/reporting, Calendar/tasks, Reviews, Active Business Hub, Website builder/pages, onboarding wizard; add the nav items back.
- VOW/sold-data track: activate a board VOW feed (PropTx for Beckett) behind a registration gate → unlocks sold comps + price history + AVM (the HouseSigma-class bar).
- Compliance pass: brokerage-identity invariant, DDF attribution/trademark guards, CASL/consent, AODA AA, French/QC, Canadian hosting.
- Mobile/responsive backend pass + error/empty/loading states.
- Then wire mockups → existing
src/lib/real-estate/*.