Background animation: a simulated data pipeline. Records arrive from SFTP, APIs, webhooks, apps, SharePoint and Microsoft Graph, land in a bronze layer, are deduplicated, quality-checked and PII-masked in silver, modeled into gold fact and dimension tables that keep every record; each destination reads its own tables, analytics, apps and reports fetching results and reverse ETL and file exports being sent theirs, with simulated incidents, automatic retries and deploys.

What the animation shows

id,amt · {"id":7} · POST
Raw records arriving in each source's own format
Bronze
Landed as-is: mixed sizes, still loose
Silver
Duplicates fade out; records with a red corner failed a quality rule and get fixed (✓) or quarantined; PII is masked (🔒 ███-██-6789)
Gold
Modeled into fact and dimension tables that keep every record. Each destination reads its own tables, one at a time: they light in its color, and a small result rides out. Analytics, apps and reports fetch theirs; reverse ETL and file exports are sent theirs
Chat thread
Pops up every so often, bottom right: an incident (alert, retry, recovery), a deploy with passing tests, or a reconcile run replaying quarantined records into bronze
Hover
A source or destination to trace its lineage

Simulated. Each behavior mirrors work I've done on production platforms.

Jonathan Thomas

Principal Data Engineer · Data Platform Architect

  1. 2006 Operations
  2. 2019 Analytics
  3. 2022 Engineering
  4. 2026 Principal

I design and own enterprise data platforms end to end, from ingestion and modeling to CI/CD, governance, observability, and the dashboards leaders act on. Today that means a lakehouse unifying 40+ systems at Mutual of Omaha Mortgage, built on Microsoft Fabric and now extending onto Databricks.

Focus
Technical lead on an enterprise Databricks migration spanning SQL Server, Snowflake, and Microsoft Fabric
Based
Costa Mesa, CA
Certified
Microsoft Certified: Fabric Analytics Engineer Associate
LinkedIn ↗ Selected work ↓
  • Systems integrated

    40+

    Unified into governed medallion layers

  • Saved per year

    $120K

    Offshore team replaced in 90 days

  • SQL Server data

    10 TB+

    Managed through the move to a lakehouse

  • Power BI dashboards

    40+

    Executive, operational, and migration reporting

Hands-on, every week5,126 GitHub contributions in the last year · active 53 of 53 weeks, 219 days

