MICHIGAN · LIVE · --:--:-- ET ● Available

The pipeline
ran at 3 a.m.
nobody noticed. — that's the goal.

I'm Gunabhiram Billa, a Data & Analytics Engineer in Michigan. I build the data systems that analysts and customers rely on every day: pipelines, warehouses, and reconciliation layers that catch problems before anyone else does. 50+ production systems across healthcare and connected-vehicle operations.

0
Production Projects
0
Customers, One Warehouse
0
Reporting Time Saved
0
dbt Tests, Zero Prod Errors
Gunabhiram Billa
Snowflake Python Automation Dimensional Modeling Healthcare Analytics Connected Vehicle Systems Idempotent Pipelines KPI Frameworks Reconciliation Systems Operational Clarity Multi-Tenant Architecture Snowflake Python Automation Dimensional Modeling Healthcare Analytics Connected Vehicle Systems Idempotent Pipelines KPI Frameworks Reconciliation Systems Operational Clarity Multi-Tenant Architecture
// 01 · who

A builder of quiet
infrastructure.

RoleData & Analytics Engineer
BasedMichigan
StatusOpen to hybrid / remote
StackSnowflake · Databricks · Python · SQL
DomainHealthcare & connected-vehicle analytics
Shipped50+ projects · 60+ dashboards
EducationM.S. Business Analytics, UNT
Currently Working as a Data & Analytics Engineer at GM OnStar on connected-vehicle CRM and telemetry systems — and still writing about the data patterns along the way.

I work in the unglamorous middle layer — between the source systems that emit data and the dashboards that consume it. Semantic layers, KPI frameworks, idempotent pipelines. The kind of code finance, sales, and CS teams quietly depend on without ever opening a ticket about.

Across 50+ production projects, I've designed multi-tenant warehouses serving 60+ customer-facing dashboards, automated reporting that turned two-day Mondays into 8 a.m. emails, and reconciliation layers that catch mismatches before finance closes the books.

At GM OnStar, that same discipline shows up in connected-vehicle support: hourly Slack alerts built on a laggy Siebel CRM, tiered diagnostic notebooks for fleet telemetry, and self-serve SQL reports that gave analysts a real-time queue without a dashboard team.

I care about idempotency, dimensional discipline, and cross-system reconciliation — the foundations that make the dashboards on top actually trustworthy. If a pipeline ran at 3 a.m. and nobody noticed, that's the goal.

// how I work
  • I write more SQL comments than anyone I've worked with.
  • I document like the next engineer is a stranger — because eventually they will be.
  • I'd rather ship a smaller correct thing than a bigger fragile one.
  • I treat reconciliation like a security control, not a nice-to-have.
// 02 · stack

The stack, in the order data flows.

Read it left to right: how data gets in, where it lives, how it is shaped, how people see it, and what AI does with it. Tap any tile.

1Connect
where data comes from
2Store
where it lives
3Transform
how it gets shaped
4Serve
how people see it
5Learn
what AI does with it
+Underneath it all
the languages and habits behind every step
// 03 · work · 16 case files

Case files.

Real systems I've shipped — the architecture that held, the bugs I traced through three layers, the trade-offs that mattered. Each one starts with the problem, then who uses it and what changed. Selected from a portfolio of 50+ production projects. Use the arrows, dots, swipe or arrow keys to move through them. Diagrams are simplified illustrations; no employer-confidential data or system details are shown.

01 / 16Featured
/01
Hourly Slack Alerting on a Laggy Siebel CRM View
Siebel CRMSQLPythonSlack API
Hourly polling against a reporting view with multi-hour lag, diffed against last-seen state. Used by 15 Commercial Ops teammates; they stopped missing new cases, replies, and assignments.
+
The Problem

The Siebel CRM reporting view Commercial Ops relied on lagged live case activity by several hours. New cases, customer replies, and assignments all sat invisible until someone happened to refresh a dashboard — there was no push notification layer on top of a CRM never built for one.

