22 years architecting AI-augmented cloud-native systems for regulated industries — finance, insurance, mainframe modernization. Currently leading an 18-engineer reinsurance modernization at a Tier-1 carrier and sole architect of a Claude-based agentic COBOL→TypeScript factory in internal production use; previously owned ITIL operations across 150 applications with 14 direct and ~50 indirect reports; architected IMS-DB systems handling 1M+ transactions/hour. Rare bridge between deep mainframe expertise (COBOL, PL/I, IMS-DB, DB2 z/OS) and modern AI-augmented cloud-native delivery (Claude, MCP, AWS, Next.js, Python, Supabase).
Enterprise Reinsurance modernization at a Tier-1 carrier — a 25+ year-old PL/I + DB2-LUW system carrying $billions in active treaty exposure, with ~50 daily actuarial and finance consumers and no write-freeze tolerance. Own technical direction for 18 engineers across data, application, and reporting tracks. Designed the metadata-driven migration pattern that collapsed the 23-table mainframe → Aurora migration into 3 Glue jobs (vs. ~69 the obvious design called for); architected the Cash Clearance latency win with DynamoDB caching over partitioned Aurora reads. Cut Cash Clearance search latency from 3–5 minutes to <5 seconds on 100K+ row queries; shipped the event-driven reporting layer feeding ~50 treaty and finance consumers. Also sole architect and builder of the Modernization Factory — an agentic pipeline (built as an MCP server) that turns JCL + COBOL into AWS Lambda, Step Functions, and Aurora DDL with a parity test suite. Its 8 stages route per-stage across Claude tiers — Haiku for the triage gate, Sonnet for structured extraction and codegen, Opus with extended thinking for the one architectural-routing decision and the parity-test design — roughly 70–80% cheaper than running Opus throughout. Human-in-the-loop by default: the pipeline pauses for schema review before it writes any code. In internal production use, output shipping after minor human review.
L1–L3 application operations across a 150-system production portfolio under ITIL delivery — every reactive ticket triage came out of the same team's hours. Owned operational outcomes for 14 direct and ~50 indirect reports. Stood up the team's first proactive monitoring + alerting layer so every shift ran off shared dashboards; drove the focus from triage volume to root-cause elimination — identifying repeat incidents and shipping permanent fixes rather than re-running the same ticket loop. Improved portfolio stability by 60% over three years.
Major rating-engine re-platform at a US personal-lines carrier — the actuarial business owned the rules but couldn't change them without an engineering round-trip, because they lived as 100+ hardcoded PL/I procedures over IMS-DB lookups. Owned the business-logic analysis track. Translated 100+ rating algorithms into Ratabase semantics — each validated against an actuarial SME; ran re-rate cycles across full state policy books when rating errors surfaced; pair-designed the Informatica + PowerExchange data pipelines with the Principal architect. Individual re-rate cycles returned several-hundred-thousand-dollar customer refunds; the pipeline became the data backbone for actuarial pricing and underwriting decisioning.
Entry into regulated-industry tech — production support and feature work on P&C insurance applications. Owned DB2 SQL performance tuning on claims workloads, requirements analysis with business analysts, and quality audits across the application portfolio. Built the mainframe-adjacent data, release-discipline, and customer-money instincts every later role compounded on.
The architectural call: model tiering per stage, not one model for everything — Haiku gates, Sonnet does the structured bulk, Opus reasons only where it changes the outcome. Roughly 70–80% lower cost than running Opus everywhere, with equal or better quality on the structured stages.. Stage 4 (Layer Decision) is the one stage on Opus with extended thinking — it routes each mainframe step to Lambda / Aurora SQL / DynamoDB / skip, and getting it wrong cascades through every downstream stage, so it gets a private reasoning budget the other seven stages don't..
Designed a metadata-driven ETL architecture: 3 generalized Glue jobs (extract, transform, load) covering all 23 source tables — instead of the obvious 3-per-table design (~69 jobs) the team would have built by default. Architected the dual-pipeline split: AWS DMS for one-time historical migration off mainframe DB2-LUW; Glue/PySpark for ongoing ELT and the reporting layer — no DMS dependency on reporting.
Cut search query latency from 3–5 minutes to under 5 seconds — even for result sets exceeding 100K rows — via DynamoDB caching of search results and PostgreSQL core-table splitting for partitioned reads. Designed a hybrid sync/async execution model in the Lambda backend — interactive flows stay responsive while heavy workloads run async.
The architectural call: every constraint that matters is enforced at the database boundary, not in application code — the cap is a PL/pgSQL atomic RPC, the citation contract is a system-prompt + source-path data invariant, the corpus freshness is a SHA-256 diff at ingest. The model is the easy part; the boundary is the architecture.. Pattern is identical to the Modernization Factory's: sanitize at ingest, query against pre-sanitized chunks, log per-request cost and citations, fail closed on no-context. Different scale, same shape..
Sourced premium and loss data from 12 heterogeneous systems (mainframe COBOL files, DB2 z/OS, MSSQL) into a single analytics-ready layer on Teradata. Established the PowerExchange connections and mapped incoming records against COBOL copybook layouts — the deepest technical lift on the program.
The architectural call: one auditable read-only boundary instead of per-developer DB credentials — the pattern that makes LLM-assisted modernization safe at team scale. Component of the Modernization Factory: the tool layer the schema-analysis agents call to ground every translation decision in real legacy schema state.