NovDecJanFebMarAprMayJunJulAugSepOctNone · Oct 191 contribution · Oct 204 contributions · Oct 212 contributions · Oct 22None · Oct 23None · Oct 24None · Oct 25None · Oct 26None · Oct 27None · Oct 281 contribution · Oct 291 contribution · Oct 304 contributions · Oct 31None · Nov 1None · Nov 2None · Nov 33 contributions · Nov 4None · Nov 57 contributions · Nov 6None · Nov 7None · Nov 8None · Nov 91 contribution · Nov 103 contributions · Nov 113 contributions · Nov 122 contributions · Nov 132 contributions · Nov 14None · Nov 156 contributions · Nov 162 contributions · Nov 1711 contributions · Nov 186 contributions · Nov 198 contributions · Nov 20None · Nov 21None · Nov 22None · Nov 23None · Nov 241 contribution · Nov 256 contributions · Nov 26None · Nov 27None · Nov 28None · Nov 29None · Nov 30None · Dec 12 contributions · Dec 24 contributions · Dec 35 contributions · Dec 44 contributions · Dec 5None · Dec 6None · Dec 7None · Dec 83 contributions · Dec 91 contribution · Dec 104 contributions · Dec 111 contribution · Dec 123 contributions · Dec 13None · Dec 14None · Dec 152 contributions · Dec 16None · Dec 172 contributions · Dec 18None · Dec 19None · Dec 20None · Dec 211 contribution · Dec 221 contribution · Dec 23None · Dec 24None · Dec 251 contribution · Dec 26None · Dec 27None · Dec 281 contribution · Dec 291 contribution · Dec 301 contribution · Dec 31None · Jan 12 contributions · Jan 2None · Jan 3None · Jan 44 contributions · Jan 52 contributions · Jan 61 contribution · Jan 7None · Jan 85 contributions · Jan 9None · Jan 10None · Jan 115 contributions · Jan 124 contributions · Jan 13None · Jan 143 contributions · Jan 156 contributions · Jan 162 contributions · Jan 17None · Jan 181 contribution · Jan 19None · Jan 20None · Jan 211 contribution · Jan 222 contributions · Jan 23None · Jan 24None · Jan 25None · Jan 261 contribution · Jan 278 contributions · Jan 28None · Jan 298 contributions · Jan 30None · Jan 31None · Feb 1None · Feb 25 contributions · Feb 36 contributions · Feb 42 contributions · Feb 57 contributions · Feb 6None · Feb 7None · Feb 8None · Feb 93 contributions · Feb 106 contributions · Feb 117 contributions · Feb 12None · Feb 13None · Feb 14None · Feb 15None · Feb 161 contribution · Feb 17None · Feb 183 contributions · Feb 19None · Feb 201 contribution · Feb 21None · Feb 22None · Feb 236 contributions · Feb 241 contribution · Feb 25None · Feb 262 contributions · Feb 27None · Feb 28None · Mar 11 contribution · Mar 2None · Mar 31 contribution · Mar 4None · Mar 52 contributions · Mar 6None · Mar 7None · Mar 82 contributions · Mar 91 contribution · Mar 10None · Mar 111 contribution · Mar 12None · Mar 13None · Mar 14None · Mar 15None · Mar 162 contributions · Mar 173 contributions · Mar 183 contributions · Mar 191 contribution · Mar 20None · Mar 21None · Mar 22None · Mar 233 contributions · Mar 243 contributions · Mar 257 contributions · Mar 265 contributions · Mar 27None · Mar 28None · Mar 294 contributions · Mar 301 contribution · Mar 312 contributions · Apr 14 contributions · Apr 2None · Apr 3None · Apr 4None · Apr 5None · Apr 65 contributions · Apr 71 contribution · Apr 82 contributions · Apr 9None · Apr 10None · Apr 11None · Apr 121 contribution · Apr 134 contributions · Apr 147 contributions · Apr 15None · Apr 16None · Apr 17None · Apr 18None · Apr 194 contributions · Apr 201 contribution · Apr 213 contributions · Apr 221 contribution · Apr 232 contributions · Apr 24None · Apr 25None · Apr 26None · Apr 273 contributions · Apr 28None · Apr 29None · Apr 30None · May 1None · May 2None · May 3None · May 41 contribution · May 5None · May 62 contributions · May 7None · May 8None · May 9None · May 10None · May 11None · May 122 contributions · May 132 contributions · May 141 contribution · May 15None · May 16None · May 171 contribution · May 18None · May 191 contribution · May 20None · May 21None · May 22None · May 23None · May 24None · May 25None · May 262 contributions · May 274 contributions · May 281 contribution · May 29None · May 30None · May 311 contribution · Jun 1None · Jun 2None · Jun 3None · Jun 4None · Jun 5None · Jun 6None · Jun 71 contribution · Jun 83 contributions · Jun 9None · Jun 10None · Jun 11None · Jun 12None · Jun 13None · Jun 143 contributions · Jun 1522 contributions · Jun 1615 contributions · Jun 1715 contributions · Jun 18None · Jun 19None · Jun 20None · Jun 2131 contributions · Jun 2263 contributions · Jun 2343 contributions · Jun 2440 contributions · Jun 2511 contributions · Jun 26None · Jun 27None · Jun 288 contributions · Jun 2921 contributions · Jun 3018 contributions · Jul 121 contributions · Jul 2None · Jul 3None · Jul 4None · Jul 55 contributions · Jul 622 contributions · Jul 726 contributions · Jul 819 contributions · Jul 938 contributions · Jul 1021 contributions · Jul 1177 contributions · Jul 1249 contributions · Jul 1365 contributions · Jul 1472 contributions · Jul 1547 contributions · Jul 1659 contributions · Jul 1736 contributions · Jul 1835 contributions · Jul 1965 contributions · Jul 2038 contributions · Jul 2149 contributions · Jul 2271 contributions · Jul 2351 contributions · Jul 2443 contributions · Jul 25None · Jul 2625 contributions · Jul 2758 contributions · Jul 2810 contributions · Jul 2965 contributions · Jul 3082 contributions · Jul 3137 contributions · Aug 121 contributions · Aug 242 contributions · Aug 346 contributions · Aug 446 contributions · Aug 551 contributions · Aug 652 contributions · Aug 762 contributions · Aug 87 contributions · Aug 920 contributions · Aug 1054 contributions · Aug 1135 contributions · Aug 1253 contributions · Aug 1320 contributions · Aug 146 contributions · Aug 15None · Aug 1623 contributions · Aug 1720 contributions · Aug 1850 contributions · Aug 1960 contributions · Aug 2077 contributions · Aug 2199 contributions · Aug 2224 contributions · Aug 2339 contributions · Aug 2458 contributions · Aug 2565 contributions · Aug 2680 contributions · Aug 2744 contributions · Aug 289 contributions · Aug 29None · Aug 30None · Aug 3130 contributions · Sep 132 contributions · Sep 217 contributions · Sep 323 contributions · Sep 44 contributions · Sep 5None · Sep 6None · Sep 731 contributions · Sep 8113 contributions · Sep 976 contributions · Sep 104 contributions · Sep 114 contributions · Sep 1223 contributions · Sep 1370 contributions · Sep 1492 contributions · Sep 1546 contributions · Sep 1622 contributions · Sep 1715 contributions · Sep 18None · Sep 1914 contributions · Sep 2048 contributions · Sep 2113 contributions · Sep 2266 contributions · Sep 23144 contributions · Sep 24152 contributions · Sep 2547 contributions · Sep 26169 contributions · Sep 27116 contributions · Sep 2876 contributions · Sep 298 contributions · Sep 3058 contributions · Oct 1137 contributions · Oct 21 contribution · Oct 3None · Oct 450 contributions · Oct 552 contributions · Oct 665 contributions · Oct 722 contributions · Oct 813 contributions · Oct 95 contributions · Oct 1040 contributions · Oct 1148 contributions · Oct 1281 contributions · Oct 1316 contributions · Oct 1430 contributions · Oct 1529 contributions · Oct 169 contributions · Oct 17None · Oct 1858 contributions · Oct 19None · Oct 20