Adoption
Used by15 Commercial Ops teammates
BeforeNew cases, replies and assignments sat invisible until someone refreshed a lagging Siebel view
NowAbout 2 alerts a day, sent only when something new needs attention
DecisionWidened the lookback window from 60 to 720 minutes after tracing missed alerts to a roughly 4.5-hour lag in the source view, instead of just retrying.
IncidentA mid-run crash re-sent 17 alerts. Fixed by saving the watermark after every send, disabling job retries and seeding the 17 already sent.
How it's built

Built an hourly polling job against the lagging view that diffs against a last-seen cursor to detect genuinely new activity by type — new case, customer reply, or assignment — then posts formatted alerts to the right Slack channel. The job is designed around the view's inherent staleness rather than fighting it.

Technical Details
  • Last-seen cursor prevents duplicate alerts across runs
  • Classifies activity into new case / reply / assignment before routing
  • Slack webhook integration with channel-specific formatting
  • Tolerant of the CRM's multi-hour reporting lag by design
  • Runs hourly on a schedule, no manual trigger required
15
People alerted
~2
Alerts per day
0
Missed SLA windows
Siebel CRM viewmulti-hour lagHourly poll jobscheduledDiff vs cursorlast-seen stateClassify by typecase · reply · assignmentSlack alertsper-channel formatlag handled by designcursor stops duplicate alerts
Simplified flow. Illustrative only: no employer data or confidential details are shown.
/02
Tiered Diagnostic Notebook for Fleet Telemetry Support
PythonSQLLLM
Three escalating tiers — deterministic rules first, AI case notes only when needed. Used daily by 15 analysts; time per case dropped from ~45 to ~10 minutes, roughly 50 analyst-hours saved a day.
DecisionFixed decision tree first, deep-dive cells only when the verdict calls for them, and the LLM last. Most cases resolve on the cheap, predictable path.
+
The Problem

Support analysts needed to diagnose why a vehicle wasn't reporting telemetry, but root causes ranged from a simple connectivity gap to a multi-system fault. Running an LLM against every case was slow, costly, and unnecessary for the majority that a straightforward rule check could already explain.

Adoption
Used by15 support analysts, daily (~6 cases each)
BeforeAbout 45 minutes per case, querying several backend systems and navigating the CRM by hand
NowAbout 10 minutes per case, roughly 50 analyst-hours saved a day, with AI notes only when the case needs them
How it's built

Structured the notebook as three escalating tiers: Tier 1 runs fast, deterministic SQL checks against the most common known failure patterns; Tier 2 adds cross-table correlation for less obvious cases; Tier 3 — AI-generated case notes — only fires for cases that survive both earlier tiers unresolved, summarizing the diagnostic trail for the analyst instead of leaving them to piece it together.

Technical Details
  • Tier 1: deterministic SQL rule checks for common failure signatures
  • Tier 2: cross-table correlation for subtler fault patterns
  • Tier 3: LLM-generated case notes, gated to unresolved cases only
  • Diagnostic trail logged per case for auditability
  • AI cost scoped to the minority of cases that actually need it
15
Analysts, daily
45 → 10
Minutes per case
3
Diagnostic tiers
Tier 1 · SQL rulescommon failure signaturesTier 2 · Correlationcross-table fault patternsTier 3 · LLM noteunresolved cases onlyAnalyst outputcase note + trailresolved here, stopresolved here, stopDiagnostic trail logged for every case
Simplified flow. Illustrative only: no employer data or confidential details are shown.
/03
Self-Serve Case Queue Report Built on Two Window Functions
SQLQUALIFYWindow Functions
One parameter, three real-time queues, no Python and no dashboard team. Used by 15 analysts about 4 times a day, and picked up by the Level 3 team.
+
The Problem

Analysts had no consolidated, real-time answer to three questions: what needs a response now, what's gone stale without follow-up, and what's the full state of everything still open. The data was all in the CRM — it just wasn't shaped for triage, and auto-acknowledgment emails made "needs response" counts noisy.

