Multi-city network / TheDomaine.AI — Where We Are & the Next 90 Days

Luxury relocation network — status summary & the plan to bring the revenue engine to life.

Private strategy page · editable · saves to the cloud · not indexed

GROUNDED = verified from a real source (safe base). DRAFT = a proposed default — edit / confirm before relying on it. Everything on this page is editable — click any highlighted text, type, and it saves automatically.

Where the project is now

GROUNDED Status summary
The luxury DISPLAY layer is LIVE. TheDomaine.AI is published on CDN provider Pages and serves ~120 city-pair relocation landing pages (64 corridor pages under /multi-city network/ plus the Houston hub and featured-market pages), built from 9 design templates with an AI-generated city image gallery and full AEO/schema markup. The apex, /multi-city network/, /houston/ and the featured corridors all return HTTP 200. The REVENUE engine is BUILT but was switched OFF: a lead-capture form (KV-backed, with internal Telegram notify) shipped on the 63 corridor pages, so pages now capture leads instead of earning $0 - but outbound auto-reply and partner-agent routing remain in SIMULATION_MODE by Joseph's decision, and there is no lead magnet yet. A 13-council expert review (45 passes) found 27 distinct gaps across 9 components; the top chokepoints are the missing lead magnet, a placeholder CTA phone Joseph chose to keep until testing is done, thin/duplicate page content, $0 prices on 11 top international corridors, and a wrong canonical domain leaking SEO authority. resources.thedomaine.ai is still a 'Coming Soon' dead-end.
GROUNDED The goal
Turn TheDomaine.AI from a live luxury display site into a working relocation REVENUE engine: capture qualified inbound/outbound Houston-corridor relocation leads, route them to partner agents on a referral fee, and rank the pages so they earn organic traffic - without demoting the domain or exposing client PII.

What’s built / live right now

  • GROUNDED
    ~120 relocation landing pages live on thedomaine.ai (64 corridor pages under /multi-city network/, 9 templates, AI image gallery). Apex + /multi-city network/ + /houston/ all HTTP 200.
  • GROUNDED
    Lead-capture FORM live on 63 corridor pages - posts to CDN provider KV + internal Telegram notify (functions/api/multi-city network-lead.js). Pages capture leads now (were $0).
  • GROUNDED
    Lead pipeline OUTBOUND is OFF (SIMULATION_MODE) by Joseph's decision - leads are stored + notify internally only; no auto-reply to leads or partner agents.
  • GROUNDED
    Council gap review complete: 27 distinct gaps, 3 tiers, in data/multi-city network-90day-sprint.json (Tier-1 revenue: 10, Tier-2 trust/SEO: 12, Tier-3 polish: 5).
  • GROUNDED
    Supporting tooling exists as real tools (icosa_60_generator, icosa_image_batch, icosa_aeo_enhance, deploy_cloudflare) + brand tokens + 93-city price dataset.
  • DRAFT
    Estimated organic traffic / current lead volume: UNKNOWN - no analytics were installed on the pages (that is gap Multi-city network-G04). Fill in once GA4 is live.

Decisions

GROUNDED Already decided by Joseph

  • 2026-07-18 - KEEP the placeholder CTA phone until the funnel is fully tested (gap G02 parked).
  • 2026-07-18 - NO outbound auto-replies to leads or partner agents yet - lead pipeline outbound stays OFF (SIMULATION_MODE); leads stored + notify internally only.

DRAFT Business decisions still needed (human judgment, not tech)

  • Confirm the partner-agent referral fee (draft assumption used in notes: 25%) before any outbound routing is flipped on.
  • Provide / approve a real CTA phone or call-tracking number so the placeholder can be replaced (G02).
  • Green-light flipping the lead engine from SIMULATION_MODE to live outbound once the funnel is tested.

The next 90 days

GROUNDED Steps below come from the real 27-gap council review (data/multi-city network-90day-sprint.json), grouped into three phases. DRAFT The phase split, owners and any step you add are editable defaults.