Mostly private work repositories, so GitHub shows counts only. Snapshot Oct 20.

Decisions

The calls behind the platform: what I chose, what it cost, and what it bought. Select one for detail.

A stricter Corporate layer above Gold

Context
The platform serves sales divisions that each run differently for their market, so many of their analytics are specified by the teams themselves and calculate metrics their own way. Finance, performance reviews and loan-servicer feeds can’t work like that.
What I chose
Kept Gold flexible for division-facing analytics and added a Corporate layer above it for data that has to be exact: built only from validated pipelines and certified metric definitions, and used for financial planning and analysis, employee performance monitoring, and integrations with third parties such as loan servicers.
What it cost
Two layers to model and keep in step, and a Corporate metric changes only through validation, never on request.
What it bought
Divisions keep the freedom to measure their business their own way, while finance, performance management and loan-servicer integrations run on one standardized, validated version of the numbers.

Selected work

Platform-scale builds where the engineering changed how the business works with data. Select one for detail.

Migration Validation Tool

Compares migrated tables row by row after normalizing schemas, keys, types, and casing, then has Claude agents write the root-cause analysis and a report for analysts.

  • React
  • Databricks Apps
  • DataComPy
  • Hashing
  • Claude

From billing desks to data platforms

One bar per employer; each segment is a role I held there. Select an employer to see what I delivered.

  • Operations
  • Analytics
  • Engineering
  • Each segment is a role

Mutual of Omaha Mortgage

Jun 2022 – Present · 4 yr 4 mo · 4 roles

  1. Principal Data Engineer Mar 2026 – Present · 7 mo
    • Technical lead for the enterprise Databricks migration, directing three data engineers in a 10+ person program.
    • Keep one set of architecture, pipeline, and governance standards across four production platforms: legacy SQL Server, Snowflake, Microsoft Fabric, and Databricks.
    • Own Unity Catalog governance for the Databricks platform, including catalog and schema design, grants, and data access and security design.
    • Built a reconciliation app (React, Databricks Apps, DataComPy, row hashing, Claude agents) that automated migration validation and root-cause analysis.
    • Still own the Snowflake platform after the re-org, including its Terraform infrastructure and GitHub Actions deployments.
    • Set team standards for PySpark, Git workflow, CI/CD, notebook structure, and data quality.
    • Wrote reusable validation code that normalizes schemas, composite keys, data types, strings, and casing so tables compare row by row.
    • Databricks
    • Snowflake
    • Delta Lake
    • PySpark
    • Spark SQL
    • Microsoft Fabric
    • SQL Server
    • React
    • DataComPy
    • Claude
  2. Data Warehouse Manager Mar 2025 – Mar 2026 · 1 yr
    • Architected a lakehouse integrating 40+ operational systems into Bronze, Silver, Gold, and Corporate data products on Microsoft Fabric, Delta Lake, and PySpark.
    • Took a Snowflake platform from concept to production (~250 tables, 10+ TB, the largest dataset in the environment), merging a vendor data share with SQL Server history and feeding Databricks through CDC and query federation and Microsoft Fabric through mirroring.
    • Led the Microsoft Fabric data warehouse build with a two-person team while running the legacy reporting platform.
    • Introduced source control, environment promotion, and CI/CD for Fabric, SQL Server, and Power BI using Azure DevOps and GitHub.
    • Managed 10+ TB of SQL Server data through the move to the lakehouse.
    • Set up Snowflake users, SSO, SCIM provisioning, RBAC, streams, tasks, and stored procedures, plus budgets, spend alerts, and a metadata feed into Fabric that tracks spend, job failures, and daily runs.
    • Managed Snowflake environments and access as code with Terraform, deployed through GitHub Actions.
    • Designed PySpark pipelines for financial, CRM, marketing, telephony, identity, and security systems.
    • Designed Direct Lake semantic models that need no scheduled refreshes.
    • Wrote Airflow DAGs in Python for internal and vendor file exports, Power BI snapshot reports, and data freshness checks.
    • Microsoft Fabric
    • Snowflake
    • PySpark
    • Delta Lake
    • SQL Server
    • Power BI
    • Apache Airflow
    • Azure Data Factory
    • Azure DevOps
    • GitHub
    • Azure Log Analytics
  3. Data Warehouse Administrator Mar 2024 – Mar 2025 · 1 yr
    • Replaced an offshore team within 90 days, saving about $120K a year.
    • Owned Power BI governance, including workspace structure, Entra ID access, lifecycle management, and a tenant-wide data dictionary.
    • Added near real-time pipeline monitoring and anomaly alerts using Azure Log Analytics.
    • Tuned workloads and SQL Server performance to meet SLAs, and reported platform spend by department.
    • Microsoft Fabric
    • Snowflake
    • PySpark
    • Delta Lake
    • SQL Server
    • Power BI
    • Apache Airflow
    • Azure Data Factory
    • Azure DevOps
    • GitHub
    • Azure Log Analytics
  4. Marketing Data & Analytics Manager Jun 2022 – Mar 2024 · 1 yr 9 mo
    • Led an analytics modernization that improved data process efficiency by roughly 300%.
    • Architected ELT and Reverse ETL pipelines with Python, PySpark, Azure Data Factory, SQL Server, and Microsoft Fabric to centralize operational and marketing data and sync it back to business systems.
    • Hired and mentored a data team while staying hands-on.
    • Delivered 40+ Power BI dashboards and semantic models for executive reporting, operations, and migration validation.
    • Built real-time operational reporting on Salesforce and other systems for monitoring and security.
    • Set team practices for data quality, modeling, version control, and automation.
    • Python
    • PySpark
    • Azure Data Factory
    • SQL Server
    • Power BI
    • Salesforce
    • Azure DevOps
    • Reverse ETL