Adoption
Used by15 analysts (~4 times a day) and the Level 3 team
BeforeManual navigation of the CRM to piece together each queue
NowThree real-time queues from one cloned notebook, no dashboard team
DecisionPure SQL, cloned per analyst rather than one shared notebook, so no analyst’s run affects another’s and non-engineers can maintain it.
How it's built

A pure-SQL notebook driven by a single :analyst_name parameter, cloned per analyst for isolated execution state. A UNION bridges current case status with full historical activity, and ROW_NUMBER / QUALIFY isolate the most recent activity per case without subquery nesting. Auto-acks are filtered by treating a short-window inbound right after an outbound as system-generated, and pure-SQL weekday arithmetic powers business-day stale-follow-up flags with no UDF or calendar table.

Technical Details
  • Single string parameter makes the notebook portable across analysts
  • QUALIFY replaces nested subqueries for "most recent per case"
  • Auto-acknowledgment filtering keeps "needs response" counts honest
  • Pure-SQL business-day arithmetic, no UDFs or calendar table
  • Inline CASE expressions derive urgency tiers automatically
15
Analysts
~4×
Opens per day
L3
Team also uses it
/04
RAG Case Analysis & Case-Note Generator on Databricks
DatabricksPythonVector DBEmbeddings
Retrieval-augmented case analysis and note generation over CRM case history and vehicle telemetry, with a validation layer that catches stale, duplicate, or contradictory records before they reach the LLM. Used by 15 analysts; notes go out as generated, saving ~25 minutes each.
+
The Problem

Case analysis and note generation are only as trustworthy as the records they retrieve from. Stale case history, duplicate or contradictory CRM entries, and telemetry that disagrees with what a case note says all silently corrupt LLM output downstream — with no easy way to detect the failure after the fact.

Adoption
Used by15 analysts
BeforeWriting each case note by hand from CRM history and telemetry
NowNotes generated from validated records and sent as generated
How it's built

Built the retrieval layer on Databricks over CRM case history and telemetry data, powering case analysis and a case-note generator. A quality framework runs on the source records before embedding: freshness checks (last-updated thresholds), deduplication (semantic similarity clustering), contradiction detection across records, and provenance tagging. Records that fail are quarantined; the rest enter the vector index with quality metadata attached.

Technical Details
  • Record freshness scoring with configurable thresholds
  • Semantic dedup via embedding similarity clusters
  • Cross-record contradiction detection (case history vs. telemetry)
  • Provenance metadata propagated to retrieval layer
  • Retrieval feeds case analysis and case-note generation
  • Quarantine queue for human review
15
Analysts
~25 min
Saved per note
As-is
Notes sent unedited
/05
Multi-Tenant Data Warehouse Architecture
SnowflakeSQLSCD II
Fact/dimension models, time-aware joins, layered staging→intermediate→mart. Serves 250 customers, internal and external, and cut delivery time by 8 hours.
+
The Problem

Multiple customers, shared infrastructure, divergent needs — and a warehouse that had grown organically into a tangle of one-off views. Cross-tenant benchmarking was unsafe, performance was inconsistent, and onboarding a new customer required custom code rather than configuration.

Adoption
Serves250 customers, internal teams and external customers
BeforeA tangle of one-off views, unsafe cross-tenant benchmarking and inconsistent performance
NowLayered staging → intermediate → mart models with tenant-aware governance
How it's built

Redesigned as a layered architecture: staging mirrors source systems, intermediate handles business logic and conformed dimensions, marts expose tenant-isolated semantic models. SCD Type 2 captures historical attribution. Tenant ID propagates through every fact for safe row-level isolation.

Technical Details
  • Three-layer architecture with clear contracts between layers
  • SCD Type 2 with effective_from / effective_to / is_current
  • Conformed dimensions shared across tenants
  • Row-access policies for tenant isolation
  • Foundation for 60+ multi-tenant dashboards
