HB Capital Deal Dashboard
One screen for every deal, lender and email thread.

Architect, designer and builder
2026
Deal operating system
Interface: PHP, JavaScript Data: Supabase: PostgreSQL, Row Level Security, Edge Functions (TypeScript on Deno), pg_cron, pg_net, pg_trgm AI: Claude Opus via the Anthropic API, structured tool outputs, scheduled Claude agent runs Integrations: Microsoft Graph (Outlook mail, folders, categories and webhooks), SharePoint, Entra ID, SEC EDGAR filings
Live and in daily use by the HB Capital team
Challenge
Commercial real estate lending runs on relationships, and relationships run on email. At HB Capital, every deal lived across four team inboxes, thousands of lender threads, and whatever each of us happened to remember. Which lenders had seen this deal? Did anyone reply? Who actually lends on behavioral health in Arizona? The answers existed, but they were scattered, and the work of connecting them happened in people's heads.
What I Built
A deal operating system that sits on top of the firm's inbox. Every hour it reads new mail across the team's mailboxes through Microsoft Graph, matches each thread to its deal, and has Claude summarize where things stand and pull out the action items, each one traced to the exact sentence it came from. Underneath is a lender intelligence layer: more than 5,000 lending companies and 2,100 individual loan programs, screened against every deal so the team starts with the lenders most likely to say yes. A maturity radar reads over 16,000 securitized loans from public SEC filings to find refinancing opportunities before they hit the market. Referral partners get a live view of their deals, and outreach drafts are written in each team member's own voice. One rule runs through all of it: the machine suggests, people decide. A thread matched by guesswork stays a suggestion until someone confirms it, and an item a person has closed is never reopened by the AI.
$2B+
Pipeline managed
2,100+
Loan programs screened
16,000+
Securitized loans on the radar


The Hard Part
The hardest problems were the quiet ones. At one point the email matcher stopped proposing new links for weeks while still reporting success, because the database API caps every response at 1,000 rows and says nothing when it cuts one off. Another time, an audit showed that only 113 of nearly 1,200 automated "reply received" notes could be verified, so I retired that job and rebuilt it with stricter rules: a note gets written only when the message, the deal and the lender all line up. A system people rely on has to be honest about what it doesn't know. Moving mail inside a teammate's inbox is the kind of automation that loses people's trust after one bad run. So existing threads were moved in batches: each run started as a dry run I reviewed, skipped any message a person had already moved, refused to file anything that could belong to more than one deal, and kept an undo log for every move.



Outcome
The team now opens one screen in the morning instead of five. Deal status, lender replies and the next follow-up are all visible together, and the outside systems update themselves instead of waiting for someone to copy data across.

