← Portfolio

PortKey

Since May 2026 · Live · Next.js, TypeScript, zod, vitest · OpenAI, Anthropic, Groq

Site ↗Evals ↗AI intake demo ↗access code on requestCode private

A mortgage portability neobank prototype. When a homeowner sells and buys, PortKey lets them carry their existing low-rate mortgage to the new property instead of refinancing at today’s rates.

Intake

A conversational assistant pulls a loan application out of a mortgage statement and a short borrower conversation. Every field records where it came from. Plain code decides which lenders qualify; the model only writes the explanation, and a human approves the handoff.

Providers

Three model providers behind one interface, all fed the same system prompts. Swapping providers is a query parameter, and adding a fourth is a template file. API keys stay in server routes and never reach the browser. One schema validates every model output, whichever provider produced it.

Evals

Every provider change runs through three layers: ten deterministic gates per case, a model judge from a different model family scoring against a locked rubric, and a human calibration step that checks the judge against my own blind labels. Results are published as static JSON on the evals page, which makes no model calls. Offline unit tests cover the app and the eval harness itself.

ProviderCases passing every gateIntake faithfulnessHomeowner tone
OpenAI8/84.33.3
Anthropic8/84.43.6
Groq (open-weight)0/82.22.7

Judge means on a 1–5 rubric, cross-family judges only. From the evals page: runs Sep 21–28, 2026; human labels Sep 29.