Two patterns, one engagement
Pattern 1: Operations dashboard
A single web URL on your domain. Auth-gated (just you and the people you list). Pulls live from your data sources every 5 minutes. Mobile-friendly so it works from a phone in the parking lot.
Common metrics: revenue today / week / month, average ticket, top SKU, oldest unpaid invoice, churn this month, open work orders, drawer overage.
Pattern 2: Scheduled report generator
"Email me the weekly summary every Monday at 7 a.m." Same data as the dashboard, rendered as a clean PDF (or HTML email) and dropped in your inbox on schedule. Includes a deep-link to the live dashboard for anyone who wants to dig in.
Common cadences: daily 6 a.m. operations brief, weekly Monday 7 a.m., end-of-month financial summary.
Most operators want both. The dashboard is for "I have 30 seconds, what's up?". The scheduled report is for "I have 10 minutes with my coffee, walk me through it." We build them together; the second is mostly the cost of the first.
Data sources I integrate with regularly
- QuickBooks Online — invoices, payments, AR aging, P&L, customer balances. OAuth + scoped read-only.
- Stripe — charges, refunds, subscriptions, churn, MRR breakdown. Read-only API key.
- Square / Toast / Clover / Lightspeed — transactions, employee shifts, item-level sales, voids/refunds.
- Google Sheets — the unofficial database half of small businesses. Service-account read access.
- Google Workspace / Microsoft 365 — shared inboxes, calendar load, document modification.
- HubSpot / Pipedrive / Salesforce / Zoho — deal pipeline, stage conversion, owner-by-owner load.
- Mailchimp / SendGrid / Postmark — campaign performance, bounce rates, unsubscribe trends.
- Custom MySQL / Postgres / SQLite — whatever your existing systems use.
- Webhook-fed sources — if your tool can POST a webhook, we can ingest it and chart it.
How a dashboard build runs
- 60-90 minute scoping call (free). What metrics matter, where the data lives, who needs access, what the dashboard should NOT include.
- Wireframe + estimate. Mockup of the dashboard layout, list of data sources I'll connect, fixed-price quote with NTE cap. You approve before any production code.
- Build (1-3 weeks typically for a single dashboard). Weekly demo on a staging URL you can poke at. Findings logged, scope changes go through written change-order.
- Launch + 30-day support. Production deploy on your domain (e.g., dash.yourbiz.com), runbook handoff, credentials handed over. 30 days of bug fixes included.
- Optional retainer ($95/hr capped monthly) for ongoing changes after launch.
Pricing for dashboards
Single-source dashboard: from $1,500. One data source (e.g., just QuickBooks), 5-7 metrics, mobile-friendly, hosted on your domain. Most one-source dashboards land between $1,500 and $2,800 depending on the source's API quirks.
Multi-source dashboard: from $4,500. Three or more data sources normalized into one view, with the scheduled-report add-on. Most multi-source builds land between $4,500 and $7,500.
- Source code in your git repo from day one. Architecture diagram + 2-page runbook in plain English.
- Hosting on your domain. Most dashboards run for $5-15/month on Netlify + a small backend on the TCG fabric.
- Verified nonprofit code TCG26FREE applies to design + labor. Hosting + third-party API costs not included.
Common questions
Can I add a metric later?
Yes. The dashboard is built so adding a new metric is a small change — usually a 1-2 hour retainer call. Bigger restructures (new data source) get a quick scope first.
What if my data source's API changes?
Most APIs version (v1, v2, etc.) and give 6-12 months of deprecation warning. The 30-day post-launch support catches anything immediate; long-term API migrations get a small change-order. The retainer covers this; without it, billed per-incident at $95/hr.
Can my employees see the dashboard?
Yes — auth is per-user, and you decide who has access. Common patterns: owner sees everything, managers see their location, employees see only their own metrics.
What if I change POS systems?
The dashboard is built with the data layer separated from the rendering layer. Swapping POS = swapping the connector. Usually a 1-week change-order.