Back to all work

Architectural drawing intake for a project-based business in New York

Architects email their drawing sets to the client as vector PDFs and scans, in five different title-block formats. We built an intake into the company’s own platform. It reads every sheet, files it as a new version, compares it with the previous issue and marks the changes for the trades they affect. Sheets the system is unsure about wait for a person.

Client
Project-based business, New York, under NDA
With this client
Second system, after field operations
Scope
12 contract items
Timeline
One month, August to September 2026
Stack
Python, Next.js, Supabase, Vercel, Claude API

Acceptance results

Acceptance measurements on the client’s files, September 2026.
Sheets filed with no person involved, across five title-block formats54 of 56vector PDFs 28 of 28, scans 26 of 28
Values the system accepted on its own, checked on review29 of 29every one confirmed
From the email arriving to the marked-up sheet2 min 30 s
Pipeline runs in 48 hours1,000all completed
Automated tests in the handover552
Model spend at about 75 emails a day$25–30a month

How the sets arrived before

Drawing sets came in by email from several architecture firms. Every firm uses its own title block, so there were five layouts to read, some as vector PDFs and some as scans of printed sheets. Someone in the office filed each set by hand.

Silent revisions slipped through: a dimension or a wall changed on a sheet that looked like the last issue, with no revision cloud to point at it.

What happens to each email

Every ten minutes the system checks the inbox and runs each new email through seven steps. Whatever it is unsure about goes to a person first.

2 min 30 s from the email arriving to the marked-up sheet, measured in acceptanceEmail arrivesinbox checkedevery 10 minutesMatched toa projectby sender, copy listand addressEach sheet readtitle block: number,revision, dateFiled as anew versionpage provenance keptCompared withthe last issuepixels, text andrevision cloudsMarked upin the PDFnative annotationsSent by tradeplumbing staff getthe P sheetsConfirmation queueA person confirms. Nothing unsure is filed or sent.unsureunsureconfirmed
Email arrivesinbox checked every 10 minutesMatched to a projectsender, copy list, addressEach sheet readnumber, revision, dateFiled as a new versionpage provenance keptCompared with last issuepixels, text, revision cloudsMarked up in the PDFnative PDF annotationsSent by tradeplumbing staff get P sheetsConfirmationqueueA personconfirms.Nothingunsure isfiled or sent.unsureunsureconfirmed

A rule cascade matches each email to its project by sender, copy list and address. By sender alone it matched 99.4% of the historical mail archive correctly. Every sheet keeps its page provenance, so a wrong merge can be undone.

Each set is checked against its own cover-sheet index, so a missing sheet shows up on arrival. When a project match or a title-block value is uncertain, the sheet waits in the confirmation queue until a person confirms it. The queue learns each title-block format over time, and hard cases always stay with a person.

PROJECTSHEETREVISIONDATESCALEA-3013REV 31/4" = 1'-0"12'-9"LIVINGKITCHENBATH32'-0"312PROJECTSHEETREVISIONDATESCALEA-3013REV 31/4" = 1'-0"12'-9"LIVINGKITCHENBATH32'-0"312
Redrawn from scratch. The client’s sheets stay under NDA.

What a marked-up sheet looks like

The comparison looks at pixels and text and reads the architect’s revision clouds. A change with no cloud gets marked too. Markup goes in as native PDF annotations, checked in Bluebeam Revu and Adobe Acrobat, so the sheet opens in whatever the office already uses.

Each person receives only the sheets of their own trade. Plumbing staff, for example, get the P sheets.

  1. Clouded change, revision 3. Read from the architect’s own cloud and delta.
  2. Silent change. A dimension went from 12'-6" to 12'-9" with no cloud.

Engineering decisions

Inside the client’s platform

The intake runs in the company’s existing Next.js, Supabase and Vercel stack, with no new servers and no new subscriptions.

A person on every doubt

Uncertain sheets wait in the confirmation queue and are never filed or sent on a guess.

Model spend by design

Text-layer PDFs are read deterministically at no model cost. The model reads only scans and email, about $0.043 per scanned page, under a daily budget cap.

It watches itself

Every set is checked against its cover-sheet index, and the pipeline monitors its own runs and reports to Telegram.

Safe to hand over

12 contract items, each tied to code and evidence. 14 database migrations that only add, a three-way merge that kept the client’s own changes, and a one-step rollback.

The client’s name, project addresses, architects and real sheets stay private. Everything on this page is described or redrawn.

Describe your bottleneck

If your drawings, specs and email live in five places, send one message: a voice note, text or a screenshot. You get a written assessment of where the information breaks and what a system to fix it would look like.

Or email v.karasov@gmail.com

More work

WhatsAppTelegram