At a glance
- AI usage, cloud cost, product, support, and CRM data from 20+ systems unified into BigQuery
- A COGS model giving true cost per minute across 12 vendors and 5 cost categories
- A CSM health dashboard that flags silent and frustrated accounts before anyone has to ask
This AI voice agent company sells call minutes, billed against AI and cloud infrastructure from a dozen separate vendors, across two regions, to 85 active accounts. The team could see the bills coming in and the accounts logging in. They could not see what a single call actually cost, or which of those 85 accounts were quietly heading for the door.
Their individual tools worked well. OpenAI, ElevenLabs, and Deepgram each billed cleanly in their own portal. PostHog tracked engagement. Pylon held support conversations. But nothing connected them, and pricing decisions were being made without knowing the real unit economics behind a single minute.
The Problem
With Cost and Health Spread Across 20 Systems
As the vendor stack and customer base grew, so did the difficulty of answering two questions at once: what does a call actually cost, and which accounts are at risk before the renewal conversation. CSMs managed 85 accounts with no shared view of utilization, engagement, or sentiment.
These are not exotic questions. They are standard questions for any usage billed SaaS managing margin and churn at scale, but twelve vendor portals and a dozen product systems could not answer them without manual CSV work every time.
Every system the business relied on, connected into one warehouse:
| Domain |
Sources |
What we track |
| AI and Voice Usage |
OpenAI, ElevenLabs, Deepgram, Soniox, Gemini, LiveKit, Twilio |
Tokens, TTS and STT minutes, telephony usage |
| Cloud Cost |
GCP, Azure, AWS |
Infrastructure spend by service, region, environment |
| Product and Support |
PostHog, Pylon |
Engagement, support tickets, AI derived sentiment |
| Sales and Revenue |
HubSpot, Gong |
Deals, renewals, payment status, call recordings |
The data existed. The problem was connection, and in this case, data residency. Two regions meant sensitive fields could not simply move to one server and get joined like any other warehouse build.
Why the Standard Answer Did Not Fit?
The instinctive response is to hire a data engineer, pull the vendor bills, and build a COGS spreadsheet by hand. That works for some teams, but a hire takes months to ramp up and still cannot solve in region tokenization across US and EU on their own.
This team did not need a headcount. They needed an architecture that could extract and tokenize sensitive data inside each region before anything moved, built by a team that had solved this exact problem before.
What Vero Built?
The architecture we deployed runs on one constraint: sensitive fields get tokenized inside each region before any data leaves, then everything merges into one warehouse.
- dlt connects all 20+ sources, from vendor bills to PostHog to Pylon, with schema evolution and row count checks on every run
- Dagster runs three deployments, US, EU, and legacy, handling in region tokenization before the cross region merge
- BigQuery is the single warehouse where cost, product, and CRM data live side by side
- dbt joins twelve vendor bills into true cost per minute by category, environment, and customer segment
- Hex serves a COGS dashboard for finance and a CSM health dashboard for customer success, with reverse ETL pushing updates back into Pylon and Linear
Every pricing and renewal decision now starts from a real number, not a spreadsheet estimate.
How the Rollout Happened?
The engagement moved in three stages.
- Discovery: mapped all 20+ systems across two regions, defined the cost categories that mattered, and agreed on what silent and frustrated actually mean
- Warehouse setup: in region Dagster deployments stood up in US and EU, tokenizing sensitive fields before the central merge into BigQuery
- Dashboards live: dbt models built incrementally, starting with COGS by vendor, then expanding into the CSM health cards and reverse ETL back into Pylon
The full stack was live and in daily use within the week.
What Changed for the Team?
The difference was not subtle.
Before, the team priced calls without knowing their true cost, and CSMs found out an account had gone quiet only at the renewal conversation. Frustration sat unread inside Pylon Slack threads until it had already become a churn risk.
- Cost per minute is visible across 12 vendors and 5 categories, grounding every pricing decision
- Silent accounts, no activity for 14 plus days, surface automatically before a CSM has to look
- AI derived sentiment from Pylon flags frustrated accounts without anyone reading every thread
- Renewals are managed 180 days out, with utilization and payment status visible the whole time
Nobody on the team manages infrastructure. Three Dagster deployments keep the regions compliant while the company still works off one unified view.