250
Customers served
8 hrs
Delivery time cut
60+
Dashboards on top
Source systemsmultiple customersStagingmirrors sourcesIntermediateconformed dims, SCD 2Martstenant-isolated modelsDashboards60+ on toptenant_id on every fact · row-access policies
Simplified architecture. Illustrative only: no employer data or confidential details are shown.
/06
dbt-Based Analytics Engineering Framework
dbtSnowflakeJinjaYAML
Migrated legacy SQL views to dbt with tests, docs, and CI/CD. Built solo; 366 tests caught 50 failures before they reached production.
+
The Problem

Hundreds of business-critical views had grown over years with no tests, no documentation, and no consistent style. Logic was duplicated across views, dependencies were implicit, and a change in one place could quietly break a dashboard halfway across the warehouse.

Adoption
Built byMe, solo, end to end
BeforeNo tests, no docs and logic duplicated across hundreds of views
Now366 tests; 50 failures caught before they reached production
How it's built

Migrated transformations to dbt with a layered staging → intermediate → mart structure. Added schema tests for uniqueness, referential integrity, and accepted values. Generated docs auto-publish on every merge. CI runs the full test suite before any change reaches production.

Technical Details
  • Layered model architecture with explicit DAG
  • Schema tests, custom tests, and freshness checks
  • Macros for reused logic (tenant filters, SCD merges)
  • Auto-generated docs with column-level lineage
  • GitHub Actions CI for slim builds on PRs
366
Tests
50
Failures caught
Solo
Built end to end
/07
Automated KPI Reporting Pipeline
SnowflakePythonSQLWord/PDF
Fully automated extraction → templated Excel charts → Word reports → PDF distribution. ~80% reduction in manual reporting time.
+
The Problem

Customer Success was spending two full days every week assembling a recurring KPI report — pulling SQL exports, copying values into Excel templates, refreshing charts manually, then re-typing summaries into a Word doc and exporting to PDF. The same humans were doing the same clicks every Monday.

The Approach

Designed a parameterized Python pipeline that reads customer config from a control table, runs templated Snowflake queries, populates an Excel workbook (preserving formatting and pivot logic), and injects the results plus auto-generated narrative into a Word template via python-docx. Final step exports to PDF for leadership distribution.

Technical Details
  • Parameterized SQL with config-driven date windows and tenant filters
  • openpyxl for chart-preserving Excel population
  • python-docx with bookmarked placeholder injection
  • Reusable across 30+ customers with no code changes
  • Scheduled via cron with email distribution on success
~80%
Time saved
30+
Customers
Weekly
Cadence
/08
Customer ROI Metrics Engine
SnowflakeSQLExcel
Standardized ROI framework modeling intake, scheduling, reminders, and engagement. Backed renewal & upsell with measurable product value.
+
The Problem

The Sales and Customer Success teams couldn't quantify product value at renewal conversations. Each rep was inventing their own ROI math, leading to inconsistent numbers across customers — and no defensible framework when leadership asked "what's the upsell story?"

The Approach

Built a unified Snowflake-backed ROI model that quantifies four pillars: intake completion lift, scheduling adoption, reminder effectiveness (no-show reduction), and engagement uplift. Each pillar maps to specific time and revenue assumptions configurable per customer segment.

Technical Details
  • Per-customer baseline measurement (pre-product window)
  • Configurable assumption layer for time/cost values
  • Versioned metric definitions in a governance table
  • Excel deliverable with executive summary and detail tabs
  • Used by Sales, CS, and Product strategy teams
4
ROI pillars
100%
Renewal coverage
All
Customers
/09
Idempotent Incremental ETL Framework
SnowflakeSQLPython
Watermark tracking, merge upserts, late-arriving data validation, control tables for recovery. Daily pipelines hardened for safe reruns.
+
The Problem

Daily pipelines occasionally failed mid-run or produced duplicates after partial recovery. Engineers had to manually clean state before reruns, and late-arriving source records silently corrupted aggregates. Trust in the data was eroding.

