Fantasy-Duel
Backend · API design
FastAPI + Postgres matchmaking service for 1v1 fantasy contests. Built the data model, auth, and migrations end-to-end before pivoting the idea into Snappy.

Building in fintech and sports — a B2B AI underwriting platform (Bashi) and a real-money daily-fantasy app (Snappy) currently in pre-seed.
I studied data science at UC Berkeley, and I now spend my days writing the code, the pitch decks, and the cold emails for two pre-seed companies that have nothing in common on the surface — and almost everything in common underneath.
Bashi turns a multi-week credit-underwriting workflow into an afternoon. Claude-powered extraction, deterministic financial modeling, and an output that looks like the memo a senior credit officer would write.
Snappy is built on a contrarian bet — that the right form-factor for daily fantasy is short, head-to-head, and feels like a mobile game, not a spreadsheet. Live matchmaking, snake drafts, real-time scoring.
Both products live where messy real-world data meets product surface. That's the work I'm interested in: turning the hard, schema-less middle of a problem into something a normal person can use.
An AI copilot for commercial credit underwriting.



Commercial credit underwriting is a multi-week ritual. Analysts manually re-key numbers from PDF financials into Excel, build 3-statement projections, and write a memo. The work is tedious, error-prone, and low-leverage — the slowest part of every middle-market deal.
Bashi reads the PDF the way a credit officer would. It picks the right pages with vision-language models, extracts 51+ metrics with type-checked extractors, builds the deterministic 5-year projection in pure Python, and writes a memo that you'd be willing to put in front of a credit committee.
We turn a two-week underwriting pass into an afternoon. The model does what models are good at — read mess, structure it. The deterministic layer does what models shouldn't — arithmetic, projections, memo skeleton. The human does the only part that still matters: judgment.
Real money. One quarter. Two players. Done.
fig 01 — Snappy live-scoring engine, simulated



DraftKings won by being a spreadsheet. The next generation of fantasy users won't sit down for a 12-hour slate. They'll play in the queue at Chipotle. The product needs to feel like a mobile game, finish in minutes, and make every play feel consequential.
Snappy ships two formats: NBA quarter-only contests that resolve in roughly 30 minutes, and MLB head-to-head snake drafts that finish in three innings. Both are 1v1 by default. Both have a 20-second draft turn timer. Both feel — by design — like a video game.
Live matchmaking with bot fallback. Double-entry ledger across cash and bonus wallets. Glicko-2 ratings that bucket players into divisions from Bronze to Legend. Three independent scoring engines. Real-time stat polling against league feeds. 563 backend tests so the money side never slips.
Six elections, two data sources (Census CPS and Edison exit polls), one stubborn pattern. The Hispanic male presidential margin has collapsed from D+31 in 2008 to R+12 in 2024 — a 43-point realignment, with 35 of those points coming in the last cycle alone.
fig 01 — Method: simple two-party margin from CPS-weighted exit poll crosstabs. Recreated for this site; full code & data on request.
Backend · API design
FastAPI + Postgres matchmaking service for 1v1 fantasy contests. Built the data model, auth, and migrations end-to-end before pivoting the idea into Snappy.
Hardware · IoT
Arduino-based competitive tag system. Embedded firmware, Python backend for match state, and a thin web frontend for scoring.
Hackathon · 36 hours
Two consecutive years competing at UC Berkeley's flagship hackathon. Sleep-deprived shipping, demo-day pressure, public repo.
Side project · scraping
Berkeley dining-hall menu aggregation. Quick public utility built for fellow students.
Best ways to reach me: investor email at adam@bashi.app for fintech, adam@snappyfantasy.com for sports, anything else at the Berkeley address.