Start Here
The FCR Dashboard is an internal sales & account-management intelligence platform. It pulls FCR’s data (CRM, billing, HubSpot deals, GBP, ads, search, keywords, census/area) into BigQuery, puts an AI advisor (Claude) on top, and surfaces it in three places reps already work: a web dashboard, the HubSpot deal sidebar, and Roam chat. All three are clients of one back-end.
Pick your path
Section titled “Pick your path” I'm on a team (AM, Sales, Marketing…) What the platform does for you and how to use it day to day — no code.
I'm building or operating it Architecture, the edge Worker, deploys, n8n, endpoints.
I need the data model BigQuery datasets, billing rules, HubSpot, keyword KB, maps/LRC.
I'm an AI agent Curated map at /llms.txt · everything concatenated at /llms-full.txt.
The mental model
Section titled “The mental model”Web UI (Pages) HubSpot card Roam chat ← 3 surfaces (clients) └───────────────┼──────────────┘ ▼ ONE Worker: fcr-dashboard-api ← all logic, at the edge (133 routes, Claude advisor, crons, queue) │ reads ┌───────────────┼───────────────┬───────────────┐ BigQuery Vectorize KV external/live(warehouse) (semantic search) (cache) (CRM, Google, Ahrefs, Meta) ▲ │ writes (ETL) n8n workflows (cron) + BQ scheduled queriesThree things to internalise:
- One monolith Worker does all the compute, at Cloudflare’s edge. The UI is static; Roam/HubSpot are surfaces.
- The Worker reads; n8n writes. ETL into BigQuery is owned by n8n cron jobs + BQ scheduled queries. The Worker is mostly read-only over that data.
- Precompute over live. The slow work (GBP, crawls, enrichment) is precomputed into cached “deal briefs” so reps get instant answers.
Where the code lives
Section titled “Where the code lives”| Surface | Path | Ships to |
|---|---|---|
| Worker (API + advisor + crons) | worker/src/** (entry index.js, router.js, 126 handlers/) | one edge bundle on CF |
| Web UI (React/Vite) | src/** | CF Pages (fcr-dashboard-ui) |
| HubSpot card | hubspot-extension/src/** | HubSpot UI-extension sandbox |
| Deploy + lint config | scripts/ (deploy-worker.sh, eslint config) | — |
Repo: github.com/FCR4IE/DASHBOARD. Source of truth for all three surfaces.
Quick start
Section titled “Quick start”git clone https://github.com/FCR4IE/DASHBOARD.git && cd DASHBOARD# get .env.local from a teammate (CF tokens, API keys — never committed)npm installnpm run dev # UI locallycd worker && npx wrangler dev # Worker locallyMaintained in docs/. If you change architecture, update the relevant page and the counts — they’re verified, not guessed.
Ask the docsRAG over this site
Ask anything about the FCR Dashboard platform — architecture, BigQuery, the worker routes, billing rules, the LRC stack, scoring… Answers are grounded in this documentation, with source links.
How does the deal-brief refresh work? Which routes are Worker vs n8n? How is account health scored?