/ projects / construction-estimator-ai

Reads every drawing. Builds the estimate.

Before a contractor can bid for a job, someone has to read everything the customer sends and work out the price. This AI does that reading. It turns a stack of drawings, specs and emails into an estimate, ready for the estimator to check and send.

Client project · a leading US construction company

01 / The problem

Hundreds of pages, and the know-how lives in one person's head.

One job can arrive as hundreds of pages. Drawings, a spec book that can run to 1,500 pages, spreadsheets and emails. An estimator, the person who prices the job, reads all of it and writes down every item the job needs.

2–4 daysto turn one job into a price, by hand.

How to read each customer's files isn't written down anywhere. It's in the estimator's head. Miss one item and the contractor still has to do that work, but never charged for it.

02 / Why it's hard

No two customers send the same thing.

One customer sends a clean export straight from their design software, so every word can be read as text. Another sends scanned copies, which are only pictures of pages. Some drawings are made of sharp lines a computer can measure. Others are flat images it has to look at instead.

  • PDF
  • Excel
  • Word
  • Images
  • Text files
  • Emails
  • Zip folders

The layout changes too. One customer puts the spec book at the end of the set. Another has no spec book at all and writes the same details on the drawings. A reader that always looks in one place will miss things.

03 / One setup per customer

So every customer gets its own setup.

Customers also price jobs their own way. For one, counting every item on the drawings needs two extra steps. For the next, it doesn't. Until now, rules like that lived only in the estimator's head.

So the system keeps a setup for each customer: what their files look like, where their details sit, and the steps their estimate needs. The AI reads that setup first, so it knows where to look. It runs for three customers today, and it's built to take up to fifty.

04 / How it works

It reads every page the way that customer needs.

First it sorts every page that came in: drawing, table, notes or spec. Clean pages are read as text. Scans and flat drawings go to a part of the AI that reads pictures. Pages that ordinary PDF tools can't open go through other tools that can.

Under the hood: every page gets a quick check first. That check decides which reader handles it.

05 / How it works

Then it builds the estimate, line by line.

It works out which items are this contractor's job and which belong to someone else. It counts each one, catches notes that change the price, like night-only work, and drafts a question when something is missing. Every line points back to the page it came from.

  • Replace two low-temperature display casesR2.1 · QTY 2Matches the work area on the plan
  • Install the pump unit on rack ARM1The maker supplies it. This contractor installs it.
  • Night work onlyGN1 · NOTE 17Labour priced at night rates
  • QuestionA detail on page R3.1 is mentioned but missingGN1 · NOTE 9Question for the customer, drafted and ready

Under the hood: the AI answers in fixed fields, not in its own words. Anything it can't place is flagged, never guessed.

06 / Results

From days to hours.

Under an hour

to pull an estimate together, instead of 2 to 4 days.

Measured Oct 2026

The know-how that used to live in estimators' heads, unwritten and different for every customer, now sits in one place. Every line in an estimate can be traced back to its page, so every number has a reason behind it.

07 / How it's built

Built so nothing gets missed.

  • A setup per customer, not code per customerEach customer's rules live in a setup the AI reads. Adding a customer means filling one in, not rebuilding the system.
  • The right reader for each fileText, scans, flat drawings and spreadsheets each go to the tool that reads them best.
  • Check first, read secondA quick check runs on every page. The slow, costly reading only runs on the pages that need it.
  • One page at a timeEach page is its own job. If something crashes, only that page runs again, not the whole set.

Stack

AI
OpenAI GPT-6.1 Sol, text and visionOpenAI Decisions APItext-embedding-3-small
Documents
PyMuPDFTesseract OCRPillowExcel, Outlook and zip readers
Backend
PythonFastAPICeleryRedisPostgres 17SQLAlchemyAlembic
Cloud
Azure Container AppsKEDA autoscalingAzure Blob StorageDockerAzure Pipelines
Testing
pytest
Frontend
Angular
← All projects