← All work Pricing engine · Decision support · AI with guardrails

A valuation you can explain line by line.

Property Valuation Desk gives valuers a transparent, evidence-based price, a clear confidence score, and a branded client pack in minutes. The maths is deterministic, and AI only helps write the letter.

My roleSolo architect & builder
UsersValuers & brokers, UK
OutputValuation + 17-page client PDF
TypeInternal web app, live in production
5 stepsfrom sign-in to a finished, branded client pack
3price views (sold, asking, recommended), never averaged together
~300real sales used in a walk-forward backtest
6data sources ingested and refreshed on a schedule

The problem

A good valuation needs evidence, judgement and a clear story for the client. The evidence was scattered, and the story was built by hand every time.

Evidence everywhere

Sold prices, live listings, rental data and floor areas all sat in different systems.

Asking vs. achieved

Asking prices are ambition, while sold prices are fact. Mixing the two quietly inflates a valuation.

Client packs by hand

Every valuation meant assembling comparables, writing a letter and formatting a branded document from scratch.

The system

Data comes in on a schedule, the engine does the maths, the valuer makes the call, and only then does AI help with the writing.

1 · Sources
Sold records
On-market listings
Lettings
Company listings
Energy certificatesfloor area
Staff directory
2 · Ingestion
Scheduled, protected jobs
Validate + upsert
Remove stale records
3 · Engine
Select comparables
Normalise & weight
Range + confidence
4 · Valuer
Review evidence
Set asking price
Choose strategy
5 · Output
AI drafts letterfacts only, fully editable
Branded PDF pack
Deterministic maths Human judgement Supporting automation AI never sets or changes a price

Every adjustment, in plain sight

Before a comparable sale counts, it's made fair to the property being valued. The valuer can see exactly how each one was adjusted.

Time

Older sales are brought up to date using local price growth.

Size

Bigger homes trade at a lower rate per sq ft, so rates are adjusted for size.

Tenure

Small, explicit adjustments for freehold vs. leasehold flats.

Confidence you can see

Every result carries a confidence score built from five measurable ingredients. When confidence is low, the app says so and flags the valuation for manual review.

Evidence depthHow much weight the comparable set actually carries
LocationSame building or street scores higher than the wider area
Floor area qualitySupplied beats certificate, and certificate beats inferred
RecencyOlder sales lower the confidence
SpreadInconsistent comparables lower the confidence

Decisions that matter

Guardrails that keep a pricing tool honest, especially once AI is involved.

Sold and asking are never averaged

Achieved prices drive the valuation. Asking prices get their own separate view. Marketing ambition can't quietly change the number.

Maths first, AI second

The engine calculates every figure. AI only drafts the letter from facts it's given, and the valuer edits and approves it.

AI is told what it can't say

Use only the supplied figures, invent no amenities or comparables, and never blend sold with asking. If the AI is unavailable, it fails visibly instead of making things up.

Show uncertainty, don't hide it

No artificial narrow ranges. Thin evidence or a very wide range triggers manual review instead of false precision.

Inferred data is labelled

If floor area has to be estimated, it's flagged, and confidence drops accordingly. Nothing is invented silently.

Tested like a model, changed like one

Backtested walk-forward, so every estimate only uses evidence from before that sale. All coefficients live in one place and are re-tested before any change.

Where else this works

Any workflow that goes from evidence to an estimate, then to a document a client can trust.

  • Pricing & quoting
  • Insurance underwriting
  • Lending decisions
  • Used-vehicle valuation
  • Procurement estimates
  • Professional services proposals

Built with

TypeScriptReact 19TanStack StartPostgreSQLRow-level securityZodReact PDFRechartsGemini (via AI gateway)Scheduled ingestionSalesforce feedsEPC APILovableClaude