← Flagship systems

EPIC TECHNOLOGY · Confidential Australian consumer lender

Credit scoring starts with data you could have known.

I led the architecture and high-risk implementation of a credit-risk ML platform combining consent-qualified Open Banking data with bureau and internal lending history. The scoring workflow went through a staged production rollout in September 2026. The lender's Risk and Compliance teams retained policy thresholds, affordability checks and final lending decisions.

My roleHead of AI · Technical Lead
ProjectNov 2025 — Present
DeliveryApproved personal-loan workflow

Data foundation

Event time is not decision-time availability.

We processed consent-qualified Consumer Data Right (CDR) data and existing lending records through S3, Apache Iceberg, Glue and Spark. Historical features had to respect both when an event occurred and when the lender could actually use it.

A collections join had admitted post-origination information into historical training rows. I traced the availability boundary, excluded future-state records and rebuilt the evaluation data. The corrected Gini was about 0.02–0.03 lower on the matched cohort: an honest reduction in an inflated score, not a deterioration in live loan outcomes.

Model and serving path

Evaluate offline; serve only qualified features.

Temporal evaluation

XGBoost and LightGBM challengers were compared on eligible, outcome-mature origination cohorts. A representative matched historical comparison moved Gini from approximately 0.42 to 0.46; this is discrimination, not realized default reduction.

Feature parity

Offline Spark and online materialization initially disagreed on roughly 12–18% of golden test records. Shared definitions, fixed examples and differential gates brought golden-set parity above 99.5%.

Low-latency scoring

Precomputed features fed an API Gateway/Lambda and SageMaker inference path. Reported p95 was roughly 128–136 ms for the scoring API, excluding external CDR collection and asynchronous LLM explanation.

Model and policy authority

SHAP and approved-policy retrieval supported asynchronous Bedrock explanations. Generated language did not set credit policy, change PD values or approve a loan.

Operational decisions

Make promotion reversible.

We kept model, feature and dataset versions connected across SageMaker Pipelines, MLflow and the serving contract. CDR schema changes, late arrivals, missing consent and skew were reasons to quarantine or hold a release, not silently substitute features.

Rollout moved through the lender-approved personal-loan path in stages. Risk and Compliance owned policy approval; engineering owned feature correctness, model serving, monitoring and rollback compatibility. Historical simulations were not presented as observed approval lift or savings.

Ownership and confidentiality

Engineering depth without naming the customer.

This was EPIC TECHNOLOGY client work, not a personal lending product. The lender's identity and borrower records remain confidential. The technical scope and figures above are from my project account and retain their stated evaluation and production boundaries.