Work/2026

    Reading Construction Drawings

    A fence contractor's estimators read construction drawings by hand to price a bid — slow, and easy to miss something. This reads the drawings and produces a structured takeoff they can check against their own.

    Role
    Engineer, delivered through an AWS partner
    Client
    Fence contractor, via AWS partner
    Built with
    Claude on AWS Bedrock · Computer vision · PDF tiling · React · FastAPI
    per plan set
    25 sheetsper plan set
    model cost per plan
    $1-6model cost per plan
    The upload screen: a plan set drop zone, an optional note field, and guidance on preparing files
    Upload and guidance. The client wordmark is masked.

    The problem

    Pricing a fencing bid means finding every fence run on a plan set, working out its type, height and length, and adding it up. Estimators do this manually in specialist software.

    The client was clear about what mattered: are the measurements right, and can the different fence types and heights be told apart. Speed was not the point — not missing anything was.

    What I built

    A pipeline that takes a plan set PDF and reads it sheet by sheet. Plan sheets are far too large and dense to read in one pass, so each sheet is split into overlapping tiles and read tile by tile, then stitched back together with real sheet numbers preserved.

    Every row in the output carries the sheet it was read from, so an estimator can verify a number rather than trust it. Estimators can also pick which sheets to read, and leave a note that guides the model without overriding the drawing.

    Cost is measured and shown per plan, because a tool that silently spends money on every upload does not survive contact with a business.

    What it does not do

    It measures length only where a dimension is actually printed on the drawing, or where a CAD convention makes it derivable. Everything else is reported as "not dimensioned" rather than estimated.

    That is a deliberate choice. A confident wrong number in a bid costs real money; an explicit gap sends the estimator to check one run.