The Challenge
Opendoor processes thousands of transactions per month across home acquisitions, renovations, and operations — all requiring accurate GL coding, reconciliation, and policy compliance.
Where time was being lost
Design principles
Journal Entry Agent
GPT-4o Mini classifies transactions against a 57-account chart of accounts modeled from Opendoor's 10-K, generating debit/credit pairs with confidence scores and MD&A-ready explanations.
How it works
- 1Transaction arrives with vendor, amount, category, and description
- 2Agent builds a structured prompt including all 57 COA accounts with their types
- 3GPT-4o Mini returns a JSON object: debit account, credit account, confidence, explanation
- 4If confidence < 85% OR amount > $10,000 → flagged for human review
- 5Every classification is written to the audit log with timestamp
SOX controls
| Aspect | Demo (This Project) | Production (Opendoor) |
|---|---|---|
| Chart of Accounts | 57 accounts from 10-K (SQLite) | Live NetSuite COA via REST API or MCP, full segment hierarchy |
| AI Model | GPT-4o Mini (fast, cost-efficient) | GPT-4o Mini — cost-efficient for high-volume classification |
| Review workflow | Approve button in dashboard | NetSuite journal entry approval workflow |
| Data volume | Synthetic transactions modelled from NetSuite export | Live transaction feed across all subsidiaries |
Reconciliation & Matching
A two-part agent: 3-pass bank↔GL reconciliation using fuzzy scoring, and AP invoice three-way match (invoice ↔ PO ↔ receipt). Realistic discrepancies injected at 5% to demonstrate exception handling.
3-Pass Reconciliation
Invoice Three-Way Match
Match invoice against PO and receipt in two passes:
- PO# exact: Invoice PO number matches a known open PO
- Vendor+Amount fuzzy: Same vendor within ±$50 or ±0.5%
- Exceptions: Missing PO, amount mismatch, duplicate invoice
| Aspect | Demo (This Project) | Production (Opendoor) |
|---|---|---|
| Invoice input | Structured fields from SQLite, styled as Deel payment records | PDF extraction via Gemini Vision API |
| Fuzzy matching | Amount + date weighted score | Gemini Embeddings 2 cosine similarity on line items |
| Data source | Synthetic bank (Ramp-style) + GL (NetSuite-style) entries | Ramp API (banking/cards) + NetSuite GL export |
| Exception workflow | Dashboard review panel | Jira ticket auto-created for exceptions |
Flux Analysis
Quarter-over-quarter variance analysis across 21 financial statement line items sourced from Opendoor's SEC filings. Material variances trigger GPT-4o to generate MD&A-ready narratives.
Synthetic material variances (from Opendoor 10-K patterns)
| Aspect | Demo (This Project) | Production (Opendoor) |
|---|---|---|
| Data source | 4 quarters (Q1-Q4 2025) from Opendoor SEC filings | Snowflake dbt-transformed financial mart |
| Narrative generation | GPT-4o on-demand per material item | Batch job night before earnings call |
| Output format | JSON API + dashboard display | Auto-appended to 10-Q MD&A template |
| Thresholds | Configurable in config.py | Set by Controller in YAML per entity |
Policy Agent
A two-part agent: real-time policy Q&A with SSE streaming, and inbound email triage that classifies emails and auto-drafts responses for all classified emails with ≥50% confidence.
Knowledge Base
Email Triage Logic
client.chat.completions.create(stream=True) for real-time token streaming — the same pattern that makes ChatGPT feel responsive. Users see the answer form progressively, not all-at-once.| Aspect | Demo (This Project) | Production (Opendoor) |
|---|---|---|
| Knowledge search | Keyword matching (TF-IDF style) | Gemini Embeddings 2 cosine similarity |
| Email source | Text input in dashboard | Microsoft Graph API (Outlook inbox) |
| Draft delivery | Displayed in UI panel | Created as Outlook draft, ready to send |
| Policy updates | Markdown files, manual re-chunk | CMS (Confluence/SharePoint), auto-indexed on change |
Platform Vision
Four agents are just the start. The same architecture scales to cover the full finance function — from procurement to close to reporting — with a phased adoption roadmap that keeps humans in control throughout.
Full production architecture
- Snowflake (financial data)
- NetSuite GL
- Ramp (banking/cards)
- Deel (contractor invoices)
- SharePoint (policy docs)
- Journal Entry (GPT-4o Mini)
- Reconciliation (GPT-4o Mini)
- Flux Analysis (GPT-4o)
- Policy Chat (GPT-4o Mini)
- FastAPI gateway
- Audit log (PostgreSQL)
- Human review queue
- Notification webhooks
- Outlook (email triage)
- Slack (alerts)
- Jira (exception tickets)
- Tableau (reporting)