TESWA — REAL ESTATE EXPANSION · THE PHASE PLAN

Ten phases, each with a gate

Nothing skips its gate: every phase ends with something you review live and confirm — same rhythm as everything we’ve shipped. Design-heavy surfaces (ad page, create flow, offices, home) go through «أفكار» option rounds. The standing rule across all ten: cars must not feel a thing until you flip the switch.

0

Workspace + decisions

Done

This workspace: the decision board (50 questions, saved server-side), this plan, and the technical blueprint.

Gate: You finish the board (36/36) and we lock the plan together.

1

The category spine

Done

A category tag on every ad (all existing ads stamped as cars), every count/cap/server job learns to filter by category, property vocabulary space prepared. No visible change anywhere.

Gate: PASSED 2026-07-29: 36-check diff gate (34 pass, 2 explained drifts, 0 fail) + cap equivalence on all 26 sellers + full E2E (paid publish, clone, bump, favorite, archive/restore — category rode every path).

2

Property vocabulary + admin

Done

The nested per-category dictionary (your B4), property types + purposes + rent periods (صيغة الإيجار), the محافظة/منطقة/قطعة structure, التصنيف, per-type detail sets; admin category scoping; property packages + bump configuration screens.

Gate: PASSED 2026-07-29: dictionary migrated nested (19 lists deep-equal, flat frozen), 80 districts + full RE vocab live in admin, money screens ready, 28-agent adversarial review — all 15 confirmed findings fixed (money threading, script safety, editor). Prices were seeded 2026-07-29 by copying the cars numbers as TEST values (0/5/10/15 KWD) — tune them in admin whenever you want.

3

Property browse + search

Done

The property search page: filters (type, purpose, area, size, rooms…), its own search index, counts, saved searches with a category stamp — plus the Zillow/Airbnb-style map browse (your I2) and the site’s web-push channel (your H2) so «ننبهك بالجديد» becomes real.

Gate: PASSED 2026-07-29: property search index + browse page + Zillow-style map (80 verified district centroids, editable in the dashboard) + browser notifications — all LIVE and PUBLIC since the 2026-07-29 launch — browse is at teswa.net/realestate/browse (Phase 8 moved it; /realestate is now the property home). Saved searches on the site can finally alert (they never could before — the alert job needed a field the site never wrote). 33-agent adversarial review: 13 confirmed findings, all fixed, including two that could have frozen every notification job.

4

The property ad page

In progress

The property listing page: gallery, price (د.ك or د.ك/شهر), details, contact — designed fresh for property.

Gate: OPTIONS READY 2026-07-29 — waiting on YOU: five directions built from measuring real portals, live at teswa.net/listings/TW-1001405?preview=1 (the «أفكار» rail, 0-5): 1 الوثيقة · 2 اللوحة · 3 المنطقة · 4 الهدوء · 5 الأرقام. Tell me which to keep and I hardwire it.

5

«اعرض عقارك» create flow

In progress

The property sell wizard: type-aware steps, photos, pricing, publish gates wired to property packages and the free limit.

Gate: WORKS, NOT FINISHED 2026-07-29: the wizard is live, the steps follow the type, and BOTH doors are open. Free: a real ad published end to end (TW-1001423 — land, NO photos, live). Paid: the packages are selectable, the charge runs through the real gateway, and the ad is BUILT by the server only after the money captures — nothing paid, nothing created. Verified on the live server, 43 checks green, including that a car ad cannot buy a property package and the reverse, that الدور and عمر البناء survive the trip, and that a car publish still behaves exactly as before. Also new: an office with no active subscription is now stopped at the door instead of publishing free. STILL OPEN: the «أفكار» design round for this flow.

6

المكاتب العقارية

Done

The office directory + office profile pages, office stock records (property-type tallies), approval flow in admin.

Gate: PASSED 2026-07-29: /offices + /office/[uid] live with property-type tallies, and a real office was taken through the whole flow on prod — applied (invisible while pending), then approved, then appearing in the directory and on its own page. A business belongs to ONE world, enforced in code. A design round is still available if you want one.

7

Accounts & the switcher

In progress

The category switcher (header + mobile), first-visit chooser, buyer tools scoped per category, «إعلاناتي» per category, business cockpit for offices, office subscriptions live.

Gate: PASSED 2026-07-29: the switcher (every screen size), the first-visit chooser, and the nav/footer/sell-button following the world — plus what I had missed and then built: المفضلة / البحث المحفوظ / المشاهدات and «إعلاناتي» now show the world you are in (E2/E3), and /business follows the BUSINESS own world with «إدارة العقارات» and «أضف عقار» (E4). Office subscriptions wait on your property pricing.

8

Home + copy + SEO

In progress

The property home, the ~470-word «سيارة» copy sweep, property URL tree, sitemap, share cards, the new brand line.

Gate: RE-OPENED 2026-07-29. The property home, the landings and the SEO tree are real and the sweep DID work where it ran — «سيارة» fell from ~470 across 96 files to 257 across 81. But the claim that it covered every screen rendering in both worlds is false: «حسابي» renders in both and is still cars throughout — «اعرض سيارتك», «مخزون السيارات», «تم بيع هذه السيارة», a car icon on «إعلاناتي». That is the exact thing you found by clicking. Tracked as AUD-1.

9

Hardening + launch

Done

Category stamps verified on stats/analytics/orders, notifications copy, full end-to-end of both categories (buyer + seller + office + admin), then the switch flips on.

Gate: LAUNCHED 2026-07-29 — you said «open it now» and I ran scripts/re-launch.mts --open. The property world is PUBLIC: /realestate, browse, types, offices and every landing answer without a flag, the property tree is in sitemap.xml (97 URLs) and the noindex is off. Cars proven untouched: 8/8 API probes identical, 231 cars unchanged, zero property leakage. Roll back any time with --close, though Google has already crawled it. NOT hardened: the compliance audit found 20 broken decisions still open — see the audit page.

🔧🧪