
Astrodata & AvoMD
About AvoMD
AvoMD is a healthcare technology company building AI tools for clinical decision support, led by a team that includes practicing physicians. Fresh off a Series A raise, the company needed its data infrastructure to grow up alongside its business. The goal was the ability to answer two questions with confidence: what is AI usage actually costing us, and who are our genuinely active users?
The Challenge
AvoMD had outgrown Mixpanel. It had gotten the company to a good starting point, but as Nate, AvoMD’s Head of Data Analytics, put it: “There’s a lot of black holes within Mixpanel that we’re struggling with, even just being able to dig into the data ourselves.” Post-Series A, with board members and investors asking sharper questions, AvoMD needed a stronger foundation of metrics, important to scale with the business, not just report on it.
In addition, there was a second, client-facing dimension. AvoMD’s own healthcare clients were increasingly interested in their usage data, but Mixpanel only supported static, view-only dashboards. AvoMD wanted to give clients the ability to explore their own data: filter it, change time periods, dig in themselves.
As Mordechai, AvoMD’s CMIO, framed it, this wasn’t just a tooling swap: “We’re at the precipice of reinvigorating and redoing all of our analytics… almost like a total reset.”
The Approach
Astrodata scoped and delivered a joint Snowflake + Omni implementation built around three goals:
- 1
A data platform foundation: reference architecture and documentation designed to make future iterations faster, not just solve immediate-term use cases
- 2
Two priority use cases, fully built: AI cost tracking (token consumption, and cost by model, product, and org) and a formal, reproducible definition of onboarded/active users
- 3
A structured handoff: documentation and prioritized recommendations for future use cases (identity resolution, session tracking, retention, revenue analytics), built for AvoMD’s incoming analytics engineer to pick up and run with
Where the real work happened
The project’s technical center of gravity shifted early. The original plan assumed AI usage data lived in AvoMD’s Postgres application database. It didn’t! A gap between AvoMD’s analytics and engineering teams meant the real event-level data was in Mixpanel, and Mixpanel’s interface couldn’t expose it at the granularity AvoMD needed (including parsing raw JSON event data for token-level cost).
This significantly expanded the technical scope beyond what was originally contracted. Rather than pause the project to negotiate a change order, Astrodata’s team chose to absorb the additional work and keep momentum. Astrodata prioritized AvoMD’s timeline and the long-term partnership over short-term margin on this engagement. The team built a foundational data model joining three previously disconnected systems:
- HubSpot — customer/organization data
- Postgres — the system of record for users
- Mixpanel — granular product usage and AI cost events
Connecting them took some creative engineering: mapping email domains from Postgres to HubSpot accounts, then using Postgres as the hub to link those users to their Mixpanel event history.
On infrastructure, the team also:
- Evaluated ETL and transformation tooling against AvoMD’s cost, maintainability, and portability needs (ultimately implementing dbt Core inside Managed Workflows for Apache Airflow, avoiding the added cost of a separate dbt Cloud environment)
- Used Snowflake OpenFlow to stand up ingestion from Postgres and HubSpot
- Implemented Snowflake RBAC and PHI column masking, centralizing security and compliance controls in Snowflake rather than spreading them across tools — keeping AvoMD’s HIPAA posture simple to maintain
- Connected Omni to Snowflake with a semantic layer, enabling both internal dashboards and a client-facing embedded dashboard with row-level security — replacing Mixpanel’s static, view-only experience with something AvoMD’s own clients could explore themselves


- MayOriginal plan
- Mid-projectScope expands
- JulyDelivered
- The original plan assumed AI usage data lived in AvoMD’s Postgres application database.
- Rather than pause the project to negotiate a change order, Astrodata’s team chose to absorb the additional work and keep momentum.
- Despite the mid-project scope expansion, Astrodata delivered within the original May–July timeline.
The Outcome
Despite the mid-project scope expansion, Astrodata delivered within the original May–July timeline. AvoMD came away with:
- A unified, SQL-queryable data model spanning HubSpot, Postgres, and Mixpanel
- Token-level, JSON-granular visibility into AI cost (impossible in Mixpanel’s native UI)
- A documented, defensible definition of active/onboarded users, built for board and investor scrutiny
- A client-facing, self-service Omni dashboard with proper row-level security, replacing static Mixpanel reports
- A clean, documented handoff to AvoMD’s incoming analytics engineer, with a prioritized roadmap for what comes next
- What is AI usage actually costing us?
Token-level, JSON-granular visibility into AI cost (impossible in Mixpanel’s native UI).
Token consumptionBy modelBy productBy org - Who are our genuinely active users?
A documented, defensible definition of active/onboarded users, built for board and investor scrutiny.
FormalReproducibleOnboarded/active
| Dimension | Before | After |
|---|---|---|
| Client dashboards | Static, view-only dashboards | A client-facing, self-service Omni dashboard with proper row-level security |
| AI cost | Impossible in Mixpanel’s native UI | Token-level, JSON-granular visibility into AI cost |
| Data model | Three previously disconnected systems | A unified, SQL-queryable data model spanning HubSpot, Postgres, and Mixpanel |
| Active/onboarded users | Board members and investors asking sharper questions | A documented, defensible definition, built for board and investor scrutiny |
| Security & compliance | Controls spread across tools | RBAC and PHI column masking centralized in Snowflake |