samesolutionsllc-website → samesolutionsllc.com (Cloudflare Pages). A small marketing landing page + the /manage business PWA (customers, properties, jobs, quotes, invoices; localStorage + Firebase). Customer-facing.samesolutions-equipment-service → pages.dev / hub.samesolutionsllc.com (Cloudflare Pages, Access-gated). Sam's "brain": equipment guides, customer-job research, personal projects, indexes, session handoffs. Internal.samesolutionsllc-website/ +-- index.html public landing SPA (home / services / about / contact) +-- manage/ the business PWA | +-- index.html ~28k-line single-file app (data model + migrations + UI + Firebase) | +-- sw.js service worker (cache v59) | +-- manifest.json, utilities.css, icon-192/512.png +-- Firebase / deploy config | +-- firebase.json, .firebaserc, firestore.rules, firestore.indexes.json +-- activation kit | +-- ACTIVATION-RUNBOOK.md, ACTIVATION-LOCAL-RUN.md | +-- scripts/ (backup-blob.js, migrate-blob.js, set-admin-claim.js) +-- docs / tests | +-- docs/firestore-data-model.md | +-- test/isolation.rules.test.js (21/21), tests/smoke.spec.js (Playwright) +-- repo docs: CLAUDE.md, REPO.md, PLANNER.md, CHANGELOG.md +-- package.json, .github/workflows/smoke-test.yml, deploy-log.json, archive/
samesolutions-equipment-service/ +-- index.html hub home +-- sitemap.html +-- awareness-backlog.md +-- repo docs: CLAUDE? / METHODOLOGY.md, SESSION-PRELUDE.md, PRINCIPLES.md, SYSTEM-DESIGN.md, ARCHITECTURE.md, README.md +-- data/ canonical JSON stores | +-- sitemap-status.json, active-projects.json, customer-jobs.json, issues.json, | +-- my-equipment.json, where-you-are.json, customers/ (9 + _template) +-- index/ session-start pointers (equipment/*.md, personal-project/*.md, active-chats.md) +-- customer-jobs/ 8 job folders (aceves fence, lubig-sister-bathroom, peter-scott-shed, letvin, ...) +-- equipment/ 4 service hubs (fourwinns-h190, lt180, seadoo-gtx, harris-pontoon) +-- guides/ near-empty (guides moved into equipment/) +-- personal/ ~45 project folders (ai-hub/career, ddr grill, this-week, system-overview, | | status-tracker[legacy], issues, 3d-printing, ia-map[this page], ...) +-- handoff-blocks/ 200+ files (audits/, patterns/, cc-session-reports/, architecture/, scripts/, ...) +-- our/ Sam+CeCe shared +-- cece/ CeCe hub + rainhairstudio +-- jon/ mike/ abbey/ aimee/ win/ per-person portals +-- functions/ Cloudflare Workers API (auth, our/, calendar, handoff, bets) +-- bets/ sports-betting analytics hub +-- architecture/ docs/adr/ decision records +-- archive/ snapshots/ dated backups
CLAUDE.md ("Source-of-truth boundaries"). They are deliberately NOT duplicates — each owns different data:
DATA_VERSION, syncing to a Firebase blob).customer-jobs/<id>/), equipment guides, methodology, session handoffs, personal projects.samesolutions-equipment-service.pages.dev/<path>, website = samesolutionsllc.com/<path>.Most substrate "duplication" is intentional data-driven rendering (one canonical JSON → many renderers). Those are fine. The rows below flag the ones worth reviewing.
| What | Lives in | Read |
|---|---|---|
| Status / system trackers | personal/status-tracker/ (legacy) · personal/system-overview/ (current) · data/sitemap-status.json (canonical) · personal/this-week/ | 3+ tracker surfaces. sitemap-status.json is canonical; status-tracker is superseded — archive candidate. |
| Issues | data/issues.json (canonical) · handoff-blocks/issues/index.md (regenerated) · personal/issues/index.html · old status-tracker/issues.html | OK by design (JSON canonical + renderers), but the legacy status-tracker copy is stale. |
| Customer jobs | customer-jobs/<id>/ folders · data/customer-jobs.json · data/active-projects.json (cross_listed_in) · index/personal-project/ | Same job referenced in up to 4 places. Held together by cross_listed_in; watch for drift. |
| Customer records (cross-repo) | Substrate data/customers/ (9 profiles) · website /manage data.customers | Two customer stores in two repos. Biggest cross-system overlap — see suggestion P0-b. |
| Equipment | equipment/<id>/ hub · index/equipment/<id>.md pointer · data/my-equipment.json · empty guides/ | Intentional (hub + cursor + JSON). guides/ is a dead shell — archive. |
| Repo-guidance docs | Two CLAUDE.md (parent dir + website) · substrate METHODOLOGY/SYSTEM-DESIGN/ARCHITECTURE/PRINCIPLES | Several overlapping "how things work" docs in substrate root — consolidation candidate. |
Prioritized. Nothing executed this pass — each is a proposal for Sam to approve. Archive, don't delete.
personal/status-tracker/. It predates system-overview/ + sitemap-status.json and now shows stale data. Move it to archive/status-tracker-2026-06/ and point any inbound links at system-overview/. Lowest-risk, highest-clarity win.data/customers/ and website /manage. Decide: /manage (Firebase, post-activation) is the system-of-record for billing/identity; substrate data/customers/ becomes either a generated mirror or is retired in favor of the customer-jobs/ dossiers. Sequence this with the Firebase activation so they converge, not diverge. (Ties into the Firebase plan.)system-overview/ the single system dashboard and this-week/ the single personal to-do surface; everything else reads data/*.json. Document the one-canonical-each rule so new trackers aren't spawned.guides/ tree. Guides moved into equipment/<id>/; guides/ holds only a .gitkeep. Remove it as a live path (archive note) so it stops implying a second guide location.handoff-blocks/ long tail. 200+ files; many are one-off session reports. Propose an archive/handoff-blocks-<date>/ sweep for reports older than N months, keeping patterns/, protocols/, architecture/, and the current ledger live. Reduces noise in the biggest folder.