Skip to content

The big-picture systems map

Everything we run, on one page. Follow the money: ads → website → lead → job → payment → reconciliation.

flowchart TD
subgraph AC[1 · Acquisition]
direction TB
ADS[Google Ads<br/>3 location accounts under one MCC] --> SITES
ORG[Organic / GBP] --> SITES
SITES[Marketing websites<br/>9 brand sites on Cloudflare Pages]
end
SITES -->|Quote form submit| NOTIFY
subgraph LD[2 · Lead delivery]
direction TB
NOTIFY["/api/notify Cloudflare Function"] --> EMAIL[Email to shop inbox<br/>via Resend]
NOTIFY --> PODIUM[Podium contact + welcome text<br/>first name only]
NOTIFY -.-> LEADDB[Lead storage<br/>webhook upsert by lead_id]
end
EMAIL --> OPS
PODIUM --> OPS
subgraph OD[3 · Operations — BCB Glass Ops dashboard]
direction TB
OPS[Intake: lead becomes a job] --> SCHED[Schedule + assign tech]
SCHED --> WORK[Work complete<br/>payment preference gate]
WORK --> PAY[Record payment]
PAY --> DRIP[Review drip texts]
WORK -.-> WARR[Warranty visit<br/>if issue reported]
end
PAY --> EOD
subgraph MO[4 · Money]
direction TB
EOD[End-of-Day tech payout] --> CHASE[Chase bank + credit card]
CHASE -->|Plaid daily pull| LEDGER[Bank ledger<br/>weekly reconciliation]
ROAS[ROAS report<br/>ad spend vs booked revenue and profit]
end
PAY --> ROAS
ADS -.->|Daily metrics pull| ROAS
  1. Acquisition — Google Ads and organic traffic land on one of the 9 marketing sites. Each site’s business data (phone, hours, service areas) lives in one config file.
  2. Lead delivery — a form submit instantly fires an email to the shop inbox and a Podium welcome text, and stores the lead. No Slack, anywhere. Details: lead flow.
  3. Operations — the ops dashboard takes the job from intake through scheduling, completion, payment, tech payout, and review requests.
  4. Money — every dollar is accounted for: Plaid pulls Chase transactions daily, the team reconciles weekly, and ROAS ties ad spend back to booked profit per location.