Project · Jun 2025 to Sep 2026
Thirteen
The agentic back office general contractors run their business on: 70 tools, crews on WhatsApp, an MCP server, and the evals that keep it honest.
Overview
Thirteen was the core product at Lucile, the platform the agency ran on. It is a back office for construction contractors: jobs, clients, crew hours, receipts, estimates, proposals, change orders, and invoices. By the time I left, three Bay Area contractors were running on it, with over $2M in contracts, 7,500+ crew hours, and 770+ receipts in the system.
What I built
- A tool-calling agent on the Vercel AI SDK and Convex, with 70 permission-scoped tools. Crews log hours over WhatsApp. Owners draft estimates and invoices by describing the job.
- A remote MCP server with OAuth 2.1 sign-in, so contractors could run Thirteen from Claude or ChatGPT without opening the app.
- Evals that meant something. An 82-case tau-bench-style harness against frozen database snapshots, plus 47 Evalite suites. I benchmarked 12 models on it and cut agent response time by 30% without giving up pass^k.
- Rodney, a nightly QA agent that audits every customer's last 24 hours of WhatsApp messages against what actually landed in the database.
What it taught me
The hard part was never the model. It was the permission model, the data model, and the thirty small ways a timesheet can be wrong. Building for people who do not want to open a laptop forced every feature through the question of whether it survived a text message.