I build the data platforms financial institutions run their business on
- role
- Senior / Staff Data Engineer · Data Platform Architect
- domain
- Regulated financial data — credit risk, capital markets, regulatory reporting
- experience
- 21 years · 8 global financial firms · led up to 13 engineers
- currently
- Bloomberg L.P. — enterprise data-quality platform (~60% fewer incidents)
- i build
- batch + streaming · quality/observability · IaC · self-service · a live product
- strength
- Architect who stays in the code — sets the standard, then ships it
- open_to
- Senior / Staff / Principal DE · IC or lead · Data Platform Architect
I design, build, and govern enterprise-scale data platforms end to end — the batch and streaming pipelines, the quality and observability that keep them trustworthy, the infrastructure they run on, and the self-service tooling other engineers build on top. My domain is regulated financial data, where a wrong number isn't a bug — it's a trading or compliance incident, and correctness, lineage, and auditability are the whole job.
I'm a hands-on engineer first: I design, build, and ship production code every day — and I prove it in public, below. I've also carried the wider scope when the role called for it — setting engineering standards, owning architecture across teams, mentoring, and leading teams of up to 13 — and I currently run the enterprise data-quality platform at Bloomberg. Senior IC, tech lead, or staff scope: I own the problem end to end and ship it.
21 years across global financial institutions
Franklin Templeton → Credit Suisse → Wells Fargo → HPE → Cox Automotive → Bloomberg — a track record in the systems where data has to be right.
- NOV 2022 — PRESENTSenior Engineer — Bloomberg L.P.Enterprise data-quality platform (Great Expectations across PostgreSQL, Snowflake, Kafka, S3): ~60% fewer data incidents, >95% validation pass rates.
- DEC 2021 — OCT 2022Snowflake Architect — Cox AutomotiveMulti-zone Snowflake data lake at petabyte scale.
- DEC 2020 — DEC 2021Snowflake Architect — Hewlett Packard EnterpriseUnified global partner systems; delivered 16 partner-experience IT projects.
- SEP 2018 — DEC 2020Senior Data Engineer — Wells Fargo BankETL architecture across 9 regulated data domains for a Dodd-Frank / FDIC program.
- MAY 2018 — SEP 2018Big Data Consultant — PVH CorpHadoop/Hive KPI systems at petabyte scale; real-time ingestion to Snowflake.
- JUN 2010 — APR 2018AVP / Consultant — Credit Suisse (Bangalore & Singapore) — MDM & data-quality lead for a global credit-risk platform (3M+ trades/day, 300+ feeds); led a 13-engineer team.
- NOV 2006 — JUN 2010Software Analyst — Franklin Templeton InvestmentsGlobal mutual-fund enterprise data warehouse; star-schema modeling and ETL tuning.
- MAY 2005 — OCT 2006Senior Software Engineer — Lionbridge (Merck & Co.)Centralized customer master; automated 12 regulatory licensing processes.
The stack, end to end
Seven public, CI-verified projects
Proof I still ship, not just review. Every one runs end-to-end and is verified in GitHub Actions on each push (~190 tests total) — not slideware.
End-to-end batch medallion (bronze→silver→gold) with idempotent transforms and gold↔silver reconciliation, run for real in CI.
- Medallion on Delta Lake — bronze→silver→gold with idempotent, re-runnable transforms
- Airflow-orchestrated PySpark; runs fully local — no Docker, no network
- gold↔silver reconciliation gates + dbt models served over Trino
Event-time streaming with windowing, watermarks, and anomaly detection; full containerized path proven end-to-end in CI.
- Kafka → Spark Structured Streaming → ClickHouse → Grafana, end to end
- Event-time windowed aggregation with watermarks for late data
- Streaming anomaly detection; whole containerized path proven in CI
The streaming architecture over real options trades — per-underlying flow, block/skew anomalies; dual live-Polygon / synthetic source so it runs keyless in CI.
- Real options trades over Polygon WS — per-underlying flow aggregation
- Block & skew anomaly detection with OCC-symbol parsing
- Dual live/synthetic source behind one contract — keyless, flake-free in CI
Validation, column-level lineage, statistical anomaly detection, and SLA alerting layered onto the lakehouse.
- Great Expectations validation across lakehouse layers
- Column-level lineage via OpenLineage
- Z-score / IQR anomaly detection + Slack SLA alerting
Platform tooling other engineers consume: Jinja pipeline scaffolding, a Delta catalog + scanner, and reusable connectors.
- Jinja pipeline scaffolding via a Click CLI + FastAPI service
- Delta data catalog with a metadata scanner
- Reusable source connectors — onboard a new source end to end
Platform ownership beyond pipeline code: reusable AWS Terraform modules (MSK/RDS/Redshift/S3) plus a one-command local stack.
- Reusable AWS Terraform modules — MSK, RDS, Redshift, S3
- One-command local stack via Docker Compose (MinIO-backed)
- terraform fmt / validate / plan gated in CI on every push
FinOps for the warehouse: sqlglot anti-pattern analysis, cross-engine cost estimates, partition/Z-order advice, and benchmarks.
- sqlglot anti-pattern analysis of SQL workloads
- Cross-engine cost estimates — BigQuery / Snowflake / Spark
- Partition & Z-order advice + NYC-taxi benchmark suite & Streamlit dashboard
Seven repositories that compose into one platform
Not disconnected demos. Infrastructure provisions the runtime, a self-service layer scaffolds pipelines, batch & streaming pipelines move the data, a quality layer validates and traces them, and a cost optimizer keeps the warehouse honest.
Making a streaming pipeline testable when the data feed costs money
Case study · realtime-options-flow
- Problem
- The pipeline's whole point is a paid, authenticated, real-time market-data WebSocket — which doesn't exist on a CI runner. Mocking the transport encodes today's guess about the wire format and rots silently the moment the feed drifts.
- Approach
- Split the producer into two interchangeable sources behind one event contract: a live Polygon feed and a synthetic generator that emits the same raw OCC-symbol wire format. Both run the identical parse → enrich → publish path; malformed events route to a dead-letter queue.
- Result
- One flag switches sources. CI runs the real Kafka + Spark job on the synthetic feed — 200 events/sec, no key, no market hours, no flake — exercising the actual parsing and math on every push. Anyone can
make upand watch it work in minutes.
And beyond the platform work — a product I built and run
The portfolio shows I can build the pieces. This shows I can ship and operate a whole product, end to end.
Quants — AI-native risk engine
Ask risk questions in plain English and get institutional-grade analytics back. Quants connects real risk models — VaR/CVaR, factor risk, stress testing, portfolio optimization, options Greeks — to a large language model via Anthropic's Model Context Protocol (MCP), with an interactive dashboard and an ML / forecasting / regime layer. It now includes a full buy-side risk workbench — benchmark-relative risk (tracking error, active exposures), risk & return attribution, and a constraint / cost / Black-Litterman optimizer — and its analytics core is cross-checked against QuantLib (the engine ORE is built on) to machine precision. Designed, built, deployed, and operated end-to-end.