Carnegie Mellon University · Software, AI and HCI
I build software for finance, data and AI products in Python, TypeScript and SQL. I focus on clear interfaces, reliable data flows and inspectable results. My work connects product engineering with finance, analytics and applied AI; the projects link their demos to implementation, checks and explicit scope.
Portfolio & case studies ↗ · Project explorer ↗ · Fintech work · Engineering lab · MOTIONX studio
Explore by specialty: Fintech · AI engineering · Data analytics · Product / accessibility
| Project | What to inspect | Demo and evidence |
|---|---|---|
| Frontier AI Valuation Lab · fintech | Illustrative capital decisions, ownership scenarios and a separately checked Python calculation reference. | Interactive studio · Verification |
| LineageGuard Studio · AI engineering | Compose typed workflows, trace evidence and compare two saved reviews locally. | Live demo · Saved-review comparison |
| SaaS Analytics Warehouse · data analytics | Synthetic SaaS metrics through dbt, DuckDB, reconciled MRR, cohorts and data-quality tests. | Report preview · Metric definitions |
| Impact Ledger · data products | Accessible nonprofit participation and spending dashboard with a local SQLite API and atomic imports. | Synthetic preview · Verification |
| ContrastKit · HCI | WCAG 2.2 color checks, OKLCH palette fixes and color-vision simulation in a web app, library and CLI. | Try the app · Source and tests |
| MOTIONX Studio · product engineering | Motion-first Next.js site plus a separately guarded Python outreach-validation workflow. | Live site · Source and architecture |
- Operations handoff: signed event → durable processing → validated import → reporting checks, using installed packages and synthetic records.
- Reference-checked foundations: inspect pricing, statistics, ledger invariants, retrieval and contrast calculations alongside their proving code.
- Research review gate: run six synthetic scenarios and inspect why incomplete evidence blocks a research result.
- Compare saved reviews: choose two exports in Studio’s Compare tab; both are checked locally before differences appear. Recorded decisions and current freshness remain separate, and comparison preserves existing run state. Internal consistency is not authenticated approval.
- Investigate a retrieval change: follow exact-ranking paired measurements, including slower controls, then inspect the extreme-vector repair against an independent numerical reference.
Browse all 19 projects by scenario, technology and area →
Complete project index — finance, data, AI, backend and HCI
Finance and fintech
| Project | What it does | Stack |
|---|---|---|
| quantkit | Options pricing (Black–Scholes–Merton, binomial, Monte Carlo), portfolio optimization and a backtester whose no-look-ahead rule is enforced by tests | Python · NumPy · SciPy · pandas |
| ledgerline | Double-entry ledger API: balanced, immutable journal entries, idempotent writes and race-free overdraft checks | FastAPI · SQLAlchemy · PostgreSQL |
| Agentic Trading Research | Research-only architecture plus a runnable synthetic fail-closed gate with negative tests; no automated order execution · case study | Python · JSON Schema |
Data and analytics
| Project | What it does | Stack |
|---|---|---|
| saas-analytics-warehouse | Tested dbt warehouse for a fictional SaaS company: MRR movements, cohort retention and unit economics | dbt · DuckDB · SQL · Python |
| powerlift | A/B-test statistics plus a seeded CSV → allocation check → CUPED readout, with power, sequential and Bayesian methods checked against SciPy and statsmodels | Python · SciPy |
| Impact Ledger | Reporting dashboard that separates unique people, attendance and session spending, with atomic CSV validation · synthetic demo | TypeScript · Python · SQLite |
Backend reliability and AI engineering
| Project | What it does | Stack |
|---|---|---|
| RelayBox | Signed webhook inbox: idempotent ingestion, durable SQLite jobs, fenced worker leases and bounded retries | Python · SQLite |
| TraceBench | Offline evaluation of recorded AI outputs: strict JSONL contracts, bilingual cases, exact token-cost arithmetic and baseline regression gates | Python |
| citecheck | Question answering over documents with the Claude API: every sentence must cite a retrieved passage, a checker flags unsupported claims, and an evaluation harness scores retrieval, citations and abstention | Python · Claude API · SQLite FTS5 |
| searchlite | BM25F and hybrid retrieval with explainable ranking · relevance workbench · exact-ranking measurements · vector reference checks | TypeScript |
| LineageGuard Studio | Typed agent-workflow runtime with evidence contracts, recovery and policy evaluations | Node.js · SQLite |
| ProofCast | Local media generation, independent saved-file verification, SHA-256 provenance and opt-in Backblaze B2 storage | Python · Streamlit |
Product, design and HCI
| Project | What it does | Stack |
|---|---|---|
| contrastkit | WCAG contrast checks, perceptual color fixes and color-blindness simulation, as a library, a CI-ready CLI and a web app | TypeScript · React |
| MOTIONX Studio | Motion-first studio website with a separate Python outreach-validation workflow | Next.js · TypeScript · Python |
| Blast Radius Daily | One-minute Reddit puzzle game about the blast radius of schema changes · play the offline incident, with fictional tab-memory scores and votes | TypeScript · Devvit |
| Luma Keys | Offline piano practice desktop app: numbered score, sheet music and falling notes, 3-D hands that play a planned fingering, graded sight reading and on-device PDF recognition · portfolio card · isolated browser QA workflow | Electron · React · three.js · Web Audio |
Also built: JUST-QR, a browser QR generator with input recovery and scanner-checked PNG exports, and Teen Budgeting, a Node.js classroom demo.
- Languages: Python, TypeScript/JavaScript, SQL, HTML/CSS
- Backend and data: FastAPI, Node.js, SQLAlchemy, PostgreSQL, SQLite, DuckDB, dbt, pandas, NumPy, SciPy
- AI engineering: Claude API (strict tool use, prompt caching, refusal handling), retrieval and offline evaluation
- Frontend: React, Next.js, Vite, Tailwind CSS, Electron, three.js, Web Audio
- Quality: pytest, Hypothesis, Vitest, Playwright, mypy, ESLint, GitHub Actions
I'm looking for software engineering, AI engineering, fintech and data internships. Reach me through the portfolio contact section.
Projects include deployed apps, libraries, research snapshots, coursework and prototypes, built with AI assistance. Each README explains what can be run and what is out of scope; hosted demos use synthetic data, and none claims production use or customer adoption. Company names in the valuation demo identify independent research subjects and do not imply affiliation or endorsement.

