The Prestige site is a full rebuild of The Neuman Group's real-estate website, built as a private preview at prestigen.letaibuildit.com. The plan: build the whole thing next to the live site, let Dan review every page, then swap it in. The live sites (neumangroupre.com and the internal REmined tool set) are untouched.
The build ran on Dan's review notes. Dan marked up all 9 "doors" (main sections) of the site — 74 notes total, stored server-side and used as the build queue. A separate handoff then built 14 reserved tools to fill every empty tool slot. As of 2026-08-04: all 9 doors have real content, all 14 reserved tools are live, and a full site audit ran and its defects were fixed the same day (audit + fix log: site-walk-20260803.html).
The core promise: a visitor who clicks anything stays on this site, on a page that exists, fed by this site's own API — nothing leaks back to the old sites. The audit verified this: 0 off-site API calls, 0 broken pages, and the site's guard script clicks all 122 live tool buttons and confirms each opens what it promises, signed out.
Server: Contabo VPS 209.126.85.12 (mounted as the W: drive on Dan's machine).
The whole project is one git repo: /opt/apps/prestige-neuman/
| Thing | Location |
|---|---|
| Web root (all 204 served pages) | /opt/apps/prestige-neuman/web/ |
| Generator scripts (make every page) | /opt/apps/prestige-neuman/build_*.py (~30 scripts) |
| Master tool inventory — the one list of all 110 tools | build_tools_map.py → TOOLS (name, pitch, audience, door, gate tier, url, host) |
| Editing rules ("read before you touch") | /opt/apps/prestige-neuman/WORKLOG.md |
| 14-tools handoff spec | /opt/apps/prestige-neuman/FOURTEEN_TOOLS_HANDOFF.md |
| Copy scripts (bring tools onto this site) | pull_tools_local.py · pull_from_remined.py · pull_neuman_pages.py |
| Link fixer (retargets dead links, wired into pulls) | fix_links.py |
| Nav swapper (old-site menus → Prestige doors) | prestige_navswap.py |
| Guards (verify buttons and doors) | check_pages_match_tools.py · check_door.py |
| Nginx site config | /etc/nginx/sites-enabled/prestigen.letaibuildit.com |
| Appraisal plan generators | build_appraisal_buyer.py / _seller / _investor / _partner.py |
| Shared front-end JS (not generated — edit direct) | web/_auth.js (accounts) · web/_addrsearch.js (address search) · web/_nav.js (injected nav) · web/_shared.js |
| URL on the site | Port | Code | Job |
|---|---|---|---|
/api/… | 25062 | /opt/apps/bk-fl-calc/app.py + auth_api.py | Accounts (signup/login/forgot/reset), saved homes, leads, telemetry |
/api/re/… and /static/… | 25092 | REmined backend (/opt/apps/remined/) | The property data: listings, parcels, comps, maps |
/notes/api/… | 25106 | prestige-notes service | Dan's 74 review notes — the build queue |
web/ is hand-edited — each carries a
"GENERATED BY" or "COPY, pulled by" comment naming its script. Edit the script, re-run it. A
hand-edit would be silently wiped on the next build (WORKLOG Rule 1).build_pages.py and the per-door branch scripts
(build_invest_branch.py, build_taxes_branch.py, …)./opt/apps/remined/static/ →
copied to the Neuman site (/opt/apps/neuman-site/web/, ng_ prefix) → pulled here by the
pull scripts. Originals are never modified.fix_links.py retargets any link that
would 404 here (old flat URLs → the real local page, or the Prestige door that owns the topic), and
prestige_navswap.py swaps the old site's menus/branding for the Prestige nav.check_pages_match_tools.py clicks all 122 live
buttons across 201 pages and fails if any button doesn't open what its label promises, signed out.Gate tiers across the 110 tools: 44 open to everyone · 18 signup · 31 client · 9 agent · 8 house-only.