The Approach

Designed an incremental framework around three principles: deterministic watermark tracking, merge-based upserts (never plain inserts), and explicit validation gates. Every run logs to a control table; every failure can be safely retried without manual cleanup.

Technical Details
  • Watermark column tracked per source-target pair
  • MERGE statements with deterministic match keys
  • Validation queries for duplicates and gaps
  • Late-arriving record detection & backfill logic
  • Control tables track state for surgical recovery
100%
Idempotent
Daily
Cadence
~min
Recovery time
/10
Cross-System Data Quality & Reconciliation
SnowflakeSQL
Automated mismatch detection across CRM, billing, and ops systems with daily reconciliation snapshots. Improved trust in financial reporting.
+
The Problem

CRM said one number of active contracts. Billing said another. The operational system said a third. Finance was reconciling these by hand each month-end, and discrepancies often weren't surfaced until they had compounded across periods.

The Approach

Built a reconciliation layer that joins all three systems on canonical entity keys and applies deterministic mismatch rules. Every mismatch is logged with a category, severity, and recommended action. Daily snapshots track drift over time, with exception reports surfaced to operations.

Technical Details
  • Canonical entity resolution across three systems
  • Deterministic mismatch classification rules
  • Daily snapshot fact for drift monitoring
  • Severity scoring and routing logic
  • Structured exception views for operations
3
Systems
Daily
Snapshots
↑
Finance trust
/11
Snowflake Cost & Query Optimization
SnowflakeSQL
Workload segmentation (ETL / BI / ad hoc), right-sizing, auto-suspend policies, full-scan reduction. Long-term compute cost predictability.
+
The Problem

Snowflake credit consumption was growing faster than usage justified. A single oversized warehouse was running every workload, ad-hoc queries were doing full table scans, and no one had visibility into which queries were the actual cost drivers.

The Approach

Mined query history and warehouse metering to attribute cost by workload. Split into purpose-sized warehouses (small for BI, medium for ETL, X-small for ad hoc), enforced auto-suspend, and rewrote the top expensive queries to use clustering and pruning. Built an internal cost dashboard for ongoing visibility.

Technical Details
  • Query history mining & cost attribution
  • Workload segmentation across multiple warehouses
  • Auto-suspend tuning per workload pattern
  • Clustering keys and pruning for top queries
  • Ongoing cost monitoring dashboard
↓
Credit burn
↑
Predictability
3
Workload tiers
/12
UrgentIQ Visit Status & Event Analytics
PythonSQLSnowflakeAPI
Event-driven pipeline, status timeline normalization, transition-duration analysis, configurable schema mapping. Eliminated manual lifecycle analysis.
+
The Problem

Visit lifecycle data lived in a noisy event stream from the UrgentIQ API. Some statuses were skipped, some were emitted out of order, and timestamps were UTC while reporting expected EST. Operations couldn't answer basic questions like "how long are visits stuck in checked-in status?"

The Approach

Built an incremental ingestion pipeline that normalizes status timelines (1 → N), gap-fills missing transitions with deterministic rules, standardizes timezone, and computes transition durations. Output is a clean lifecycle fact ready for funnel and bottleneck analysis.

Technical Details
  • API pagination & incremental ingestion
  • Status timeline gap-filling logic
  • UTC → EST timestamp normalization
  • Transition duration computation per status pair
  • Deduplication & configurable schema mapping
0
Manual analysis
↑
Visibility
Reusable
Framework
/13
Provider Count & Billing Reconciliation
SQLExcelQuickBooks
Aligned operational provider counts with CRM contracts and billing records via FTE-threshold logic. Reduced underbilling risk.
+
The Problem

Customers were billed based on provider counts, but "provider" meant different things in different systems. Some part-time providers were counted as full FTEs, some full-time providers were missed entirely, and contract terms specified thresholds nobody was actively checking.

The Approach

