RELAY COMMERCE
90 days, three products, zero engineers.
90
Days
844
Commits
10
Live Sources
0
Engineers
Three Products, One Queue
I joined Relay Commerce as General Manager in May 2026, carrying a $2.6M ARR P&L across three products. The first thing I asked for was a list of every customer across all three. Getting one meant joining a queue.
That is not a criticism of the data team. They were competent and heavily oversubscribed, working through a backlog that had been building for two years. The problem was structural. Every request for a new cut of the data joined that queue, and by the time it came back the decision had usually been made without it. So I built the view myself rather than waiting for it.
Relay Commerce
3 products, $2.6M ARR
General Manager
None requested
The Stack
One repo, one pipeline, one dashboard. Built alongside the day job rather than instead of it, in the gaps between the meetings the job is actually made of.
Ingestion
Roughly 20 sync jobs pulling from ten live sources: GA4, PostHog, Redash, Stripe, Shopify Partner, Intercom, HelpScout, Customer.io, Ahrefs and Sheets. 138 Python scripts, all version controlled, all read-only.
Store
About 30 Postgres tables with row-level security on every one. 177 migrations. A dedicated analytics store, never the production app databases.
Surface
38 pages, around 70,000 lines. Sales, product, support, finance and engineering views, each built with the person who would use it rather than from a spec.
Loops
A customer health worklist that assigns at-risk accounts to a named owner and notifies them in Slack. The dashboard stopped being a place people had to remember to visit.
Knowledge
484 versioned notes syncing to the app on every commit, so the context behind a number travels with the number.
| Live KPI dashboard | 844 commits since May 2026 · 38 pages · ~70K lines · 177 migrations |
| Data pipeline underneath | ~20 sync jobs · ~30 Postgres tables · 138 Python scripts |
| Live sources wired | GA4 · PostHog · Redash · Stripe · Shopify Partner · Intercom · HelpScout · Customer.io · Ahrefs · Sheets |
| Knowledge base | 484 versioned notes, synced to the app on every commit |
| Deliverables shipped | 64 branded documents in 3.5 months |
| Engineers involved | 0 |
844 commits since May 2026 · 38 pages · ~70K lines · 177 migrations
~20 sync jobs · ~30 Postgres tables · 138 Python scripts
GA4 · PostHog · Redash · Stripe · Shopify Partner · Intercom · HelpScout · Customer.io · Ahrefs · Sheets
484 versioned notes, synced to the app on every commit
64 branded documents in 3.5 months
0
By People Who Did Not Have To
The strongest signal was not the build. It was that people with no obligation to use it asked for their own version.
The CEO took the agent demo
A live walkthrough with the CEO and another GM led to a directional decision to make the agent surface the company's business-side interface, rather than a one-team experiment.
The AI initiative adopted the security model
The lead of the company AI initiative asked for a full walkthrough of the stack, then moved to adopt the read-only token hygiene as the reference for company-wide AI guardrails.
The data team asked for the prototype
Rather than treating it as a competing source, the data team requested the prototype so they could replicate the views that had proven useful.
Another division asked for its own
The retention side asked for the same treatment, which turned four meetings in one day into four new sections of the dashboard.
The Objection, Answered First
One person building on production-adjacent data is a bus factor and a security surface. That objection is fair and it came up in week three. Leading with the answer, rather than defending afterwards, is what turned it from a blocker into a credential.
Every read runs through version-controlled scripts behind a read-only guard. The pipeline reads the products and cannot write to them.
Least privilege throughout. Reporting layers and a dedicated analytics store, never production app databases. Restricted read-only Stripe keys and a read-only Shopify Partner token.
Row-level security on every table, and no direct database access from the browser.
Agents scoped to named tools, with output landing in a queue a human clears.
Built to hand over. The repo moved to the company org, and the position taken in the room was that this is a company asset, take it over whenever, I just want to keep evolving it.
And What It Did Not Replace
Ninety days, no engineering headcount, and no budget line. What it bought was speed: a directional number this week instead of a perfect number next quarter.
It does not replace the data team, and it was never meant to. Reconciled month-end figures still come from them, and they should. What it replaced was the wait, and the wait was the thing costing decisions.
SEND ME YOUR KPI DEFINITIONS
I will tell you which two are lying. It takes about an hour.
START A CONVERSATION