Days 0-30 - Turn the revenue engine ON

Fix the three chokepoints that keep the site at $0 (lead magnet, real CTA phone, capture form already shipped), install analytics, and stop the coming-soon / dead-end leaks. This is the money phase.

criticalMulti-city network-G01 · Lead magnet promised but does not exist~3 days
Plan (editable)
Build tools/icosa_city_guide.py to render a real branded per-city PDF/HTML guide (neighborhoods, COL, schools, market snapshot from existing thedomaine data) to a stable Drive/CDN provider URL; have send_auto_reply link the actual city-specific guide instead of a phantom 'on its way'.
Not started
criticalMulti-city network-G02 · Every CTA dials a FAKE placeholder phone (+18325551234)~2 days
Plan (editable)
Replace literal +18325551234 with biz('business.phone') (same value schema uses); route through a call-tracking number for attribution; add a build-time assert that fails generation if any page contains 555/placeholder tel: or if CTA phone != schema telephone.
Not started
criticalMulti-city network-G03 · No lead-capture form / conversion surface on landing pages~3 days
Plan (editable)
Embed a short capture form (name, email, phone, from-city prefilled, Buying/Selling toggle) posting to CRM/Inter-system mail intake, plus a Calendly embed; add business.lead_form_url to biz_config and render into every template.
Not started
criticalMulti-city network-G04 · Zero analytics/tracking on all relocation pages~3 days
Plan (editable)
Add GA4_ID/GTM_ID to biz_config and inject one cookieless <head> snippet in every template + a _inject_analytics build step in deploy_cloudflare (idempotent marker); capture utm params, fire generate_lead on CTA, page_view with origin-city+direction params. Store measurement ID so genericize never masks it.
Not started
criticalMulti-city network-G05 · resources.thedomaine.ai 'Coming Soon' is a conversion + indexing dead-end~3 days
Plan (editable)
Replace static UNDER_CONSTRUCTION with a lightweight email-capture page (one field POSTing to a KV-backed /api waitlist, clear CTA, fallback link to live library); return 503+Retry-After instead of 200 so crawlers hold ranking; add rel=canonical to the chosen primary host.
Not started
criticalMulti-city network-G06 · Wrong-city / wrong-direction FAQ content (Houston copy on non-Houston pages)~3 days
Plan (editable)
Make every FAQ/neighborhood block direction-aware: branch on whether dest=='Houston', drive neighborhoods/tax/market/COL from a per-city facts dict (config/multi-city network-city-facts.json); add a self-test that FAILS if a Houston-only string appears on any page where dest != Houston.
Not started
criticalMulti-city network-G07 · 11 city records ship price:0 on the highest-value international corridors~3 days
Plan (editable)
Reconcile script: for every price:0 record, join on metroArea/name to luxury-structure + multi-city network-structure and backfill; where neither has a number, pull a 3-source web median (existing pattern) and stamp price_source+price_updated. Add a build-time validator that FAILS deploy on price<=0.
Not started
criticalMulti-city network-G08 · Wrong canonical/OG domain — authority leaks to thepropertyjoes.com~2 days
Plan (editable)
Parameterize deploy domain (business.public_site=https://thedomaine.ai) + /multi-city network/ path prefix in biz_config; use for og:url + all schema item/url fields; inject self-referencing <link rel=canonical>; add a post-build assert that grep-fails the deploy if any og:url contains thepropertyjoes.com or a space.
Not started
criticalMulti-city network-G09 · AEO codename 'Multi-city network' leaks to LLMs via llms.txt (genericizer blind spot)~2 days
Plan (editable)
Extend _genericize_gate glob to also cover llms.txt, llms-full.txt, *.md, *.json in the deploy root (mirror the egress-scanner suffix set); run ip_genericizer over them in place before upload; add a --verify assertion in check_deployment so a leak FAILS the deploy.
Not started
criticalMulti-city network-G10 · PII / private client pages world-readable behind noindex-only 'protection'~3 days
Plan (editable)
Add a PII scan pass (CRM client names, phone/SSN/street-address/email regex) that HARD-BLOCKS publish on non-exempt pages; stop treating noindex as privacy — route genuinely-private pages to CDN provider Access / signed-URL protection.
Not started

Days 31-60 - Earn trust & get indexed

Close the SEO / trust gaps: canonical domain, sitemap + canonicals, unique per-city content, proof/testimonials, PII protection, and verification gates so nothing broken ships.

criticalMulti-city network-G11 · Multi-city network pages absent from sitemap + no canonical = unindexable~3 days
Plan (editable)
Inject <link rel=canonical href=thedomaine.ai/multi-city network/{slug}> into every head + emit/merge an multi-city network block into sitemap.xml with all correct URLs + lastmod, wired into the CDN provider deploy so sitemap and pages ship together; verify with a live curl post-deploy.
Not started
criticalMulti-city network-G12 · Near-identical mad-libs pages = thin/doorway content~6 days
Plan (editable)
Add a per-city content data layer (JSON keyed by slug) with 3-4 UNIQUE facts each (named employers/industries driving the route, real distance/flight time, route-specific move reason, city-specific neighborhood picks); gate generation on a min-unique-word-count + cross-page shingle/duplicate check so no page ships until it clears a uniqueness threshold.
Not started
criticalMulti-city network-G13 · 71% of cities have identical boilerplate 'hint' as their only content seed~6 days
Plan (editable)
Add three required unique-content fields per city (neighborhood_character, move_hook, local_proof) populated by a one-pass research script; add a build-time uniqueness gate that rejects any city whose hint matches the boilerplate regex.
Not started
highMulti-city network-G14 · No verification gate between generation and deploy (unreplaced tokens / 'Data coming soon' ships live)~3 days
Plan (editable)
Add a shared post_generate_verify() gate: assert zero '{{' tokens remain, count 'Data coming soon' occurrences (fail above threshold or route incomplete cities to a noindex/draft folder), validate required data keys per city; wire non-skippable so generate_all exits nonzero before deploy.
Not started
criticalMulti-city network-G15 · AEO layer has no rendered verification — can silently vanish under a green monitor~3 days
Plan (editable)
Add tools/aeo_verify.py asserting per page: a valid ld+json block containing FAQPage+RealEstateAgent, FAQ block present, og:title/og:url present; wire it as the REAL body of the AEO-VISIBILITY health monitor check (replace py_compile), WARN loud with failing filenames; extend seo_validator to call it.
Not started
highMulti-city network-G16 · AEO enhancement not chained to generation — new pages ship with zero schema~3 days
Plan (editable)
Have the generators call enhance_page() on each file they write, OR add a deploy-gate hook that runs the enhancer over the dir before publish and fails if aeo_verify finds an un-enhanced page; register as cron/hook to back-process new pages.
Not started
highMulti-city network-G17 · No trust/proof language on pages (testimonials, agent name, license, closed count)~3 days
Plan (editable)
Add a reusable trust block to page_template() fed from config (2-3 real client quotes with city attribution, closed-transaction count, agent name + license #, proof strip) and port the disc template's testimonial-card + 'Free Relocation Analysis' offer into the 60-generator so every page carries proof above the CTA.
Not started
criticalMulti-city network-G18 · Directional intent collapsed onto single-city slugs — half the search surface lost~6 days
Plan (editable)
Emit one row/URL per ordered (origin,destination) pair (restore pair-slug scheme, add explicit direction field + composite url like houston-to-frisco); page builder reads pairs not booleans; register each as a distinct GSC/GA4 page-path so intents track independently. Target ~120 directional URLs.
Not started
criticalMulti-city network-G19 · Blurry/undersized city images (74 of 93 off-spec, some 250x250) on a luxury site~3 days
Plan (editable)
Add a conformance gate to icosa_image_batch.py: treat any .jpg with width<1600, ratio off 16:9 by >0.05, or <150KB as MISSING (delete+regenerate) not 'done'; enforce fixed 1600x900 sRGB export; re-run to regenerate the 74 non-conforming slugs; add a standing deploy-guard verifier.
Not started
criticalMulti-city network-G20 · No demand/opportunity ranking — 93 pages treated as equal-weight~6 days
Plan (editable)
Add per-row search_volume, kw_difficulty, migration_flow (IRS SOI + Census ACS), and a computed opportunity_score populated via a scripted pull (Ahrefs/GSC + Census); sort page generation + internal-link priority by that score.
Not started
highMulti-city network-G21 · No lead scoring / qualification — every lead treated identically~3 days
Plan (editable)
Add a lead-scoring layer keyed on price-tier of the origin/destination page, buy/sell intent toggle, timeline, and engagement; route high-score leads to immediate agent alert + priority CRM tag, low-score to nurture.
Not started
criticalMulti-city network-G22 · Three divergent generators + two output roots, no single source of truth~6 days
Plan (editable)
Collapse to ONE generator + ONE template + ONE output root with a route->builder registry keyed by slug; archive the other two + the stale hosting service-deploy copy; add a build assertion that every structure slug maps to exactly one builder and one output file, failing on collision/orphan.
Not started

Days 61-90 - Depth, images & scale

Deepen content and images, add demand-ranking + lead scoring, consolidate to one generator/output root, and finish image/perf polish so the network can scale cleanly.

highMulti-city network-G23 · Cross-file price inconsistency + inflated/inverted medians + drift~3 days
Plan (editable)
Designate cities.json single source of truth; add a cross-file consistency validator (std<=same-metro lux; internationals vs currency-converted 3-source median; flag identical duplicates) + a reconcile/drift-diff run as a pre-deploy gate; correct the outlier internationals with source stamps.
Not started
highMulti-city network-G24 · Missing price provenance/freshness on 74-85 records~2 days
Plan (editable)
Make price_source + price_updated required fields (validator enforces presence); add a freshness cron that queues any record older than N days for re-research; add a per-record verified boolean the template can caveat on.
Not started
mediumMulti-city network-G25 · Weak/duplicate city-image alt text + no image SEO (og:image, image sitemap)~3 days
Plan (editable)
Build alt from the cities.json hint (e.g. '{name} luxury real estate — {metroArea} relocation'); add a post-batch md5 dedup gate that regenerates colliding slugs; emit per-city og:image/twitter:image + an image sitemap block + ImageObject JSON-LD, auto-registered by the batch tool.
Not started
highMulti-city network-G26 · Fabricated human pseudonyms + no PII/broker-disclosure on genericized public pages~2 days
Plan (editable)
Change mappings to neutral role labels ('the systems team'/'System A'), add a verify_clean assertion rejecting name-shaped replacement tokens; add an always-present footer identifying the operating brokerage + license on public/coming-soon templates.
Not started
mediumMulti-city network-G27 · Image LCP/perf, no srcset/WebP, portrait crops, and unmeasured hero grid~3 days
Plan (editable)
In icosa_image_batch.py cap long-edge at 1920px + generate an ~800px srcset variant, enforce landscape (reject/center-crop portrait), emit srcset/sizes in the template, and add IntersectionObserver impression + img load/error + web-vitals (LCP/CLS) beacons on the card grid.
Not started

Sources this page is grounded on

  • data/multi-city network-90day-sprint.json (27-gap council review, 2026-07-17)
  • .claude/scratchpad.md (Multi-city network council review + Day-1 lead form entries, 2026-07-17/18)
  • hosting service-deploy-20260503/functions/api/multi-city network-lead.js (live lead-capture endpoint)
  • hosting service-deploy-20260503/multi-city network/*.html (64 live corridor pages) + thedomaine-designs/cities.json (93 city records)
  • memories/knowledge/multi-city network-structure.json, config/multi-city network-cities.json (network structure)
  • Live probes: thedomaine.ai apex/multi-city network/houston = HTTP 200; resources.thedomaine.ai = 'Coming Soon'
Saved