Designed a reconciliation workflow that joins operational provider activity with CRM contract terms and QuickBooks billing records. Applied FTE thresholds (active hours, encounter volume) to classify each provider into a billing category. Standardized monthly reconciliation checkpoints.

Technical Details
  • Three-system join: ops, CRM, billing
  • FTE threshold logic with multiple inputs
  • Provider classification into billing tiers
  • Monthly reconciliation checkpoint cadence
  • Exception reports for review by finance
↓
Underbill risk
Monthly
Cadence
↑
Accuracy
/14
SMS Optimization & Number Rationalization
SQLExcel
Standardized templates at ~150-char threshold, disabled 300+ inactive numbers. Lower monthly SMS spend, improved consistency.
+
The Problem

SMS costs were inflated by two avoidable issues: messages tipping over the 160-character single-segment threshold (doubling per-message cost) and a fleet of 300+ phone numbers that were billed monthly but no longer in use. Nobody had audited either in years.

The Approach

Audited message content across templates, identified those tipping over the segment boundary, and rewrote them under a 150-character target with a margin for personalization variables. Cross-referenced active phone numbers against actual outbound traffic and decommissioned the inactive ones.

Technical Details
  • Segment count analysis across all templates
  • ~150-character optimization threshold
  • Number-to-traffic cross reference
  • 300+ inactive numbers identified & disabled
  • Standardized template review process
300+
Numbers cut
↓
Monthly cost
~150
Char target
/15
EMR API Usage & Cost Analysis
SQLAPI Logs
Six-month analysis surfacing high-volume endpoints and redundant call patterns. Supported engineering API cost governance.
+
The Problem

EMR vendor API costs were rising without a clear understanding of what was driving usage. Were certain endpoints inefficient? Were features double-fetching data? Engineering needed evidence before making architectural changes.

The Approach

Mined six months of API logs to surface usage patterns: top endpoints by volume, redundant call chains, customer-level cost attribution, and timing correlations with downstream features. Output was a structured report engineering used to prioritize caching and batching work.

Technical Details
  • Six months of log analysis
  • Endpoint volume and cost ranking
  • Redundant call chain detection
  • Customer-level cost attribution
  • Optimization recommendations to engineering
6mo
Log window
↓
Wasted calls
↑
Governance
/16
Near-Real-Time Event Ingestion (Kafka → Snowflake)
KafkaSnowpipePythonStreams
Sub-minute event ingestion with quality monitoring and out-of-order handling. Powered live operational dashboards with no batch lag.
+
The Problem

Operational teams needed visibility into events as they happened — not 24 hours later. The existing batch pipeline ran nightly, which meant by the time an issue showed up on the dashboard, the day was over. Switching to streaming meant rethinking watermarks, ordering, and failure recovery.

The Approach

Built a Kafka-to-Snowflake pipeline using Snowpipe Streaming for sub-minute landing, then Snowflake Streams + Tasks for incremental transformation. Out-of-order events handled via watermark tolerance windows. Quality metrics (lag, dropped events, schema drift) emitted to a monitoring dashboard.

Technical Details
  • Snowpipe Streaming with row-level latency under 60s
  • Streams + Tasks for incremental aggregation
  • Watermark tolerance for out-of-order events
  • Schema evolution handling without pipeline restart
  • Lag, drop, and drift metrics surfaced to ops
<1m
End-to-end lag
24/7
Quality monitor
0
Manual recovery
01 / 16
// 03b · try it

Diagnose a vehicle, live.

The idea behind my telemetry diagnostic: walk a fixed decision tree, stop at the first failed gate, and write the case note from the evidence. Pick a case and run it. Everything here is synthetic.

Case
Tier 1 · quick diagnostic
Tier 3 · generated case note
Run the diagnostic to generate the note.
Synthetic VINs and values. Illustrates the approach only, not any employer's data or rules.
// 04 · journey

Experience & education.

Where the work happened, what I built there, and what I studied. Read the full résumé ↓

Experience
Jun 2026 – PresentMichigan

