Real-time dashboards & data products
Live data that tells you when it is stale.
We build dashboards and data products on top of feeds that change by the minute: scheduled imports, settlement runs, analytics and live grids of thousands of rows that stay responsive. Every figure carries its source and its age, so nobody acts on a number that stopped updating an hour ago.
What clients arrive with
- Our dashboard freezes when the dataset gets large.
- We cannot tell whether the number on screen is five seconds or five hours old.
- Our data vendors disagree and someone reconciles them by hand.
- The Monday report is rebuilt manually every week.
- Jobs fail overnight and we find out from a customer.
What you get
- Ingestion and scheduled jobs
- Pulls, syncs, backfills and settlement jobs on a cadence that matches the source. Holdrate refreshes subscribed workspaces every hour in bounded batches, from a cron pinned beside its London database.
- Grids that stay fast at scale
- Virtualised tables painted imperatively where React re-renders would be too slow, so thousands of live rows keep filter, sort and keyboard search responsive.
- Freshness you can see
- Per-source health shown as age and coverage. A row turns amber when it is older than 1.5 times its source's refresh interval and red past three times.
- Reconciliation across sources
- One identity per entity across vendors, and a confidence level on each value that says whether sources agreed, only one answered, or the figure is a shadow value kept for comparison only.
- Analytics products for end users
- Analytics users pay for: Holdrate shows which paying members went quiet for 7 or 14 days and the monthly plan value exposed, from rules a creator can check.
- Reporting loops
- Daily pulls from Search Console and GA4 or PostHog into Postgres, with equal-window comparisons instead of hand-built weekly reports. Each pull is checked for completeness before it is compared.
- Operational checks
- Validation jobs, webhook health checks and alerts that fire when a scheduled job stops producing, before a customer notices.
How the work runs
Inventory the sources
Cadence, latency, reliability, licence terms and failure behaviour for every feed, written down before any code.
Normalise identity
A common key for each entity across vendors, with tests for the awkward matches: renamed items, duplicates and late corrections.
Build the surface
Rendering chosen for the data volume, keyboard-first controls for people who use the screen all day, and freshness shown on every figure.
Operate it
Health checks, backfills and validation jobs go live with the dashboard, with a runbook for the day a source changes its format.
How engagements start
- Data audit first: sources, cadences and failure modes mapped, with a working prototype on live data.
- Prototype to production in 4–8 weeks for one dashboard or data product with its jobs and health checks.
- Retained operations for teams who want someone watching the pipelines after launch.
Built with
Where each number comes from
Each figure names where it comes from.
- members in the largest verified import, 25 pages
- 2,500
- Source: Holdrate: our recorded test results, 22 September 2026
- server functions for purchases, sign-in, usage data and settings
- 14
- Source: Astro Golf: counted in the project's backend code, latest development version
The work behind it
Questions, answered
Something else on your mind? hello@swiftideas.com
Do we need a streaming platform or a data warehouse?
Often not at first. Postgres with scheduled jobs and Realtime channels covers a lot of live products. We recommend a warehouse or streaming stack when volume or query patterns genuinely need it, and we show you the numbers that say so.
How live is live?
As live as the source and the decision require. Some of our jobs run every minute, some every hour, some daily. We set the cadence per source and show its age on screen.
What happens when a data source goes down?
The dashboard says so. Stale values change colour, the source health panel shows the gap, and an alert fires. We never fill a gap with estimated or sample data without marking it.
Can you work with our existing database?
Yes. We can read from your current systems and build the product layer on top, or move the data into Postgres where that makes the product faster and simpler.
Who looks after it once it is live?
You can, with the runbook we write. We also offer retained operations, where we watch the job health checks and handle source changes for you.


