23 ways your automation can silently break
Each one is a way it produces a wrong result, drops data, or fails without telling you. We don't just grade it, we get it to green.
Category breakdown
8 disciplines of the StandardScan history
1 scanThe 30 checkpoints
Expand any point for the fixNo rows quietly go missing. A 240-unit rent roll comes out as 240 units, not 228.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
If a source renames or moves a column, the run stops instead of putting rent in the expense field.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Monthly versus annual and dollars versus thousands never get mixed up, so NOI is not off by 12x.
A trailing-12 and a current rent roll are not blended across different dates into a wrong NOI.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Blank or 'N/A' values are treated as missing, not silently turned into $0.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
The same property or comp is not counted twice because the address was written two ways.
Every number can be traced back to the document and cell it came from when someone asks.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
When the rent roll, T-12, and OM disagree, it flags the conflict instead of silently picking one.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
It handles messy real files (scans, phone photos, merged cells) or refuses them. It never guesses a number.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Running the same job twice does not create duplicates or double-send anything.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
If LoopNet or a county site changes its page, you get alerted instead of pulling garbage comps.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
One source going down does not crash the whole run or store a blank as if it were real data.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
One bad file in a batch is set aside so the rest still finish.
A slow source cannot hang the whole job forever.
If the job stops running, you are told. Silence is not treated as everything-is-fine.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
If a run processes 4 deals instead of the usual 80, it flags it instead of passing green.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Stale data and six-month-old comps are flagged before you underwrite on them.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Important alerts reach a person by text or Slack, not a log nobody reads.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
The model cannot invent a cap rate or NOI that no document supports.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
The math runs in code, so the same deal always produces the same number.
Before any change ships, it is tested against known-good deals so accuracy does not quietly drop.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
On a blurry scan it says 'I cannot read this' instead of confidently guessing.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Impossible numbers (140% occupancy, $4/SF office rent) get flagged, not passed downstream.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Nothing irreversible (an LOI, an offer, a tenant message) goes out without a person approving it.
The AI model is pinned, so an overnight provider change does not silently shift your outputs.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
API keys and passwords live in a secure place, never hardcoded in the code or repo.
The tool only has the access it needs, read-only where it just reads, not admin keys to everything.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Tenant SSNs and bank details are masked, and a malicious document cannot hijack the tool.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
Settings live in one place a non-engineer can change, with a doc so it is not stuck in one person's head.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.
It is tested at real volume and has spend caps, so a runaway loop cannot burn your budget overnight.
Paste that into your Claude or Cursor and it applies the fix in your code. Or we get it to green for you.