Where every number on this site comes from
One source, read once a week. Every figure recomputed from the published numbers. Every check shown with its count. No verification, and no badge pretending otherwise. This page is the ledger behind the four commitments — the place to catch us if a number here says more than the data behind it supports.
Every figure on Main Street Diligence comes from the 2,079 businesses actively listed on the Business Brokers of Florida MLS on September 14, 2026, read once a week from the public search page, recomputed from the published numbers, and checked against themselves. 124 of them (6%) fail at least one arithmetic check, and every failure is printed on the listing. The site’s own checks were re-run over all 2,079 of them when this page was built and graded 2,079 of 2,079 the same way the ranking does. Counted from the crawl of September 14, 2026; recomputed on every build, never typed in. Nothing on this page is verified against a document, because nothing on this site is.
One source
Every listing on this site is an active business-for-sale listing on the Business Brokers of Florida MLS, published at bizmls.com on a public search page that needs no account and no login. We do not accept listings, we do not take a feed from anyone, and no broker can pay to appear, to rank, or to carry a badge. Florida only, by design: we would rather be able to defend every figure in one state than reprint feeds from fifty.
What is taken from each listing is what the broker published: the asking price, the down payment, the discretionary earnings, the revenue, the category, the location, the broker’s own description, and — from the listing’s detail page — up to three fiscal years of figures with the label the broker put on each one, the asset schedule, seller-financing terms and owner hours. Every listing here carries its BizMLS number and a link back to the source, and the description is quoted as written and attributed, never rewritten. What we add is arithmetic on top of those figures, and the arithmetic is the whole product.
How often it is re-read
Every Monday at 07:00 Eastern the crawler sends one request to the public search
page, which returns the whole BBF inventory, and two hours later reads each active listing’s
detail page one at a time with a pause between requests. It identifies itself by name with a
contact address on every request, honours the site’s robots file, never rotates addresses or
disguises itself, and has a single stop switch that halts every crawl before its first request.
The full policy, including what happens if the source ever asks us to stop, is written down in the
repository as docs/crawl-policy.md.
A listing that leaves the source index is marked inactive here, not deleted, and every change to a listing’s price, down payment, earnings, revenue or status is recorded in a history table from the crawl that saw it. That is what lets the site say how long something has been listed and when its price was cut — and it can only accumulate forward, which is why the crawl is weekly rather than monthly.
The date of the crawl each figure describes is printed in the footer of every page of the app, next to the number of active listings it covers. If that date is more than eight days old the footer turns amber, because a figure that has quietly aged is worse than one that says so.
What is computed, and from what
Nothing on a card is reprinted from the listing except the four figures the broker published. Everything else is recomputed here from those four, so that a reader can check it:
- SDE ÷ price, the payback period and the earnings multiple are the published earnings and the published price, divided. They are not returns — they are two seller figures in a ratio, before the owner’s labour, financing or tax — and the SDE page says why the site stopped calling the first one “ROI”.
- The Overall Score is a percentile rank across the active inventory: 70% on SDE ÷ price, 30% on revenue to investment. It ranks listings against each other and says nothing about value. It is shown as a band (Top 5%, Top half) because two decimals of a percentile imply a precision the inputs do not have.
- Medians, never averages, for every headline figure, with placeholder prices under $10,000 excluded — a “call for price” listing carries a token figure and a $1 price inside a median is a claim about the market rather than a measurement of it. The definitions are checked into the repository as SQL so they can be read.
- The lender’s screen deducts a standardized $75,000 manager’s wage from the most recent published year, then asks whether debt at 90% of the asking price would come to more than 3.5× what is left. Part of that carries the SBA’s name and part of it is ours, and the difference matters: the eligibility rules and the 10%-down minimum equity injection are written down in 13 CFR and the SOP, and every badge cites the one it was graded under, but the 3.5× ceiling is ours — a deliberately conservative first-pass leverage cap, not an SBA threshold and not an underwriting decision, which turns on debt-service coverage at a lender’s own rate and term. The $75,000 is a convention too, not the market rate for a manager in any particular trade. Neither number is load-bearing on its own. Hold the wage at $75,000 and move the ceiling from 3.0× to 4.0× and the number of listings that pass runs from 262 (13%) to 473 (23%), against 375 (18%) at the setting the site publishes. The headline is a reading taken at one standardized setting, not a property of the market, and the setting is the first thing to argue with. Eligibility defaults to the SOP 50 10 8.1 rules a deal starting today would close under; the book in force until 1 October 2026 is SOP 50 10 8, and the sidebar’s “Underwrite to” control grades every listing to it. How it works walks through it; the research has the rule change in detail.
The checks, with today’s counts
Every active listing is run through the checks below, in the browser, every time it is drawn. The outcome is printed on the card as one of three grades, and the top grade is deliberately low: figures add up means the published numbers do not contradict each other, and its own tooltip says it tests arithmetic, not truth. A listing with invented but internally consistent figures earns it, and that is the correct behaviour, because the alternative is a badge implying a verification nobody in this market can perform. Across the 2,079 active listings when this page was built: 1,599 read figures add up, 356 read partly disclosed, and 124 read figures don’t add up.
Failures
Two published figures cannot both be right. Printed on the card in amber, and the listing ranks after every listing that passes.
| Check | Why it matters | Listings today |
|---|---|---|
| Figures recovered from a malformed source block The source page did not close its table markup and the parser had to recover this listing’s cells from a broken block. |
The figures are the listing’s own, but the block they came from was damaged. Treat them as unconfirmed. | 21 |
| Earnings exceed the asking price Published earnings divided by the asking price is above 100%. |
A going concern priced below one year of owner earnings is usually a typo, a multi-year figure, or a genuine distressed sale. Ask which. | 63 |
| Earnings negligible against the price Published earnings divided by the asking price is below 1%. |
The price would take a century of current earnings to recover; the earnings field is probably a placeholder or the sale is asset-based. | 5 |
| Earnings above 90% of revenue Discretionary earnings are more than nine-tenths of revenue. |
Even an owner-run service business has some cost of sales. The two figures were probably not prepared on the same basis. | 23 |
| Asking price is a placeholder A published price under $10,000. |
“Call for price” listings carry a token figure. Every ratio built on it is removed rather than computed. | 5 |
| The two BizMLS pages disagree The search listing and the listing’s own detail page publish different earnings. |
Same broker, two figures. One is out of date. Ask which is current before using either. | 2 |
| Headline earnings are an older, better year The advertised earnings figure is from an earlier fiscal year than the latest one published, and the earlier year is the higher one. |
Every return on the page is then computed from the more flattering of two figures the same broker published. | 19 |
| Headline earnings match no published year The detail page publishes at least one fiscal year and the advertised figure is none of them. |
Ask what period the advertised figure covers. | 2 |
Gaps
Something is not published. A broker’s disclosure decision, not a defect in the business — shown in grey and never used to move a rank.
| Check | Why it matters | Listings today |
|---|---|---|
| A price, earnings or revenue figure withheld One or more of the three headline figures is not published. |
Withholding is common and says nothing about the business. It does mean the listing cannot be ranked or screened on that figure. | 309 |
| County withheld No location is published on the search listing or on its detail page. |
The listing belongs to no county and is invisible to every geographic filter here. Ask where it is first. | 14 |
| Little or no description Fewer than 40 characters of description. |
Not enough to support a first pass. The broker’s own page may carry more than the feed does. | 69 |
Notes
True and worth knowing, not a problem.
| Check | Why it matters | Listings today |
|---|---|---|
| Headline earnings are an older, weaker year The advertised figure is from an earlier year and the more recent year is the stronger one. |
The figures here understate the business. Worth knowing; not a defect. | 20 |
| Priced above 15× earnings Asking price divided by earnings is above 15. |
The price is being carried by something outside the published figures — property, a licence, or expectations. Ask what it includes. | 54 |
| Same figures as another listing An identical price, earnings and revenue triple appears on more than one active listing. |
Co-brokering and cross-category listing. The source publishes it that way; pick which broker to call. | 154 |
The page and the ranking agree
The failures above are computed twice: once in the browser, to print the badge on the card, and once in the database, as a column the grid sorts on so that a listing whose figures do not add up cannot outrank one whose figures do. They are the same rule written in two languages, and the only thing that keeps them equal is checking. When this page was built, the browser version was run over all 2,079 active listings and compared to the database column: 2,079 of 2,079 graded the same way. Every listing the card marks as failing is ranked as failing, and no listing is demoted without a badge saying why.
Checks we measured and did not ship
Two more checks were written and measured before the verdict launched: earnings larger than revenue, and a down payment larger than the asking price. Both caught zero listings, so neither was added — a check that catches nothing would look like diligence while doing none. Re-measured on this build: earnings above revenue would catch 0 listings today, and a down payment above the asking price would catch 0. Both still catch nothing, so both stay out.
What we do not know, counted
A screening tool that hides its misses converts an unknown into a false negative you will never go looking for. So the gaps in our own coverage are counted here, from the same crawl:
- 2,079active listings in the index
- 52name no usable county on either page — blank, “All” or “Withheld”. They appear in every statewide figure and in no county figure, because a missing location is not evidence the business is elsewhere
- 356withhold at least one headline figure or a description, and so read partly disclosed
- 2have no readable detail page. The second crawl returned a bare template or nothing, so the multi-year figures, the evidence class and the cross-page checks do not exist for them. Shown as unknown, not as failing
- 290have a broker naming a document — a tax return or a P&L — behind at least one year. Named, never seen. Nobody here has received or read one
And the one thing no count can close: nothing here is verified. Every financial figure is seller-reported and unaudited. The checks establish that a listing does not contradict itself; two pages can be consistently wrong, and both come from the same side of the table. There is no “verified” badge on this site and there never will be, because we cannot perform the verification it would imply. The diligence — an accountant’s quality-of-earnings review, a lawyer’s read of the lease, a lender’s own underwriting — is yours. This is what comes before it.
If a figure here is wrong
It has happened, and each time the correction is on the site. An outside reviewer noticed that the dashboard and the market pages printed two different median prices for the same inventory; one applied the placeholder-price floor and one did not, and now both read from one definition. The same reviewer objected that a ratio of two seller figures was labelled “ROI”; the cell was relabelled and the reason written up. Building this page found the third: 295 listings read “county withheld” on their card, with a note that they were invisible to every geographic filter, while sitting in the county filter all along — the broker had left the search-page location blank and named the county on the detail page, and the card only read the first. A sentence that says less than the data supports is the same defect as one that says more. A site that asks you to distrust overstated labels has to correct its own, in public, and keep the record.
Corrections, disagreements and questions go to info@mainstreetdiligence.com. If a number on this site says more than the data behind it supports, we would rather hear it than not.
Search Florida listings How the screening works The four commitments