Deal email in. Underwritten PASS/FAIL out.
Five broker emails went into this workflow. Five underwritten verdicts came out, each with the reason attached. The AI reads the email and explains the result — it never touches a calculation. Every number below came from the run.
2:12, no audio. You are watching the actual workflow run in n8n - every figure on screen is real output, not an illustration.
The pipeline
deals@.What came out of the run
| deal | price | rehab | ARV | rent | all-in | cash left | cash flow | DSCR | verdict |
|---|---|---|---|---|---|---|---|---|---|
| 3812 W 130th St, Cleveland | $75,000 | $25,000 | $145,000 | $1,595 | $107,681 | $1,106 | $228/mo | 1.31 | PASS |
| 2140 Larchmont Rd, Cleveland | $145,000 | $55,000 | $215,000 | $1,850 | $213,904 | $55,879 | -$17/mo | 0.98 | FAIL |
| 9021 Sycamore Ln, Columbus | $118,000 | — | $175,000 | — | — | — | — | — | NEEDS DATA |
| 77 Beacon Hill Dr, Pittsburgh | $88,000 | $22,000 | $155,000 | $1,650 | $118,644 | $4,719 | $236/mo | 1.30 | FAIL |
| 4408 Grove Ave, Cincinnati | $82,000 | $28,000 | $165,000 | $1,795 | $118,204 | $0 | $288/mo | 1.34 | PASS |
Why each one landed where it did. Cincinnati ranked first: all-in is 72% of ARV and the refinance pulls every dollar back out. Cleveland W 130th passed with $1,106 left in. Larchmont failed six checks — the all-in is 99% of ARV. Pittsburgh is the interesting one: the numbers work, but the ZIP is outside the target list and the price is $1,500 over the 70% rule, so it fails with exactly those two lines. Sycamore was never underwritten at all — rent and rehab were missing, so it returns NEEDS DATA instead of a metric built on a guess.
The buy box is configuration, not code
I changed one cell in the sheet — min_dscr from 1.25 to 1.35 — and re-ran. No workflow edit.
| deal | DSCR | before | after | reason |
|---|---|---|---|---|
| 3812 W 130th St, Cleveland | 1.31 | PASS | FAIL | DSCR 1.31 vs min 1.35 |
| 4408 Grove Ave, Cincinnati | 1.34 | PASS | FAIL | DSCR 1.34 vs min 1.35 |
Purchase price, rehab ceiling, ARV rules, rent-to-price, cash left, CoC, cap rate, LTV, target ZIPs and every financing assumption work the same way.
What this is — and what it isn't yet
This is the screening core: intake, extraction, validation, underwriting, buy box, ranking and explanation, running end to end. It is not yet pulling third-party property data — the deal numbers come from the email, which is exactly how a broker submission arrives. The next two steps are the ones worth researching before building: pointing intake at deals@, and replacing the broker's ARV and rent with an API-sourced figure carrying a confidence and a source. The underwriting engine is plain code and moves anywhere: n8n, a Python service, or a Lambda.