Dashboards That Tell You the Truth
Multi-source pipelines + custom dashboards that unify Stripe, CRM, ad platforms, and product data into one canonical view — and alert you when the numbers move.
We use the same data stack we ship to clients
Common situations
Where This Shows Up
Six situations where custom analytics earns its keep. The common thread: data exists; reliable insight doesn't.
You have five data sources and zero reliable dashboards.
Stripe says one number. Your CRM says another. Your accounting system disagrees with both. The board meeting is Friday. We unify the sources, define the canonical metric per dimension, and build a dashboard everyone agrees on.
Reports come from spreadsheets someone exports weekly.
Every Monday, Sarah pulls a CSV from each tool, pivots them in Excel, and emails the team. The data is 3 days stale by the time it lands. A scheduled pipeline replaces this with a live dashboard that updates while everyone sleeps.
Looker / Tableau is too expensive and your team doesn't use it.
$3,000/month for a BI tool that requires a specialist to add a chart. Sometimes the right call is a custom dashboard built on the data you actually need, hosted on your own infrastructure, that any team member can extend.
Marketing spend lives in Google Ads + Meta + LinkedIn — but you want one ROI number.
Each platform reports its own view of conversions. None agree. None attribute correctly. We build the multi-touch attribution pipeline + the dashboard that gives you one honest spend-vs-revenue number.
Your team makes dashboards in PowerPoint screenshots.
Every monthly board pack is hand-assembled. The narrative is great. The numbers are stale and someone always copies the wrong cell. We replace the data-pulling parts so the narrative still gets written but the numbers come from a live source.
You can't answer "how is the business doing?" in less than an hour.
The data exists. It's just spread across systems with no shared definition of what a "customer" or "active" means. We build the semantic layer + the dashboard that lets you answer this question in 10 seconds.
Deliverables
What's Included
Every analytics engagement ships with the same production backbone. Skipping any of these creates the dashboards that everyone stops trusting in month 6.
Metrics + KPI definition workshop
Before code, we sit with you and define every metric: what counts as a "customer," how "active" is measured, when revenue is recognized. The most expensive bugs in BI are definitional, not technical.
Multi-source data pipeline
Stripe, HubSpot, Salesforce, NetSuite, Google Ads, Meta Ads, Postgres, BigQuery — pulled into a unified warehouse. Scheduled refreshes match your decision cadence (hourly / daily / weekly).
Data warehouse setup
Postgres for small data, BigQuery / Snowflake / Redshift for analytical workloads at scale. We pick based on volume, not novelty. Schema designed with the queries you'll actually run in mind.
Transformation layer (DBT)
Raw data → staging → canonical models → mart. Documented, version-controlled, tested. When the definition of "MQL" changes, you change one model and everything downstream updates.
Custom dashboard UI
React-based, embedded in your existing app or standalone. Filters, drill-downs, date ranges, multi-tenant per-team views. Mobile-friendly so you can check the numbers from the car.
Scheduled report delivery
Daily summaries to Slack, weekly board packs as PDF, monthly cohort reports to email. Same data as the dashboard, in the form each audience wants.
KPI alerts + anomaly detection
Revenue dropped 30% overnight? Conversion rate cratered? Active users flatlined? Configurable thresholds + Slack/email/PagerDuty so you find out before the board does.
Embedded analytics for your app
If you ship a SaaS product, your customers want their own dashboards. We can embed the same infrastructure into your product as a customer-facing analytics layer.
Documentation + metric glossary
Every metric documented: definition, source, formula, refresh cadence, gotchas. Your team can self-serve answers without DM'ing the data person.
Production deploy + monitoring
CI/CD on the pipeline + dashboard, freshness monitoring (alert when data goes stale), data quality tests (alert when revenue is impossibly negative).
Process
How We Build It
Five stages. The Define step is the one most teams skip — and it's the one that decides whether the dashboard gets trusted.
Define
Metrics workshop. We write down every KPI's definition, formula, and source — and surface the disagreements before they become production bugs.
Pipeline
ELT from every source into a warehouse. DBT for transformations. Versioned, tested, scheduled.
Visualize
Custom dashboard built around your decision cadence. Filters, drill-downs, mobile-friendly. Built into your existing app or standalone.
Alert
Thresholds + anomaly detection. Slack notifications for the metrics that move quarterly decisions.
Operate
Freshness monitoring, data quality tests, runbook for when a source API changes. Your team owns it after we leave.
Comparison
How We Compare
Three paths to a dashboard. Pick by what you optimize for.
Looker / Tableau
- Setup timeWeeks
- Per-user cost$$$/seat
- Custom logicLookML / Tableau lang
- Embedded analyticsExpensive add-on
- Data ownershipYours
- Operates 5+ yearsIf you renew
Metabase / Superset (self-hosted)
- Setup timeDays
- Per-user costFree or low
- Custom logicSQL
- Embedded analyticsWorkable
- Data ownershipYours
- Operates 5+ yearsOpen-source ecosystem
Purcell Analytics
- Setup time4–6 weeks
- Per-user cost$0 ongoing
- Custom logicPython + SQL, no DSL
- Embedded analyticsNative to your app
- Data ownershipYours, in your warehouse
- Operates 5+ yearsDesigned for it
Case study spotlight
Portfolio Command Center for Consulting
How Purcell Analytics built the Autonomous AJ Command Center — a Django + FastAPI + React platform that runs portfolio-wide content pipelines, GSC monitoring, financial dashboards, and continuous project-readiness audits across every site in the portfolio.
Industry
Internal operations platform
Company size
small consulting practice with 14+ properties
Stack
Django 5.2, FastAPI, React, TypeScript
Tech stack
The Stack We Build On
We pick by fit, not by novelty. Boring, mature, well-documented wins for data infrastructure.
Data pipeline
- DBT (transformations)
- Airbyte / Fivetran (source connectors)
- Airflow / Dagster (orchestration)
- Custom Python (when off-the-shelf doesn't fit)
Warehouse
- Postgres (when small data fits)
- BigQuery (when analytical workloads grow)
- Snowflake (when you're already on it)
- DuckDB (for local + embedded analytics)
Visualization + ops
- React + Recharts / Tremor / nivo
- Metabase / Superset (when fit)
- Slack / PagerDuty (alerts)
- Sentry + custom freshness checks
FAQ
Frequently Asked Questions
Will you replace our Looker / Tableau / Metabase?
+
Sometimes — when the per-seat cost outweighs the build cost or when you need deep customization their DSL can't express. Often we coexist: Looker for ad-hoc analyst exploration, custom dashboards for the operational metrics your team checks daily. Don't replace what's working.
We don't have a data warehouse yet. Do we need one?
+
Depends on scale. If your data fits in Postgres comfortably (< 100M rows, < 1TB), keep it there. If it doesn't, we'll set up BigQuery or Snowflake. We avoid building infrastructure you don't yet need.
Can you embed dashboards in our SaaS product for our customers?
+
Yes — common pattern. Same data infrastructure, customer-scoped views, embedded in your app via iframe or React component. Multi-tenant data isolation handled at the warehouse layer.
How fresh is the data?
+
Configurable per metric. Operational dashboards (Stripe revenue, support tickets) refresh every 5–15 minutes. Strategic dashboards (cohort analysis, monthly cohorts) refresh nightly. Real-time (sub-second) is rarely worth the architectural cost; we'll push back if you ask for it without justification.
What if a source API changes?
+
DBT models + a thin adapter layer per source isolate API changes. When Stripe deprecates a webhook, you change one file. Freshness monitoring alerts your team when a source has stopped delivering data — usually within an hour.
Do you handle attribution modeling?
+
Yes — first-touch, last-touch, linear, time-decay, and custom multi-touch models. We'll set up whichever model matches how your team actually thinks about the funnel, and document the tradeoffs of each.
What about data privacy / PII?
+
Pipelines designed for compliance from day one. PII masked or hashed at ingest where it doesn't need to be in the warehouse. Per-row access controls. GDPR-deletion supported via DBT. Audit logs of every query.
Can your dashboard handle our scale?
+
We've shipped dashboards on tens of millions of events. Postgres handles surprisingly large datasets if the schema is right; BigQuery / Snowflake handle the rest. The bottleneck is usually a bad join, not the DB; we tune.
Related Services
System Integration
Dashboards need data. Integration connects the sources first; analytics is the layer on top.
Process Automation
Once you can see the metric, the next step is the workflow that acts on it.
AI Integration & Automation
AI-written narrative summaries of dashboard data — the report your CEO actually reads.
More Case Studies
AACC Portfolio Command Center
Cross-property metrics dashboard unifying analytics from 14+ websites.
QuantAIze
Custom analytics platform for AI-powered geocoding data with rich dashboard layer.
DLH Consulting — Salesforce CRM
Operational dashboards built on top of Salesforce + accounting data for daily decision-making.
Ready to See One Honest Number?
Schedule a 30-minute discovery call. We'll discuss the metric your team can't agree on + send a written approach within a week.