I build production AI systems around how teams actually work.
The strongest proof is a commercial brokerage platform I shipped and hardened in a 6-week build cycle: custom portal, Supabase/Postgres deal database, CRM context, Google Drive document corpus, Notion knowledge, Slack-native tool-use agent, and production hardening.
A commercial brokerage moved from scattered forms, spreadsheets, CRM records, Drive folders, Notion notes, and Slack workflows into a production operating system. I built the Supabase/Postgres backend, custom portal, commission and AR tracking, document intelligence, Follow Up Boss/Drive/Notion integrations, and the Slack-native AI layer that answers against the whole system.
DatabaseDeals, commissions, broker splits, payments, leases, audit history.
DocsDrive crawl, parsing, chunking, embeddings, pgvector corpus search.
CRMFollow Up Boss contacts, deals, calls, activity context.
AgentSlack-native Claude tool-use loop with cited answers.
RCB: repeated the operating-system model for another brokerage.
A separate production build covering pipeline, deals, contacts, properties, leases, commissions, AR, statements, documents, reports, auth, uploads, and hardening. This is the repeatability proof: not a one-off KWC build.
View RCB proof →
Service-business pattern
InfluxLead: SMS lead agent with booking workflow.
Multi-tenant SMS/MMS lead response with Claude, Twilio, Google Calendar, contractor notifications, and admin text commands.
View architecture →
Other Technical Builds
GRESB RAG Agent
RAGproduction
RAG advisory agent — 2,021 knowledge-base chunks in pgvector, hybrid retrieval, multi-tenant firm isolation, what-if Excel scenarios via tool use, Teams bot.
View architecture →
ENERGY STAR MCP Server
open sourceMCP
Model Context Protocol server connecting Claude to the EPA ENERGY STAR Portfolio Manager API with 9 typed tools and aggregation endpoints.
View architecture →
ESG Due Diligence Engine
visionprototype
ASHRAE 211-aligned audit engine — Claude vision extracts structured JSON from PCA PDFs and utility bills, then runs ECM, BPS-fine, incentive, NPV/IRR/payback analysis.
View architecture →
Background
Five years leading ESG data and reporting — GRESB, UN PRI, SFDR, GHG Protocol Scope 1/2/3 — left me with a low tolerance for data that cannot be traced or trusted. I now build software to the same standard: RAG over vector databases, tool-use agents wired into operating systems, and multi-tenant platforms I deploy and operate myself.
RootWurx LLC2025 — Present
Founder & Principal Engineer · Remote
Build and operate private AI operating systems for two live clients (~$40K ARR); sole engineer across product, infrastructure, and delivery
Flagship platform (FastAPI · Supabase/pgvector · Next.js · Docker; ~11K LOC, 24 endpoints): deal pipeline, a deterministic multi-tier commission engine, AR, lease/document intelligence, and a content engine that auto-generates marketing on every deal plus a scheduled weekly market brief
Vera — a Claude tool-use agent in Slack: 25 tools across Postgres, a CRM, Notion, and Drive; reads on a read-only role + SELECT-only guard, writes through audited endpoints, and auto-authors reusable skills and scheduled cron jobs as it works
A per-client RAG knowledge layer over all of a client's documents (OCR, section-aware chunking, pgvector) so the agent answers from unstructured and structured data together
Production hardening: RLS with explicit deny policies, OAuth2 PKCE token rotation, an 86-test suite incl. a security-contract suite, CI/CD, 24/7 monitoring. Built a second client an entire operating system and CRM from scratch in ~2 weeks
Kayne Anderson Real EstateMar 2024 — Present
Associate, Sustainability · Data & Reporting Lead · Boca Raton, FL
Own the data and reporting behind the firm's ESG program across 1,100+ assets — the source of truth for GRESB, UN PRI, SFDR, and investor DDQs, where the data has to withstand third-party assurance
Led the full GRESB reporting cycle end to end — the firm's first 5-Star rating and 2× Sector Leader
Lead reviewer for all investor ESG DDQs at asset, fund, and firm level; directed UN PRI and SFDR Article 8 & 9 reporting
Built decarbonization baselines on GHG Protocol Scope 1/2/3 and the Power BI + EPA ENERGY STAR API + SQL analytics layer that automates KPI tracking across the portfolio
Verdani PartnersJun 2022 — Mar 2024
Senior ESG Data Analyst · Data Management Lead
Data management lead for the firm's largest client (1,400+ assets) in Measurabl; owned GRESB data integrity and submissions across 26 funds; ENERGY STAR benchmarking and certification.
FairsteadJan 2022 — Jun 2022
Energy and Sustainability Data Analyst
Portfolio-wide energy and cost data management, improving accuracy by 65% within first month. Energy conservation analysis and annual ESG reporting.
Skills & Tools
Data & ReportingGHG Protocol (Scope 1/2/3), GRESB, UN PRI, SFDR (Art. 8 & 9), TCFD, ENERGY STAR / Portfolio Manager, data QA & assurance, Measurabl, Power BI, SQLAI & LLMClaude (Sonnet/Opus/vision), OpenAI embeddings, RAG (pgvector + HNSW, hybrid & indicator-aware retrieval), tool use / agentic loops, Model Context Protocol (MCP), prompt engineering with hallucination guardrails, prompt cachingDevelopmentPython (FastAPI, SQLAlchemy, async), TypeScript/Node.js, PostgreSQL, Supabase (pgvector), Docker, Nginx, DigitalOcean, GitHub Actions CI/CDIntegrationsOAuth2/PKCE, webhooks (Stripe, Twilio, Postmark), Slack SDK, Twilio SMS/MMS, Follow Up Boss, Notion, Google Drive/Calendar, EPA ESPM APIVerificationpytest, security-contract tests, parity tests, retrieval test suites, JSONB audit logging, per-call cost telemetry
Education
Stevens Institute of TechnologyMay 2021
M.S. Sustainability Management
Rowan UniversityMay 2019
B.A. Environmental Studies · Minor: Planning & Sustainable Built Environments
ENERGY STAR MCP Server
Open-source Model Context Protocol server connecting Claude to the ENERGY STAR Portfolio Manager API. Enables natural-language querying of live portfolio energy data — property info, consumption metrics, benchmarking scores, and building characteristics.
open sourceMCPPython
Architecture
Claude Desktop or any MCP client
→
MCP Protocol stdio transport
→
ESPM MCP Server Python · typed tools
→
ENERGY STAR API Portfolio Manager
Tool Catalog — 9 typed tools
get_account
Account info — name, organization, and whether you're on the test or live environment
params: —
list_properties
List every property ID in the account — the discovery entry point
params: —
get_property
Property details — name, address, gross floor area, primary function, year built
params: property_id
get_property_metrics
ENERGY STAR score, site & source EUI, GHG emissions; defaults to last full year
params: property_id, year?, month?
list_property_groups
List property groups (by fund, asset type, management style) and their IDs
params: —
get_property_group
Name and details of a specific property group
params: group_id
get_group_score_summary
Avg / min / max ENERGY STAR score for a group, with a per-property breakdown
params: group_id
get_portfolio_summary
High-level roll-up across the whole portfolio — scores & EUI (samples up to 50)
params: —
get_energy_star_certification_summary
Counts properties actually certified in a year, using certification metrics not score alone
params: year
Why This Matters
ENERGY STAR Portfolio Manager holds data on 600,000+ commercial buildings — but its interface requires manual queries and CSV exports. This MCP server lets any Claude-powered workflow access that data through natural language. Ask "What's the EUI trend for my NYC office portfolio?" and get structured data back, ready for analysis. Published open-source for the sustainability community.
GRESB.AI — RAG Advisory Agent
AI-powered GRESB Real Estate Assessment advisor. RAG pipeline over the complete 2026 GRESB standards, historical scoring documents, and firm-specific portfolio data. Delivers indicator-level guidance, what-if scenario modeling with Excel export, and ASHRAE EUI threshold analysis.
RAGpgvectorClaude APIStreamlitTeams Bot
2,021
Knowledge chunks
644
Indicator pages
1,100
ASHRAE EUI targets
3
Interfaces
RAG Pipeline
GRESB GitBook 2026 standards
→
Scraper scraper.py + scrape_roadmap.py
→
Chunk & Embed ingest.py · OpenAI embeddings
→
Supabase pgvector HNSW index
↓
User Query
→
Hybrid Retrieval semantic + keyword
→
Context Assembly core.py · build_context()
→
Claude Sonnet ask_claude() + tool_use
→
Response + scenario Excel
Knowledge Base Composition
644 chunks
2026 indicator pages — every indicator (LE1–LE5, PO1–PO3, RM1–RM7, EN1, GH1, etc.) split by section: intent, scoring, validation, references
1,245 chunks
Historical docs — 2024 + 2025 scoring documents and reference guides, chunked with sliding window
253 chunks
Roadmap & strategy — Foundation Roadmap 2026, Standard Updates PDFs, Climate Action Plan
112 chunks
Firm data — synthetic portfolio (30 assets). Multi-tenant isolation by firm_id
Interactive Demo
GRESB.AI — Assessment Advisor
U
What evidence is required for LE1?
G
LE1 (Leadership - Sustainability Commitments) requires documented evidence of ESG commitments at the entity level. Specifically: a formal sustainability policy or mission statement, board or C-suite level ESG oversight documentation, and evidence that sustainability commitments are publicly disclosed. The key distinction in the 2026 assessment is that commitments must be entity-level, not just fund or portfolio-specific.
Delivery Interfaces
Streamlit App app.py · chat UI + file downloads
REST API api.py · FastAPI · POST /ask
Teams Bot teams_bot.py · Azure Bot Service
ESG Due Diligence Engine
Desktop audit engine producing outputs equivalent to an ASHRAE Level II energy audit from three inputs: a PCA report, 12 months of utility bills, and basic property data. Models 30+ ECM categories across 10 building systems, forecasts GHG emissions using eGRID and NREL Cambium, and calculates BPS fine exposure by jurisdiction.
ASHRAE Standards 211, 90.1, 105, 100 · DOE Commercial Prototype Building Models · EIA CBECS & RECS · EPA eGRID · EPA ENERGY STAR Portfolio Manager · WaterSense Standards · DOE BPS Policy Tracker · DSIRE Incentives Database · RS Means Construction Cost Data · NREL Cambium Dataset · Engineering firm benchmark data (2025)
Brokerage OS — shipped and hardened in 6 weeks
The flagship RootWurx build: a production commercial brokerage operating system with a custom portal, Supabase/Postgres deal database, commission and AR tracking, lease/document intelligence, Follow Up Boss context, Google Drive corpus, Notion knowledge, Slack delivery, and a tool-use agent layer on top. A deal entered once fans out across the business: financial tracking, document workflows, marketing generation, Slack alerts, and searchable institutional memory.
id uuid PK table_name, record_id action (create|update|delete) diff_json, notified_ops changed_by_agent_id
System Architecture
React Portal
→
Supabase PostgreSQL · Realtime
→
Edge Functions
↕
Vera Agent 25-tool tool-use · 5 live sources
Claude API deal summaries · content
Google Forms webhook intake
Email (Resend) notifications · reports
Live Demo — One Record, Every System
A deal entered once fans out across the whole back office. Switch tabs to see each connected capability — the fan-out, the live pipeline dashboard, lease abstraction, and auto-generated marketing.
One closed deal, entered once — six systems update automatically.
northbridge.platform · one record → six systems
1 deal entered
Cardinal Pointe
Multifamily · 184 units · $42.8M
Closed by Marco · 04/16
fans out automatically →
▦
Announcement graphic
Branded announcement card rendered
✓
✎
Social posts
LinkedIn + Instagram drafted
✓
◆
Slack alert
Posted to #deals for the team
✓
▤
Accounts receivable
Receivable + draw schedule tracked
✓
%
Commission tracking
Splits & payouts calculated
✓
◷
Proactive AI alerts
Lease expirations & overdue AR flagged
✓
Pipeline, lease tasks, and AI document parsing in one operating dashboard.
cre.operating · pipeline
Pipeline · Q4 2026
Active Deals
AllMineClosing
42
Active deals
18
Under contract
$24.7M
Total volume
Volume · last 12 wks▲ 18.4%
Cardinal Pointe
Multifamily · 184 units
Underwriting
Marco
$42.8M
Mason Industrial
Industrial · 220k sf
LOI Signed
Priya
$28.4M
Ridge & Vine
Mixed-use · 96k sf
Diligence
Marco
$19.1M
Holloway 12
Office · 64k sf
Sourcing
Sam
$11.6M
RW
Agent · just now · Mason Industrial
Parsed PSA — 14 line items posted to Diligence. 2 require review: [CAM cap] & [exclusivity radius].
A lease PDF parsed into a structured abstract, with an LOI drafted from the same data.
lease-intelligence · abstract + LOI
Meridian_Lease.pdf · 38 pp
Extracted abstract
TenantMeridian Health LLC
PremisesSuite 400 · 6,200 RSF
Term7 years
CommencementAug 1, 2026
Base rent$28.50 / RSF NNN
Escalations3% annual
RenewalTwo 5-yr options
TI allowance$45 / RSF
Security2 months
Drafted LOI
Meridian Health to lease 6,200 RSF (Ste 400), 7-yr term at $28.50/RSF NNN, 3% annual bumps, $45/RSF TI, two 5-yr renewals. Ready for review.
The moment a deal closes, the announcement graphic and posts write themselves.
content-engine · auto-marketing
Deal closed · generating assets…
OFFICE
TENANT REPRESENTED
NCOMMERCIAL ADVISORY
12,500 SQFT
Northbridge Commercial
1450 Commerce Blvd, Suite 200 · Austin, TX (sample)
LinkedIn post · drafted
NC
Northbridge Commercial
Just now · 🌐
Proud to announce the closing of Cardinal Pointe — a 184-unit multifamily community in Tampa, FL.Our team represented the buyer from underwriting through close at $42.8M.Another result built on disciplined, tenant-first representation.#CRE #Multifamily #TampaRealEstate #JustClosed
Verification & Safety
86 automated tests across the platform — the commission math, lease extraction, the agent's tool-use parity against the legacy path, and a security-contract suite that fails closed · a changelog table that records a JSON diff of every record mutation · a read-only database role for the agent (SELECT-only, enforced at the Postgres layer) · OAuth2 PKCE with single-use refresh-token rotation, hardened to volume-mounted persistence after a real production incident.
Second Client — Their Entire System of Record
The same foundation became a second firm's entire system of record. In about two weeks I stood up a 16-module operating platform with its own row-level-security model and 19 database migrations — their deals, contacts, properties, leases, commissions, AR, statements, documents and reporting all live in one place now.
Pipeline & deals
pipeline, deals, properties, contacts, agents — the full origination-to-close workflow
Money
commissions, ar (accounts receivable), statements — splits, payouts and owner statements
Documents & leases
documents, leases, tracker — abstraction and document management
Reporting & ops
reports, dashboard, feedback — analytics and the team's daily view
RCB — second brokerage operating-system deployment
A separate RootWurx client build proving the brokerage operating-system pattern was repeatable, not a one-off. RCB required its own workflow, schema, role model, auth path, upload controls, reporting surface, and launch hardening across deals, contacts, properties, leases, commissions, AR, statements, documents, and dashboards.
Next.jsSupabase/PostgresAuth + RLSReporting
16
operating modules
21
database migrations
RLS
client-specific access model
Live
production-hardening path
Why it matters
The first brokerage build proved I could ship a complex operating system. RCB proved I could adapt that operating model to a different brokerage context: different entities, workflows, permissions, reports, imports, and launch constraints. The architecture repeated; the implementation was client-specific.
System surface
Pipeline & deals
Pipeline views, deal records, deal detail pages, agent assignment, stage movement, export paths, and activity history.
The point is not that RCB reused a template unchanged. The point is that the same product thesis held up under a second real client: brokerages need one operational backbone for deals, money, documents, reporting, and team workflow.
Slack-native AI layer over the brokerage OS
The agent layer originally had an internal name, but the important part is the architecture: Claude tool use inside Slack, connected to the live deal database, CRM, Notion, Google Drive, and document corpus. It answers with citations, carries persistent memory, runs scheduled digests, and writes reusable skills as it learns recurring workflows.
Claude tool useself-improvingproductionSlack
25
Tools
4
Live data sources
≤8
Tool calls / question
100%
Answers cited
Tool-Use Loop
@mention in Slack
→
Claude tool-use loop ≤8 calls · retry on transient · cached
Vera is a Claude tool-use agent living in Slack — a 25-tool registry across five systems (Postgres deal DB, CRM, Notion, Drive, and a RAG corpus of the firm's own documents). It answers plain-English questions in-thread with citations pinned to the exact source, carries persistent memory, and runs scheduled digests (e.g. weekly AR aging). Safety by construction: a read-only database role, an 8-tool-call cap, and every tool call audited.
northbridge.slack.com › Vera
V Vera APP
MC
Maya Chen8:42 AM
@Vera what's our procedure when a client misses two payments?
Works a problem figures out the right tool sequence
→
skill_write persists the method to its skills table
→
Next run, skill_read preloaded into the system prompt
Vera isn't a fixed prompt. When it works out a reliable way to answer a recurring kind of question — which tables to join for AR aging, how a given firm labels its deal stages, a teammate's standing preferences — it calls skill_write to persist that method as a reusable skill in its own table. On the next invocation those learned skills, per-user preferences and past failures are read back and preloaded into the system prompt. The agent gets more capable the longer a team uses it, without me redeploying anything.
Proactive — Scheduled Digests
“Save this as ‘Monday AR aging’ and run every Monday at 9am” is stored as a saved query; an APScheduler cron inside the container re-runs the full tool-use loop and posts the result to the channel. An optional condition-SQL pre-check skips the run — and the LLM cost — when there's nothing to report. Any teammate can trigger a saved digest on demand.
Safety & Verification
Read-only Postgres role and a SELECT-only guard at the tool layer — writes are rejected even if the guard is bypassed · 8-tool-call cap per question · within-question result cache (a repeated lookup hits the cache, not the API) · retry-once on 429/5xx before counting against the cap · per-tool result truncation · every tool call audited to a JSONB trace. Shipped behind a feature flag with a 15-question parity suite proving the new tool-use path matched the legacy path before cutover.
InfluxLead — AI SMS Lead Response
When a lead comes in from any source — web form, ad, missed call, referral — InfluxLead responds via SMS in seconds using a named AI agent. Qualifies the project through natural conversation, accepts MMS photos for AI damage analysis, scores leads, and auto-books estimates into Google Calendar. The contractor manages everything via text commands to the same Twilio number.
Scope, budget, appointment — handled entirely by the AI. The contractor gets a booked calendar event; the lead gets a confirmation text. Zero human involvement until the site visit.
Customer's phone
9:41
‹
SRSummit Remodel ⌄
ⓘ
Today 8:42 PM
hey — looking for a quote on a bathroom remodel. master bath, ~80 sq ft
Hi! Happy to help 👋 Keeping the existing layout, or moving plumbing?
same layout, keeping plumbing where it is
Great. Finish level — builder, mid, or high-end?
mid finish. tile shower, double vanity
Got it. Is this your primary residence or a rental?
primary
And what's your ideal window to start?
next month if possible
Perfect. For that scope, typical range is $18–26k, about 4–6 weeks. Want me to grab a site visit? I've got Thu 10 AM or Fri 2 PM.
thursday 10 works
Delivered
You're booked for Thu 10 AM ✓ Calendar invite sent. Our PM will confirm Wed.
APR16
Site Visit · Maya Chen
Thursday, 10:00 – 10:45 AM
✓ Added to Google Calendar
+Text Message↑
‹
RWRootWurx · Bookings ⌄
ⓘ
Today 8:43 PM
✅ New booking — Maya Chen · bathroom remodel (master, ~80 sf). Mid finish, keeping plumbing. Est. $18–26k, 4–6 wks.
APR16
Site Visit · Maya Chen
Thursday, 10:00 – 10:45 AM
✓ Added to Google Calendar
Site visit's on your calendar. I'll text Maya a reminder Wed AM.
👍 nice
+Text Message↑
Lead Response Flow
Lead arrives form · ad · missed call · referral
→
InfluxLead intercepts webhook · Mailgun · Twilio
→
AI responds <60s named agent · Claude Sonnet
↓ natural conversation
AI qualifies project type · budget · timeline
→
Lead scored hot · warm · cold
→
Auto-books estimate Google Calendar API hidden [BOOK:N] tags
→
Contractor notified SMS · hot lead alert
Admin SMS Interface
status
Weekly summary — new leads, hot leads, booked, upcoming estimates
hot leads
Top 5 hot leads with name, project type, phone number
schedule
Today's appointments + this week's upcoming bookings
free-text intake
"New lead Mike 561-555-1234 needs roof repair" → Claude parses, creates lead, triggers AI outreach automatically
Multi-Tenant Architecture
Each contractor is a single database row with their own Twilio number, AI agent name, custom system prompt, Google Calendar connection, admin phones, and service area. New clients require zero code changes — add a contractor record and buy a Twilio number. The AI agent knows the business name, services offered, service area, and operating hours from the contractor's system prompt.
Infrastructure
Multi-tenant on a DigitalOcean VPS · FastAPI on port 8000 · PostgreSQL · Twilio A2P 10DLC (pending carrier approval) · Mailgun inbound email parsing · Claude Sonnet with vision (MMS photo analysis) · Google Calendar OAuth · Nginx + SSL · systemd · Admin SMS commands via Claude intent classification