At a glance
- Marketing, sales, product, and finance data from 12 systems unified into Snowflake
- A Lead to Cash model tracing every prospect from first session to paying workspace
- Trial workspaces scored by engagement, so account managers know who to call
Filed runs a product led AI tax platform. Prospects came in from ads, organic, and referrals. Trials started. Some converted, some went quiet. But the team could see neither journey end to end, not the deal moving from click to paid, and not the trial moving from signup to actual use.
Their individual tools worked well. HubSpot tracked leads and deals. Postgres ran the product. Three ad portals ran campaigns. But nothing connected them, and every product release reshuffled the Postgres schema just enough to quietly break the reports nobody knew were broken.
The Problem With Two Invisible Journeys
As trial volume grew, so did the difficulty of answering two questions at once: which prospects were actually becoming paying workspaces, and which trials were engaging with the product versus sitting idle on free credits. Account managers found out a trial had gone cold only after it already had.
These are not exotic questions. They are standard questions for any product led company managing both a funnel and a trial base, but twelve disconnected systems could not answer them without a spreadsheet built after the fact.
Every system Filed relied on, connected into one warehouse:
| Domain |
Sources |
What we track |
| Marketing |
Google Ads, Facebook Ads, LinkedIn Ads, GA4, social pages |
Spend, sessions, conversions, engagement |
| Sales and CRM |
HubSpot |
Leads, MQLs, meetings, deal stages |
| Product |
Postgres backend, Postgres AI DB, PostHog |
Workspaces, tax preps, credits, trial funnel |
| Finance |
Sequence |
Invoices, billing, subscriptions |
The data existed. The problem was connection. Without a warehouse underneath, every deploy could silently break a report and nobody would know until a stakeholder asked why the numbers looked wrong.
Why the Standard Answer Did Not Fit
The instinctive response is to hire a data engineer, connect HubSpot and Postgres, and patch the reports after each release. That works for some teams, but a hire takes months to ramp up and still has to relearn the schema after every deploy.
Filed did not need a headcount babysitting broken pipelines. They needed a foundation with schema evolution built in, owned on their own Azure cluster, by a team that had built this exact funnel before.
What Vero Built?
The architecture we deployed runs on one constraint: every source lands in one warehouse automatically, and a product deploy should never break a downstream report.
- Fivetran runs low maintenance managed connectors for all 6 marketing and analytics sources
- dlt connects Postgres and HubSpot with schema evolution, so new columns never break a report again
- Snowflake is the central warehouse, queryable by any tool the team already uses
- dbt Cloud builds the Lead to Cash model, joining ad spend through HubSpot deal stages to active, billing workspaces
- Dagster on Azure AKS orchestrates every pipeline with retries, and automated Slack alerts fire when spend metrics cross decision thresholds, so the team acts before inefficiency compounds.
Every metric now has one definition, whether marketing pulls it, product pulls it, or finance pulls it.
How the Rollout Happened?
The engagement moved in three stages.
- Discovery: mapped all 12 systems, defined what a qualified trial actually looks like, and agreed on the Lead to Cash stages the company needed to trust
- Warehouse setup: Fivetran and dlt stood up and validated, with schema evolution tested against a live Postgres deploy before launch
- Dashboards live: dbt models built incrementally, starting with Lead to Cash, then expanding into trial health, billing, and the adspend alert
The full stack was live and in daily use within the week.
What Changed for the Team?
The difference was not subtle.
Before, trial workspaces went quiet with no warning, and the deal journey only existed as a spreadsheet someone rebuilt after every board meeting. Product deploys broke reports without telling anyone, so stakeholders sometimes worked off numbers nobody had checked
- Trial workspaces are scored by completed versus incomplete returns, so AMs call before a trial goes cold
- The Lead to Cash journey traces every prospect from first session to paid, in one view
- Schema evolution means a Postgres deploy no longer breaks a single dashboard
- Adspend per MQL is monitored daily, with an alert before inefficiency becomes a quarter long problem
Nobody on the team manages infrastructure. Dagster retries failures automatically, and Slack tells someone the moment a pipeline actually needs attention.