Evaluation harness

Accuracy

22 synthetic RICS-style reports with known-correct ratings, triage, and citations. We re-run the extractor and triage engine against that gold set whenever the page loads. This is not a claim about live uploads.

Reports in corpus

22

All synthetic. No personal data.

Overall

100%

Mean of the six checks below.

Ratings

100%

Condition rating matches gold.

Triage

100%

Urgent / negotiate / budget / monitor / ignore.

Citations

100%

Gold phrase present in the extract.

Grounding

100%

Every citation appears in the source.

Unreadable pages

100%

Poor scans stay unread — we do not invent a covering.

Property fields

100%

Address, postcode, type, survey level.

Hallucination rate 0% — we fail a report if the decode invents a swimming pool, a valuation, or any other forbidden phrase on that gold card. Corpus mix: Level 1 × 5 · Level 2 × 12 · Level 3 × 5.

Per report

Overall score for each synthetic report. Featured samples are the three you can open from the homepage.

Gold cards

ReportLevelRatingsTriageCitesOverall
Featured
2100%100%100%100%Open
Featured
3100%100%100%100%Open
Featured
1100%100%100%100%Open
2100%100%100%100%Open
3100%100%100%100%Open
1100%100%100%100%Open
2100%100%100%100%Open
2100%100%100%100%Open
2100%100%100%100%Open
1100%100%100%100%Open
2100%100%100%100%Open
3100%100%100%100%Open
2100%100%100%100%Open
2100%100%100%100%Open
1100%100%100%100%Open
2100%100%100%100%Open
3100%100%100%100%Open
2100%100%100%100%Open
2100%100%100%100%Open
1100%100%100%100%Open
3100%100%100%100%Open
2100%100%100%100%Open

How we score

  • Gold labels are written with the reports. The extractor is not shown the answers.
  • Ratings and triage are scored only on the sections we labelled — extra extracted sections do not count against us.
  • A citation passes if the gold phrase appears in the surveyor wording or in a grounded excerpt.
  • Unreadable pages must stay unreadable. We fail if the engine invents a covering for a poor scan.
  • Live uploads still go through the same engine, then an optional model, then the same grounding step. The model is not in this harness — it would spend API quota on every page load.