Stack

What I build with, and the systems I've integrated.

Data Platforms
Microsoft Fabric, Databricks, Delta Lake, SQL Server, Azure SQL, Snowflake, ADLS Gen2
Languages
Python, SQL, T-SQL, PySpark, Snowpark, Spark SQL, DAX, Power Query M, C#, TypeScript, PowerShell, Pandas, VBA
Pipelines & Orchestration
Apache Airflow, Azure Data Factory, Fabric Data Pipelines, SSIS, SQL Server Replication, Snowflake Streams & Tasks, Change Data Capture (CDC), Batch & Streaming, Azure Event Hubs
Architecture & Modeling
Lakehouse Architecture, Medallion Architecture, Dimensional Modeling, SCD Type 1 & Type 2, Source-to-Target Mapping, Data Modeling, Data Warehousing, Distributed Processing, ETL / ELT, Data Products, Materialized Lake Views, Corporate Serving Layer
Governance & Compliance
Data Governance, Data Quality Engineering, Metadata Management, Data Cataloging, Entra ID RBAC, Snowflake RBAC, Unity Catalog, SSO / SAML, PII / NPI Handling, FCRA, SOX, HIPAA, Data Dictionary, Data Quality Rules
Cloud & DevOps
Azure, Azure DevOps, GitHub, Git, CI/CD, Environment Promotion, Release Governance, Terraform, Infrastructure as Code, GitHub Actions, YAML, Entra ID
Integration
REST APIs, SOAP APIs, Webhooks, SFTP / File Ingestion, Microsoft Graph API, OAuth2 / Service Principals, Reverse ETL, Salesforce Integration, Secure Data Sharing, Query Federation, Database Mirroring, Power Automate, Zapier, XML, SharePoint
BI & Analytics
Power BI, Direct Lake, Semantic Modeling, Row-Level Security, Executive Reporting, Self-Service BI, Power Apps, SSRS, Databricks Apps, Self-Service Apps
Observability & Reliability
Azure Log Analytics, Pipeline Monitoring, Anomaly Alerting, Performance Tuning, SLA Management, Cost & Capacity Management
AI Engineering
Claude, LLM Workflows, AI Agents, Prompt Engineering, DataComPy
Leadership & Delivery
Hiring, Mentorship, Engineering Standards, Vendor Management, Jira, Confluence
Systems integrated · 40+
Encompass, nCino, SimpleNexus, LoanCare, DMI, CoreLogic, TransUnion, NMLS, Salesforce, Relcu CRM, Velocify, Total Expert, Five9, ADP, Emburse / Certify, Microsoft Defender, Microsoft Entra, Cofense, JAMF, Azure DevOps · sample of 20
Managed ELT & iPaaS (POC and short-term production)
Fivetran, Airbyte, Estuary, Talend, TIBCO

Let's build data people trust.

Always glad to talk data platforms, lakehouse modernization, and hard data-quality problems.

  • ✓ Microsoft Certified: Fabric Analytics Engineer Associate