Brady Anderson

Wells Fargo, Aug 2015 – Jun 2020

High-volume ETL and regulatory letters that had to be right

I built ETL processing more than 10M rows a day, with a parity framework that caught drift between upstream and downstream systems, and architected a SQL/SAS system that generated 100k+ regulatory-compliant customer letters a month. I’ve rebuilt both as interactive illustrations you can try.

  • SQL
  • SAS
  • Python
  • Teradata
Role
Senior Analytics Consultant
When & where
Aug 2015 – Jun 2020, Remote
Context
Full-time role
10M+rows processed a day
100k+regulatory letters generated a month
5 yearsrunning regulated data systems

The original systems are proprietary, so no code, screenshots, or data from them appear here. I’m happy to walk through the design in conversation.

Five years of building and running regulated data systems, where a job finishing successfully didn't mean the result was right.

The two interactive illustrations below are my own rebuilds of the core ideas, using synthetic data and original code.

Catching silent data errors

I maintained ETL processing more than 10 million rows a day. In remediation work, an omitted customer or an incorrect balance has consequences well beyond a failed batch, so I built a parity framework to check that upstream and downstream systems agreed before data moved on.

Counts are a cheap first signal. Key coverage establishes who belongs in the result, totals check aggregate value, and record reconciliation checks that each value belongs to the right customer. Pick an incident below and see which checks catch it. The offsetting-balances case passes every aggregate check.

Interactive rebuild with synthetic data and original code.

DATA INTEGRITY/reconciliation workbench
LOCAL SIMULATION
Source snapshot2,000 customers01
Eligibility ETL364 eligible02
Reconciliation5 independent checks03
Release gateDownstream held04

RUN 001 / SILENT CORRUPTION

The totals agree. The customers don’t.

Release blocked
Expected population364rowsDerived from source
Output population364rows✓ Count matches
Net balance drift$0.00✓ Total matches
Record exceptions02customersRelease gate triggered
POPULATION MAP / one cell per customer Matched Exception
Customer / regionSource balanceOutput balanceFinding
C000006 IA$4,186.69$4,187.69Balance changed
C000007 IA$157.69$156.69Balance changed
1–2 of 2 records

Why this matters. Aggregate checks pass, but two individual balances are wrong. Record reconciliation blocks both errors before release.

SESSION LOG1 event
  1. 001
    Offsetting balances injected2 customer balances differ; aggregate total unchanged
    BLOCKED
Deterministic · synthetic · no backend connectionENGINE: TYPESCRIPT / INTEGER CENTS

Delivering every letter exactly once

I architected a SQL/SAS system that generated more than 100,000 regulatory-compliant customer letters a month. Rendering the document was the easy part. Invalid records needed somewhere to go, temporary failures needed a retry limit, and re-running a campaign must never send the same letter twice.

In this rebuild, bad data is quarantined before rendering, transport failures get a bounded retry budget, and replaying a campaign checks a ledger keyed on campaign and recipient. Try the lost-acknowledgment incident, where the provider accepts a letter but the acknowledgment never arrives.

Interactive rebuild with synthetic data and original code.

DELIVERY RELIABILITY/campaign workbench
LOCAL SIMULATION
Eligible recipients24 recipients01
Validate + renderInvalid data → held02
Provider transportBounded retries03
Send ledgerExceptions to resolve04

PASS 001 / notice-2026-09

Accepted by the provider. Unconfirmed here.

Review required
Accepted20/ 24Confirmed in the ledger
Unknown04Reconcile before retry
Quarantined / failed00/00Held with explicit reasons
Transport calls this pass240 recipients skipped
RECIPIENT STATE MAP / select to inspect24 recipients · 20 confirmed
Accepted Unknown Quarantined Failed
R0001 / RECORD DETAIL

Ava Patel

UNKNOWN

The provider may have accepted this notice. Reconcile its receipt before retrying.

Idempotency key
notice-2026-09:R0001
Body digest / SHA-256
Computing digest…
EXECUTION TRACE
  1. Eligibility confirmedSynthetic source · active recipient
  2. Validated & renderedTemplate account-notice-v1
  3. Pass 1 · attempt 1: acknowledgment timed out

A timeout is not proof of failure. Replaying skips uncertain recipients. Reconciliation asks the provider what already happened, closing the acknowledgment gap without creating another send.

SESSION LOG1 event
  1. 001
    Acknowledgment timeout injected20 accepted · 4 unknown · 24 transport calls
    HELD
No letters sent · in-memory ledger · synthetic recipientsACCEPTANCE ≠ PHYSICAL DELIVERY

Download the source for both rebuilds, including the simulation engines, behavior tests, and Python/SQL companions.