Lot Line Analyzer - Personal or Commercial
One command underwrites any rental: cash flow, cap rate, DSCR, 0-100 deal score, 10-year IRR + rate-vs-price grid. Native C++20, 2.87μs, 346k/sec - not Python. Full source, 16 commands, 400+ checks. Try the real engine live below.
- Latency (measured)
- 2.99 µs
- Throughput (measured)
- 334k/sec
- Price
- $999
Measured on win32-x64 (ZachsNitro · 13th Gen Intel(R) Core(TM) i5-13420H · 12 threads) · 2026-10-11 · 5,000 iterations · one deal (amortise + evaluate, parse excluded)
About this bot
## About this bot
Drop in price, rent, loan, taxes, expenses — it tells you if the deal works in 2.87 microseconds.
Lot Line Analyzer is native C++20, not Python. No API calls, runs fully offline, same binary you download is running live in the terminal below.
WHAT IT CALCULATES:
• Monthly & annual cash flow, NOI, cap rate • DSCR and 0-100 deal score • 10-year projection with IRR and equity build • Rate-vs-price sensitivity grid — see exactly where the deal breaks • 16 commands including cashflow, sensitivity, dscr, score
WHAT YOU GET:
• Full C++20 source (not obfuscated) • CMake build, runs on Windows / Linux / macOS • 400+ automated checks, 16 CLI commands • README + BENCHMARKS • Same file you test here is the file you get
TWO WAYS TO BUY:
BUY ONCE — Own it forever
Personal $399 — one person, one deployment, personal deals only
Commercial $1,000 — your whole organisation, up to 3 deployments, client deals included
SUBSCRIBE — Always updated
Personal $35/mo — personal use + all updates + support while active
Commercial $100/mo — commercial use + priority support + all updates
Try before you buy: in the TEST IT terminal below, run: bot cashflow deals.json --years 10
You'll get a 10-year IRR projection in milliseconds. That's the real engine.
Code preview
first 100 lines of modules/realestate/module.cpp - c++201// Lot Line Analyzer - Personal or Commercial — real estate analysis module2//3// Underwriting as queued work. Each stage is a task, so a batch of files4// retries independently and survives a restart:5//6// realestate.analyse a deal file -> year-one metrics, written as JSON7// realestate.project a deal file -> N-year pro forma, IRR, equity build8// realestate.comps a comparable-sales file -> a valuation range9// realestate.portfolio a portfolio file -> a roll-up with aggregate DSCR/IRR10//11// Every handler reads a file the buyer wrote and writes a result into the12// agent's data directory. Nothing here invents a rate, a rent, a growth13// assumption or a comparable sale — a field that is missing is an error that14// names the field, because a defaulted vacancy rate is someone else's money.15//16// The deal file, in full. Every `*_pct` is percentage points:17//18// {19// "name": "412 Wheeler Ave",20// "purchase_price": 425000, "closing_costs": 9350, "rehab": 12000,21// "financing": { "down_payment_pct": 25, "annual_rate_pct": 6.875,22// "term_years": 30, "extra_monthly_principal": 0 },23// "income": { "monthly_rent": 3150, "other_monthly_income": 85 },24// "vacancy_pct": 6,25// "expenses": {26// "annual": { "taxes": 5940, "insurance": 1725, "utilities": 840 },27// "percent_of_egi": { "management": 8, "maintenance": 5, "capex": 5 }28// },29// "growth": { "rent_pct": 3, "expense_pct": 2.5,30// "appreciation_pct": 3, "selling_cost_pct": 6 }31// }32//33// Tuning lives in config/agent.json so a buyer changes policy without a34// compiler:35//36// "module": {37// "projection_years": 5,38// "dscr_floor": 1.20,39// "comps": { "max_distance_mi": 1.0, "max_sale_age_days": 365, "min_comps": 3 },40// "portfolio_path": "deals/portfolio.json",41// "portfolio_interval_s": 042// }43 44#include <algorithm>45#include <cctype>46#include <string>47#include <vector>48 49#include "bs9/agent.hpp"50#include "bs9/json.hpp"51#include "bs9/log.hpp"52#include "bs9/metrics.hpp"53#include "bs9/scheduler.hpp"54 55#include "underwriting.hpp"56 57namespace re = realestate;58 59namespace {60 61constexpr const char* kAnalyse = "realestate.analyse";62constexpr const char* kProject = "realestate.project";63constexpr const char* kComps = "realestate.comps";64constexpr const char* kPortfolio = "realestate.portfolio";65 66/// A file name that cannot collide and cannot escape the data directory.67std::string slug(const std::string& text) {68 std::string out;69 for (char c : text) {70 const unsigned char u = static_cast<unsigned char>(c);71 if (std::isalnum(u) != 0) {72 out.push_back(static_cast<char>(std::tolower(u)));73 } else if (!out.empty() && out.back() != '-') {74 out.push_back('-');75 }76 }77 while (!out.empty() && out.back() == '-') out.pop_back();78 if (out.empty()) out = "result";79 if (out.size() > 60) out.resize(60);80 return out;81}82 83/// The one thing that is genuinely transient here is a file that has not84/// landed yet. Malformed input will read identically on the next attempt.85bool looks_transient(const std::string& error) {86 return error.rfind("cannot read", 0) == 0 ||87 error.find(": cannot read") != std::string::npos;88}89 90} // namespace91 92namespace bs9 {93 94const char* module_name() { return "real-estate-analyzer"; }95 96void register_module(Agent& agent) {97 const realestate::Settings settings =98 realestate::Settings::from(agent.module_config());99 100 // -------------------------------------------------------------- analyseThis is the real file from the archive you receive, with your listing's metadata already substituted.
Licence options
Every licence ships the same source. What differs is how far you may deploy it and whether you may put your own brand on it.
Personal is for one person on one deployment, not for business use. Commercial costs more because it covers your whole organisation on up to 3 deployments, including services you sell to your own clients: the same code, with the rights a business needs.
This listing is $999 — Pro build tier. The price decides what is in the archive; the licence marked below decides what you may do with it, and is the one that ships in your LICENSE.txt.
| Licence | Price | Deployments | White-label | Included |
|---|---|---|---|---|
Personal - Single deployment | $399 one-time | 1 | No |
|
Commercial - Team use This listing | $999 one-time | 3 | No |
|
Agency Bundle - 5 Client Pack | $5,000 one-time (all bots · contact sales) Email to buy | 5 | No |
|
Agency Unlimited ($7500 one-time) | $7,500 one-time (all bots · contact sales) Email to buy | Unlimited | No |
|
Enterprise / White-label (Custom) | CustomRequest a quote | Unlimited | Yes |
|
Personal and Commercial are sold here. Agency and Enterprise cover every bot in the catalogue and are arranged by email: use the button on that row and we reply with a payment link. Questions first? Contact us.
Enterprise is quoted rather than listed. The licence that ships in your archive's LICENSE.txt is the one marked above. Licence prices are what each grant is worth; checkout charges this listing's price, once.
One-time, compared with subscriptions
| Option | Price | Source |
|---|---|---|
| This engine | $399 Personal / $999 Commercial, once | this page |
| DealCheck Starter–Pro | $0–$20/mo | dealcheck.io |
Prices looked up 2026-09-27; check the source before relying on them. A hosted service gives you a web interface and its own support, which this does not; this gives you the source, offline use and no renewal.
Questions before you buy
+Can I try it before I buy?
+Do I need Excel?
deals_template.csv is a plain CSV file: Excel, Google Sheets, Numbers or a text editor all open it. Results come back as deals_results.csv and results.html.+Does it run on Mac or Linux?
+Can my team use it?
+My loan terms differ from the defaults. Does that matter?
+Are updates included?
+What if it does not work?
What's inside
Real-estate underwriting engine: 232KB of source (4,732 lines of logic, 21 files), plus the shared agent core. Everything below is counted from that code — nothing on this list comes from the listing text.
bot amortiseFull loan schedule, interest split and extra-payment effectbot analyseUnderwrite one deal from a JSON file or --price/--rent flagsbot batchUnderwrite and rank many deals at oncebot benchmarkThe standard measurement: 5,000 underwritings of the sample dealbot bulkUnderwrite every deal in a CSV, write a results CSVbot cashflowMulti-year cash flow, equity build and IRRbot compsValuation range from a comparable-sales file, as a taskbot estimateARV, repair budget and rental yield for one dealbot fetchPull rent and value estimates from a market data providerbot heatmapTwo-variable sensitivity grid, terminal or SVGbot interactiveStep-by-step deal questions, then the full underwritingbot measureTime the underwriting pipeline on this machinebot projectQueue an N-year pro forma as a durable taskbot reportOne-page PDF of the underwritingbot scoreScore a deal 0-100 against configurable weightsbot stressUnderwrite N generated deals end to end and time it
4 task handler(s), each with retries and a durable journal: realestate.analyse, realestate.comps, realestate.portfolio (internal), realestate.project
- Tests
- 359 checks across 6 suite(s), all passing (run 2026-09-27)
- Output
- readable text · JSON · CSV
- Speed
- Measured: 2.99 µs mean / 334k/sec — win32-x64, 2026-10-11, 5,000 iterations, one deal (amortise + evaluate, parse excluded). The live test below runs on this site's server, which has fewer cores than the build machine, so its timings are lower than this.
What's inside the zip
The download is the real program and its full source, yours to keep. The terminal further down this page is a separate, read-only demo copy of the same engine: it keeps nothing and cannot write files.
lot-line-analyzer/ (the START files are one folder up, beside App/; everything below is in App/) START_HERE.bat / start_here.command / start_here.sh opens the workspace in your browser workspace/ the workspace page, with the engine and a terminal inside it START_TERMINAL.bat / .command / .sh the program itself, in a terminal window COMMANDS.txt every command, with examples README.md build, run, test, licence notes bin/bot.exe (or bot-macos / bot-linux) the program, ready to run deals_template.csv your deals, one per row RUN_BULK.bat / run_bulk.command / run_bulk.sh -> deals_results.csv + results.html reports/ saved reports src/, include/ ... the full C++ source you own LICENSE.txt what your licence allows
How it works
- 1Download the zip
Unzip it anywhere. No installer, no account, nothing to sign in to.
- 2Double-click START_HERE
START_HERE.bat on Windows, start_here.command on a Mac, start_here.sh on Linux.
- 3Type purchase price, monthly rent, property taxes / year…
It asks for the price, rent, taxes and so on, then prints cash flow, DSCR, cap rate, the 10-year IRR and a sensitivity grid, and saves it in reports/.
All commands
Click one to put it in the live terminal below, or to copy it for the download. The full list, with every option, is COMMANDS.txt in the zip and bot --help.
- Answer a few questions, get the full underwriting, saved to reports/
- One deal from the command line: cash flow, DSCR, cap rate, 10-yr IRR, sensitivity grid
- The same, from a deal file
- Every row of a spreadsheet -> deals_results.csv + results.html
- Underwrite 50,000 generated deals and time it on this machine
- The standard measurement the published speed comes from
- Sensitivity grid of any two inputs
- Year-by-year projection with sale
- ARV from comps, repair budget, the 70% rule
- Score the deal 0-100
- Time one deal's underwriting
- The task scheduler's throughput on this machine
- Product, tier, module and machine
- This list
Live output
Captured from a real run of bot analyse --price 320000 --rent 2800 --taxes 4200 --insurance 1800 --vacancy 5 --down 20 --rate 6.5 --term 30 on linux-x64 (testit demo engine, same source as the download), 2026-09-28. Unedited.
- cash flow before tax $757.32
- per month $63.11
- cap rate (on price) 6.30%
- DSCR 1.04
- other income per month: $0
- IRR 13.33%
- sensitivity: dscr, interest rate +/-1.00 pts (rows) x purchase price +/-10% (columns)
Full output
$ bot analyse --price 320000 --rent 2800 --taxes 4200 --insurance 1800 --vacancy 5 --down 20 --rate 6.5 --term 30
Command-line deal
=================
acquisition
purchase price $320,000.00
closing costs $6,400.00
rehab $0.00
total cost $326,400.00
down payment (20.0%) $64,000.00
cash invested $70,400.00
financing
loan amount $256,000.00
rate 6.50%
term 30 yr (360 mo)
monthly P&I $1,618.09
total interest to payoff $326,516.86
annual debt service $19,417.08
year one operating statement
gross scheduled income $33,600.00
vacancy (5.0%) -$1,680.00
effective gross income $31,920.00
insurance -$1,800.00
taxes -$4,200.00
capex (5.0% of EGI) -$1,596.00
maintenance (5.0% of EGI) -$1,596.00
management (8.0% of EGI) -$2,553.60
operating expenses -$11,745.60
net operating income $20,174.40
debt service -$19,417.08
cash flow before tax $757.32
per month $63.11
returns
cap rate (on price) 6.30%
cap rate (on total cost) 6.18%
cash-on-cash 1.08%
DSCR 1.04
gross rent multiplier 9.52
operating expense ratio 36.80%
break-even occupancy 92.25%
GRM is on scheduled rent only; other income is excluded, which is the
convention lenders use. Break-even occupancy is solved for, not read off
the modelled vacancy, so percentage-of-income expenses scale with it.
assumed (not given on the command line)
other income per month: $0
management, % of collected income: 8%
maintenance, % of collected income: 5%
capital reserve, % of collected income: 5%
closing costs: 2% of price
rehab budget: $0
rent growth, % a year: 3%
expense growth, % a year: 2.5%
appreciation, % a year: 3%
selling costs at sale, % of price: 6%
10-year hold, sold at the end
cash flow, all years $38,669.07
sale price (year 10) $430,053.24
net sale proceeds $187,222.51
total profit $155,491.58
equity multiple 3.21x
IRR 13.33%
sensitivity: dscr, interest rate +/-1.00 pts (rows) x purchase price +/-10% (columns)
$288,000 $304,000 $320,000 $336,000 $352,000
5.50% 1.29 1.22 1.16 1.10 1.05
6.00% 1.22 1.15 1.10 1.04 1.00
6.50% 1.15 1.09 1.04 0.99 0.94
7.00% 1.10 1.04 0.99 0.94 0.90
7.50% 1.04 0.99 0.94 0.89 0.85
What the price buys
- ✓ The full C++ source - you own your copy
- ✓ A single ready-to-run program, no dependencies
- ✓ Pay once and keep it
- ✓ Runs offline, on your machine; your numbers never leave it
One person, one deployment, personal use. The same program and source.
One organisation, any number of its staff, up to 3 deployments, commercial use - including services you sell. No source resale, no white-label.
Both licences ship the identical archive; the difference is what you may do with it.
Unzip, double-click START_HERE, and it opens in your browser.
START_HERE opens workspace.html from your own disk: no install, no server, no network. The engine runs inside the page (the same C++ code as the program, compiled to WebAssembly) with its results, charts and a terminal on one screen.


