I build data platforms people can ask questions of, and trust the answers.
Principal Data Engineer at Dose Daily. Eight years building cloud data infrastructure on BigQuery and Snowflake for small, fast-moving teams: vendor migrations, cost control, and AI analytics with guardrails.
An example of how a governed question runs
AskCancellations last month, by plan?
SELECT plan, COUNT(*) AS cancellations FROM subscriptions WHERE cancelled_at BETWEEN @month_start AND @month_end GROUP BY plan
- Read-only: SELECT statements only
- Partition filter present
- Dry run is inside the scan budget
- Metric matches the approved definition
Recent work at Dose Daily
- Oliver, a governed AI analyst
- Leaders ask business questions in Slack or a web app and get validated, read-only answers from BigQuery. Includes a metric library, specialist agents for retention, acquisition, churn and funnel, and an approval step for new metric definitions.
- BigQuery MCP server
- A production Model Context Protocol server with a read-only SQL guard and schema discovery, so analysts get safe AI access to the warehouse.
- Leaving a pipeline vendor
- Led the move off Hevo to a native Shopify-to-BigQuery pipeline, with parallel validation and cutover runbooks.Cloud Functions, Polars, partition-scoped MERGE
- Customer data platform
- Primary engineer on a warehouse-first customer data platform, working with the dev team: Dataform marts, reverse ETL into Klaviyo and Iterable, and RudderStack Profiles monitoring.
- Subscription migration
- Led the move from StayAI to Skio for subscription management.
- Retail partner ingest
- Designed an ingest from a partner file service through Cloud Storage into BigQuery: 61 reports into 13 tables, with MERGE logic, data-quality checks, and Slack alerts.
Results at Seed Health
| What I did | Result |
|---|---|
| Replaced Fivetran with a custom pipeline | Pipeline budget down 50% |
| Renegotiated the Snowflake contract and tuned usage | Committed spend down 60%+, plus an extra year at no cost |
| Automated dependencies in Apache Airflow | Manual intervention down 70% |
| Added monitoring and Slack alerts through the dbt API | Critical job failures down 50% |
| Wrote scripts to convert Snowflake SQL into dbt models | Analyst time down 60% during the migration |
| Generated a data dictionary with Snowflake Cortex | Stakeholder back-and-forth down 40% |
Experience
- Nov 2025 to now
- Principal Data Engineer, player-coachDose Daily, remote
- Jul 2023 to Oct 2025
- Senior Data EngineerSeed Health, remote
- Jan 2021 to Jul 2023
- Python Data Engineer IIFortune Magazine, New York
- 2018 to 2020
- Data Scientist, Data Engineer, Software Engineer IIGradio, CarOpp, Cognizant
- 2021
- M.S. in Applied StatisticsThe City University of New York, GPA 3.96
Blog
Posts on this site, and older technical notes on Medium. All posts or follow by RSS.
- What we refused to let our AI analyst do
- How a read-only analyst on BigQuery got its design from a list of things it would never do. October 2026.
- Scheduling ETL jobs on AWS
- How to automate data extraction jobs that run on EC2. August 2021.
- Python environments with GitHub Actions
- Automating checks on a GitHub-hosted project so pull requests stop breaking the code. January 2021.
- Multiprocessing and pickle
- Fixing serialization errors in multiprocessing code, including the dill package. December 2020.
Tools I work with
Cloud and warehouses. Google Cloud Platform (BigQuery, Cloud Functions, Cloud Run, IAM), AWS (EC2, S3, RDS), Snowflake including Cortex.
Engineering. Python, SQL, Polars, Spark, Apache Airflow, dbt, Dataform, Apache Kafka, Docker, CI/CD.
AI and governance. MCP servers, governed AI analytics, IAM governance, data quality, data modeling.
Customer data. Segment, RudderStack, Mixpanel, Klaviyo, Iterable, Shopify, Skio, Gorgias.