Loading…

Litigator & Legal-AI Engineer
I solve the hardest problem in legal technology: building systems that actually work when a lawyer's day is on the line. My background is genuinely unusual. I've billed 2,000+ hours at an AmLaw 100 firm managing 1000+ case MDLs — and I've architected production systems at AWS, Apollo GraphQL, and Marriott. That dual fluency isn't a talking point. It's why the things I build don't fall apart when they meet real legal workflow. Right now I'm building at the intersection of agentic AI and legal infrastructure. A few things I've shipped recently: → Donna: A 12-tool Claude-powered agent that deep-researches every developer who's touched a GitHub repo — builds structured intelligence dossiers with fit scores, seniority signals, LinkedIn data, code quality assessments, and legal-tech relevance ratings. Full-stack: Next.js 15, PostgreSQL, BullMQ, Redis, real-time SSE streaming. Open source (AGPL-3.0). → eyecite-ts: A TypeScript port and extension of the Free Law Project's Python citation extraction library. Extracts, resolves, and annotates 12 citation types from legal text — case citations, statutes across 52 jurisdictions, constitutional provisions, subsequent history chains, explanatory parentheticals, and more. Zero dependencies. 2,966-test suite. Open source (MIT). → edgar-ts: A TypeScript SEC EDGAR client for legal and financial AI pipelines. Filing discovery, material contract exhibit extraction (EX-10*), XBRL financial data, full-text search across all SEC filings, and pluggable telemetry. SEC-compliant, zero dependencies. Open source (MIT). I believe the best legal AI isn't a workflow — it's a reasoning system. If your tool can't handle the ambiguity that makes legal work hard, you've automated the easy part and left the lawyering on the table.

TypeScript legal citation extraction — a port of Python eyecite with extended capabilities. Extract structured data from legal citations in court opinions, briefs, and legal documents. A citation like 500 F.2d 123 (9th Cir. 2020) encodes a volume (500), reporter (Federal Reporter, 2nd Series), page (123), court (Ninth Circuit), and year. This library parses all of that into typed objects, resolves short-form references like "Id." back to their antecedents, and can annotate the original text with HTML markup. Zero runtime dependencies, browser-compatible, ~37 KB brotli.