Data & Analytics Engineer

GM OnStar · Connected Services
  • Built a tiered diagnostic notebook for fleet telemetry support, used daily by 15 analysts, cutting time per case from about 45 to 10 minutes.
  • Shipped hourly Slack alerting on a lagging Siebel CRM view and a self-serve case-queue report adopted by analysts and the Level 3 team.
  • Built a RAG case-analysis and case-note generator on Databricks over CRM case history and telemetry.
Experience
Oct 2023 – Jun 2026New York

Senior Data Analyst, Analytics Engineering focus

Yosi Health
  • Built dbt and Snowflake data models, KPI marts and semantic layers across 6+ healthcare product domains and 25M+ records.
  • Created a 366-test dbt data quality framework with zero production errors.
  • Automated recurring reporting, validation and reconciliation in Python, improving operational efficiency by 80%.
Education
Jan 2021 – Dec 2022Denton, TX

University of North Texas

Master of Science, Business Analytics · Data Analytics & Data Science · GPA 3.6 / 4.0
// 05 · milestones

Things I'm proud of.

Numbers that came from systems people kept using.

50+
production projects shipped
250
customers served by one multi-tenant warehouse
366
dbt tests, 50 failures caught before production
45 → 10
minutes per telemetry case, 15 analysts daily
8 hrs
taken off delivery time
60+
customer dashboards live
~80%
less manual reporting time
12
technical essays published
// 06 · principles · 8 rules

How I think.

Opinions earned shipping data systems. Each one has a scar behind it — a 3 a.m. page, a quarter-end mismatch, a dashboard that lied for two months before anyone noticed. I write them down so I don't forget.

01 · grain
// design

If you can't state the grain in one sentence, the model isn't ready.

Most analytics bugs aren't typos. They're cardinality surprises hiding in a vague join. Pin the grain first, write SQL second. Twenty minutes of sketching saves four hours of debugging.

02 · idempotency
// pipelines

A pipeline that needs human cleanup to retry is not a pipeline.

It's a script with a person attached. Watermarks, merge upserts, control tables — make rerunning safe by construction. The first time a 3 a.m. failure becomes a 3:02 a.m. retry, you'll know it's working.

03 · isolation
// multi-tenant

There's no "mostly correct" in tenant isolation.

The row policy either holds for every query or it doesn't. Test isolation like a security control — write queries that try to violate it and confirm they can't. The worst-case bug is silent.

04 · reconciliation
// governance

Reconciliation isn't a project. It's a control plane you operate.

Run it daily, review weekly, audit monthly. Drift compounds; cadence catches it early. By month-end, three systems disagreeing has cost real money. Make every mismatch visible within 24 hours.

05 · documentation
// craft

The next engineer is a stranger.

Write SQL, comments, and docs like the person debugging this at 3 a.m. has zero context. Eventually they will. That stranger might be future you. The empathy is the same.

06 · latency
// reliability

A source that's always a few hours behind isn't broken — it's a contract you design around.

Fighting a laggy upstream system to make it feel real-time is a losing game. Diff against last-seen state, alert on what actually changed, and let the lag be a known quantity instead of a surprise someone discovers at 9 a.m.

07 · escalation
// judgment

Not every case needs an LLM. Most need a rule that already knows the answer.

Run the cheap, deterministic check first. Reserve the expensive model for whatever survives it unresolved. Tiering isn't a cost hack — it's what keeps the expensive tool's output trustworthy on the cases where it actually runs.

08 · tooling
// pragmatism

The right amount of tooling is the amount the problem actually needs.

A notebook with one parameter and two window functions can outperform a pipeline with a scheduler, a queue, and a dashboard nobody asked for. Match the architecture to the audience, not the resume.

// 07 · learning · ai data engineering

Currently learning.

Moving from analytics engineering toward AI data engineering: the data foundations that LLM systems depend on. Some of it is already in production at work; the rest is where I'm building next.

In production

Retrieval & embeddings