- C++ engine, 416 automated checks across 7 test suites, all passing (2026-09-28). The tests ship in the download.
- Measured 2.99 µs for one deal (amortise + evaluate, parse excluded) (334k/sec): the native program, 13th Gen Intel(R) Core(TM) i5-13420H · 12 threads, 2026-10-11. Your browser runs the same code more slowly, and the workspace shows its own time next to it.
- Blank until you run it, then only real numbers. It opens empty. Every figure after that is computed by the engine while you watch, or is a dated measurement. No sample deals, no market data, no invented live counters.
- Nothing to set up. No Python, no pip packages, no admin rights, no account. It opens a web page; it does not install software or open a port.
- Terminal inside the page. Type
bot analyse --price … --rent …and the engine prints what the program prints, and fills the panels. The full program is in the same folder: START_TERMINAL runs it in a terminal window. - One-time licence available.
On screen: One deal or A spreadsheet of deals · Year one · DSCR stress grid · 10-year cash flow · Defaults used · Deal results · Terminal
See the output before you buy
20 example rentals across US markets, underwritten in one run of RUN_BULK. The inputs are illustrative numbers typed for this demo, not live listings; the results are the program's unedited output.
made by: bot bulk deals_template.csv · 2026-09-28
TEST IT - LIVE RUN
Runs the Real-estate underwriting engine this listing ships - compiled C++, on our server, right now. What you see is its real output and real timing. This server has fewer cores than the machine the listed figures were measured on, so expect lower numbers here. Type your own deal with --price, --rent, --taxes and the rest, or use deal.json (the sample deal in the product's starter/deals folder, 412 Wheeler Ave). Nothing you type is stored.
Pick a command below or type one, then press Enter. One command per run; this is a read-only demo copy of the engine, and nothing you type is kept.
- One deal from the command line: cash flow, DSCR, cap rate, 10-yr IRR, sensitivity grid
- The same, from a deal file
- Underwrite 50,000 generated deals and time it on this machine
- The standard measurement the published speed comes from
- Sensitivity grid of any two inputs
- Year-by-year projection with sale
- ARV from comps, repair budget, the 70% rule
- Score the deal 0-100
- Time one deal's underwriting
- The task scheduler's throughput on this machine
- Product, tier, module and machine
- This list
