BotStudio9
Real Estate Analyzer
Featured

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++20
modules/realestate/module.cppc++20
1// Lot Line Analyzer - Personal or Commercial — real estate analysis module
2//
3// Underwriting as queued work. Each stage is a task, so a batch of files
4// retries independently and survives a restart:
5//
6// realestate.analyse a deal file -> year-one metrics, written as JSON
7// realestate.project a deal file -> N-year pro forma, IRR, equity build
8// realestate.comps a comparable-sales file -> a valuation range
9// realestate.portfolio a portfolio file -> a roll-up with aggregate DSCR/IRR
10//
11// Every handler reads a file the buyer wrote and writes a result into the
12// agent's data directory. Nothing here invents a rate, a rent, a growth
13// assumption or a comparable sale — a field that is missing is an error that
14// 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 a
34// 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": 0
42// }
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 not
84/// 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} // namespace
91
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 // -------------------------------------------------------------- analyse

This 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.

LicencePriceDeploymentsWhite-labelIncluded
Personal - Single deployment
$399 one-time1No
  • 1 person, 1 deployment
  • Personal, non-commercial use
  • No client resale
  • No white-label
Commercial - Team use
This listing
$999 one-time3No
  • Up to 3 deployments
  • Any number of users in one organisation
  • Commercial use, including services you sell
  • No source resale or sublicensing
  • No white-label
Agency Bundle - 5 Client Pack
$5,000 one-time
(all bots · contact sales)
Email to buy
5No
  • Up to 5 client deployments
  • Per-client keys
  • Agency use allowed
  • Email support
  • No white-label
Agency Unlimited ($7500 one-time)
$7,500 one-time
(all bots · contact sales)
Email to buy
UnlimitedNo
  • Unlimited deployments
  • Unlimited keys
  • Agency use allowed
  • Priority support
  • All future updates
  • No white-label
Enterprise / White-label (Custom)
CustomRequest a quoteUnlimitedYes
  • Everything in Agency Unlimited
  • Full white-label with your logo
  • Custom domain
  • Source code option
  • Dedicated support
  • Custom SLA

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

OptionPriceSource
This engine$399 Personal / $999 Commercial, oncethis page
DealCheck Starter–Pro$0–$20/modealcheck.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?
Yes. The live terminal on this page runs the same engine the download ships, on our server. Paste your own numbers into it; nothing you type is kept.
+Do I need Excel?
No. 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?
The download includes a ready-to-run program for Windows, Linux, macOS.
+Can my team use it?
Personal is 1 person, 1 deployment, not for business use. Commercial covers one organisation: any number of its staff, up to 3 deployments, commercial use including services you sell. Need more deployments or client use? The Agency licences in the table above are arranged by email.
+My loan terms differ from the defaults. Does that matter?
No. Every assumption - rate, term, down payment, vacancy, management, reserves, growth rates - is a flag or a CSV column. Anything you do not give uses a stated default, and the output lists every default it used, so nothing is guessed silently.
+Are updates included?
You buy this version with its full source, and it keeps working without us. Personal and Commercial do not include future updates; Agency Unlimited does.
+What if it does not work?
Before you download, you can have a full refund within 14 days for any reason. After download, you are refunded if the archive does not build from its own README, a feature named on the listing is missing or broken, or the licence does not match - a fix is offered first. Full terms: refund policy.
Read from the source

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.

16 commands you can run
  • bot amortiseFull loan schedule, interest split and extra-payment effect
  • bot analyseUnderwrite one deal from a JSON file or --price/--rent flags
  • bot batchUnderwrite and rank many deals at once
  • bot benchmarkThe standard measurement: 5,000 underwritings of the sample deal
  • bot bulkUnderwrite every deal in a CSV, write a results CSV
  • bot cashflowMulti-year cash flow, equity build and IRR
  • bot compsValuation range from a comparable-sales file, as a task
  • bot estimateARV, repair budget and rental yield for one deal
  • bot fetchPull rent and value estimates from a market data provider
  • bot heatmapTwo-variable sensitivity grid, terminal or SVG
  • bot interactiveStep-by-step deal questions, then the full underwriting
  • bot measureTime the underwriting pipeline on this machine
  • bot projectQueue an N-year pro forma as a durable task
  • bot reportOne-page PDF of the underwriting
  • bot scoreScore a deal 0-100 against configurable weights
  • bot 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 you get

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

  1. 1Download the zip

    Unzip it anywhere. No installer, no account, nothing to sign in to.

  2. 2Double-click START_HERE

    START_HERE.bat on Windows, start_here.command on a Mac, start_here.sh on Linux.

  3. 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
Personal
$399

One person, one deployment, personal use. The same program and source.

Commercial
$999

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.

New · one-click workspace

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.

The Lot Line workspace as it opens: empty inputs, and each panel waiting for a deal
As it opens: blank. Nothing is pre-filled and nothing runs until you do.
The same workspace after entering a $200,000 price and $1,800 monthly rent: year-one results, DSCR stress grid and 10-year cash flow
No market data included - example shown after entering a deal ($200,000 price, $1,800 rent), all figures computed locally on your computer.
  • 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

Real engine · server-side

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.

All commands →
bs9@botstudio9:~/lot-line-analyzer-commercial

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.

$
Commands to try - click to load, or copy
  • 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