Running a RAG case-note generator on Databricks. Going deeper on chunking strategies, hybrid search and re-ranking.

Building next

LLM evaluation

Eval sets and automated scoring, so generated output is measured instead of assumed. The same reconciliation habit, aimed at model output.

Learning

Data infrastructure at scale

Airflow orchestration and PySpark for volume, plus containers and cloud deployment on AWS.

Learning

Production AI operations

Cost and latency monitoring, tracing and versioning for LLM applications.

Live project

AI Data Engineer Roadmap, as a living web page

My 52-week plan from Python fundamentals to an end-to-end AI data platform, built to fit 12 to 15 hours a week around a full-time job. I keep the plan in Notion and publish it as an interactive page, so the public view stays in step with my own tracking.

Notion plan→Daily sync→GitHub→Interactive page
Open the roadmap →
52Weeks
8Phases
12-15Hours a week
// 08 · writing · 12 essays

Field notes.

Technical writing on data modeling, architecture decisions, automation patterns, and governance. Most of these are post-mortems on something that broke first.

TENANT_ATENANT_BTENANT_CSHARED · CONFORMED DIMENSIONSFIG. 01MULTI-TENANT MODEL
Architecture

Designing a Multi-Tenant Healthcare Data Warehouse in Snowflake

Read essay →
EXTRACTSTAGEMERGEVALIDATERE-RUN = SAME RESULTWATERMARK · MERGE KEY · NO DUPLICATESFIG. 02IDEMPOTENT PIPELINE
Engineering

Building Idempotent ETL Pipelines in Snowflake + Python

Read essay →
CREDITS / WEEK-38%FIG. 03CREDIT BURN OVER TIME
Cost Optimization

Snowflake Credit Optimization at Scale

Read essay →
SNAPSHOTCDCFULL LOADFIG. 04SNAPSHOT VS CDC VS FULL LOAD
Modeling

Snapshot vs CDC vs Full-Load: Practical Tradeoffs in Modern ELT

Read essay →
DIM_DATEDIM_TENANTDIM_USERDIM_PRODDIM_EVENTDIM_GEOFACTFIG. 05FACT AND DIMENSION MODEL
Dimensional Modeling

Designing Fact & Dimension Models for Behavioral Analytics

Read essay →
CRMBILLINGOPSRECONCILEDETERMINISTICFIG. 06RECONCILIATION LAYER
Governance

Designing a Reconciliation Layer Between CRM, Billing & Operational Systems

Read essay →
1DEFINE2MODEL3BUILD4TEST5SHIPFIG. 07ANALYTICS WORKFLOW
Workflow

My Workflow as an Analytics Engineer: Complex Data → Reliable Insights

Read essay →
BEFORE · 2 SEGMENTSAFTER · 1 SEGMENT160 CHARSFIG. 08MESSAGE SEGMENT SIZING
SQL Story

Reducing SMS Message Segments to Save $$$ — A SQL Optimization Story

Read essay →
SOURCE EVENTSLAGGING VIEWHOURLY JOB~4.5 H LAGFIG. 09HOURLY ALERTING OVER LAG
Reliability

Building an Hourly Slack Alerting System on Top of a Laggy CRM View

Read essay →
TIER 1QUICK DIAGNOSTIC · DECISION TREETIER 2DEEP DIVE · ONLY IF NEEDEDTIER 3AI CASE NOTEFIG. 10TIERED DIAGNOSTIC
Diagnostics

A Tiered Diagnostic Notebook for Fleet Telemetry Support

Read essay →
HEALTHYUNHEALTHYFIG. 11CONTAINMENT HEALTH
Reporting

A Scheduled Health Export for Partner Containment Programs

Read essay →
NEEDS RESPONSEWAITINGSTALE FOLLOW-UPFIG. 12SELF-SERVE CASE QUEUE
SQL Story

A Self-Serve Case Queue Report Built on Two Window Functions

Read essay →
// 09 · contact · door's open

Still here?
Let's build something durable.