TL;DR: A 31-person custom metal fabrication shop in Milwaukee receives 340 requests for quote per year. One estimator prices every job manually: reading drawings, recalling similar past jobs from memory, cross-referencing an Excel template he built in 2019, calling suppliers for current steel pricing, and writing the quote in Word. Average turnaround: 9 days. Win rate: 22%. Shops that quote within 48 hours typically win closer to 40%. Twenty-eight RFQs last year were never quoted at all because the queue outran the estimator. We designed a four-stage agent that reads drawings with vision, matches against historical job costs already sitting in the shop's ERP, drafts the quote with a rationale note, and routes it to the estimator for review. Turnaround target: under 48 hours. Running cost: $57-$120 per month.
Tuesday, 9:40am
An RFQ arrives from a food processing OEM in Green Bay. Stainless steel conveyor frame, 14 units, drawings attached. Delivery required in eight weeks.
Doug sees it. He's currently resolving a weld spec question on the shop floor. Then he has a supplier call at 11. Then there are three RFQs ahead of this one in the queue.
He opens it Thursday afternoon. Reads the drawings. This is similar to a job the shop did in March 2024 for a different customer. Doug remembers it. He searches JobBOSS² for the job number, finds it after a few minutes, and pulls the actual costs. Materials were $4,100 per unit at the time. Steel has moved since then. He emails the supplier for current 304 stainless pricing. The supplier responds Friday.
Monday, Doug builds the quote. Materials, labour by operation, finishing, freight, margin. He writes it up in Word. Sends it Tuesday morning.
Seven working days after receipt. Nine, counting the weekend.
The customer had already received quotes from two other shops. One arrived in 36 hours. One in three days. Both were within 4% of Doug's number.
The job went to the shop that quoted in 36 hours. Doug's price was competitive. His shop was capable. His quality record was better than the winner's. He lost the job because he was third to respond, and by the time a customer has two quotes in hand and a project timeline to hit, the third quote is a formality performed out of politeness.
This is, when stated precisely, a business losing work it was qualified to do, at a price it could profitably deliver, because the document describing that price took a week longer to produce than the competition's. The capability was never in question. The typing speed was.
The Shop
Custom metal fabrication shop in Milwaukee, Wisconsin. Thirty-one employees: owner, general manager, one estimator, two engineers, eighteen fabricators and welders, three machinists, two quality, two shipping, one admin. $6.2M annual revenue. Serves food processing equipment manufacturers, agricultural OEMs, and industrial contractors.
Doug is the estimator. He handles 340 RFQs per year alongside his other responsibilities: supporting production with drawings, resolving shop-floor questions, and managing material supplier relationships. RFQs are, in theory, his primary job. In practice, they are the thing he does between interruptions from a shop floor that generates questions faster than any one person can answer them.
Each RFQ takes 90 minutes to four hours depending on complexity. At 2.2 hours average across 340 RFQs, that's 748 hours per year. At Doug's loaded cost of $41 per hour: $30,668 in estimating time.
Average turnaround from receipt to quote sent: 9 days. Urgent ones go out in two or three. Complex ones take three weeks.
Current win rate: 22%. Seventy-five jobs won from 340 quotes. Average job value: $18,400. Annual revenue from won quotes: approximately $1.38M.
Shops that consistently quote within 48 hours win a meaningfully higher share of the work they bid on. Ranges vary by sector, but the pattern is well established among fabrication shops: the first credible quote anchors the customer's expectations, and the third arrives after the decision has effectively been shaped. At even a 38% win rate, the shop would win 54 more jobs per year. At $18,400 average: approximately $993,600 in additional annual revenue.
Twenty-eight RFQs last year were never quoted at all. The customer withdrew, the deadline passed, or Doug ran out of time. Estimated value: $515,200 in work the shop declined by silence rather than by decision. Nineteen quotes went out with pricing errors requiring revision. Four were sent under cost and honoured, absorbing $23,000 in margin.
The Monday morning bottleneck: Doug opens his inbox to six to nine new RFQs from the previous week, on top of the eleven already queued. He works through them in the order they feel most winnable, which is not the order they arrived, and never the order in which the customer needed them.

The Design
Four stages. The core insight: the shop already owns the estimating intelligence it needs. Every job it has completed sits in JobBOSS² with actual material consumption, actual labour hours by operation, actual scrap, and realised margin. Doug accesses this by remembering a job and searching for it. The agent accesses it by matching characteristics systematically.
Stage 1: RFQ intake and drawing analysis
Monitors the estimating inbox. When an RFQ arrives, extracts attachments and metadata. Claude Sonnet with vision analyses the drawings: material specification and grade, overall dimensions, quantity, required operations in sequence (cutting, forming, welding, machining, finishing), tolerances, finish specification, and any notes on the drawing.
Where a field is unclear or unreadable (hand sketches, poor scans, missing dimensions), the agent marks it "requires human review" rather than guessing. A guessed material grade is worse than no estimate.
Stage 2: Historical job matching
Queries JobBOSS² for jobs with similar characteristics: material grade, dimensional range within 30%, operation sequence overlap, quantity band. Returns the five closest matches with their recorded actuals: material consumed against material quoted, labour hours by operation against labour estimated, scrap rate, and realised margin.
This is the part that matters most. The March 2024 conveyor frame job that Doug remembered on Thursday is found by the agent in seconds, along with four others he'd forgotten. Not because the agent is cleverer than Doug. Because it can search 6,000 historical jobs by characteristic in the time it takes Doug to recall one.
Stage 3: Quote drafting
Builds the estimate. Material cost: calculated material requirement at current supplier pricing from the material database. Labour by operation: historical actuals scaled for quantity and complexity delta. Overhead: JobBOSS² burden rates. Suggested margin: based on realised margin for this customer and job type.
Produces a draft quote plus a rationale note: "This estimate is based on jobs 4471, 4820, and 5103. Key differences: 14 units versus 8, so material buying improves by approximately 6%. Tolerances tighter on the frame rails, so machining operation adjusted +15%."
Stage 4: Review queue and win/loss learning
The draft lands in Doug's queue with a confidence score. High: three or more close historical matches. Medium: one or two partial matches, review the labour estimate carefully. Low: no good comparable, price from first principles.
Doug reviews, adjusts, approves. Twenty minutes rather than two hours. On approval, the quote sends and logs. When the outcome is recorded (won or lost, competitor price where known), the agent tracks estimate accuracy against actual job costs for won jobs, improving future matching.

Design Notes
The historical data was always there. Nobody had ever queried it systematically. Six thousand completed jobs in JobBOSS², each with actual costs recorded. Doug used this data by remembering a job and searching for it by number. That works when he remembers. It fails when he doesn't, which across 6,000 jobs is most of the time. The agent's most valuable function is not the drawing analysis or the quote drafting. It's turning an archive nobody searched into a reference the shop consults on every single RFQ.
Never auto-send. The rationale note is the control. Every extracted specification appears in the rationale for Doug's review, with the drawing reference. Material grade, critical dimensions, tolerance callouts. Doug confirms these before approval. A drawing that says 316 stainless read as 304 would produce a quote significantly under cost. The agent flags rather than guesses, and Doug checks rather than trusts. This is the 80/20 split: the agent reads, matches, and calculates. Doug applies the judgment that comes from 19 years of knowing what a drawing means when the drawing is ambiguous.
The Graham pattern recurs. Graham in Birmingham held 34 years of engineering knowledge in his head and answered the same questions repeatedly. Doug holds a comparable archive of estimating knowledge: which jobs went badly, which customers accept which margins, which operations always run over the standard. Some lives in JobBOSS². Some lives only in Doug. The agent surfaces the recorded part. The unrecorded part stays with Doug, which is why the review step exists.
How to Build This
Recommended stack: n8n for orchestration. JobBOSS² API for historical job costs, material pricing, labour rates, and burden rates (or equivalent ERP: E2 Shop System, Global Shop, ProShop; if no API exists, scheduled CSV export works). Claude Sonnet with vision for drawing analysis and quote drafting, Haiku for email classification. Microsoft Graph or Gmail API for inbox monitoring. Postgres for the RFQ log, analysis output, quote history, win/loss tracking, and material pricing.
Step 1: Set up infrastructure and material pricing database (Days 1-3). Deploy n8n. Configure ERP API credentials. Configure email API. Set up Postgres. Build the material pricing table: grade, form (sheet, plate, bar, tube), gauge or dimension, supplier, price per unit, last updated. Populate from current supplier price lists. This reference data is what the quote engine depends on.
Step 2: Build RFQ intake and classification (Days 3-4). Email Trigger on the estimating inbox. Claude Haiku classifies: is this an RFQ? Extract customer, due date, quantity, stated requirements from the email body. Extract attachments, store drawings in cloud storage, log references. If not an RFQ: no action.
Step 3: Build drawing analysis (Days 4-7). Send each drawing to Claude Sonnet with vision. Prompt: "Analyse this fabrication drawing. Extract material specification and grade, overall dimensions, part quantity, required operations in sequence, tolerances, finish specification, and special notes. Return structured JSON. If any field is unclear or unreadable, mark it as 'requires human review' rather than guessing." Store output. Flag low-confidence extractions for Doug before proceeding.
Step 4: Build historical matching and quote drafting (Days 7-10). Query the ERP for matching jobs by material grade, dimensional range, operation overlap, and quantity band. Retrieve quoted versus actual cost, material consumed, labour by operation, scrap, realised margin. Calculate material requirement, apply current pricing. Estimate labour from historical actuals scaled for quantity and complexity. Claude Sonnet drafts the quote and rationale note. Assign confidence score.
Step 5: Build review queue and win/loss tracking (Days 10-11). Draft emailed to Doug with rationale, comparables, and confidence. Doug approves, adjusts, or rejects via web form or email reply. On approval: quote finalised, sent, logged. Outcome recorded when known. For won jobs: compare estimated against actual after completion, feed variance back into matching.
Step 6: Test and refine (Days 12-16). Run against 30 historical RFQs where outcome and actual costs are known. Target: within 10% of Doug's quote on 80% of high-confidence jobs. Refine the drawing analysis prompt based on extraction accuracy. Pilot live for three weeks with Doug reviewing every draft.
Estimated build time: 14-16 days for a competent n8n developer. Four to five weeks if learning alongside. Drawing analysis is the highest-risk component; budget extra time for prompt refinement.

Cost Breakdown
Monthly running costs:
Component | Estimated Monthly Cost |
|---|---|
n8n (Cloud Starter or self-hosted) | $25-$50 |
Claude API (Sonnet vision + drafting, Haiku classification) | $25-$55 |
Drawing storage (S3 or Google Cloud) | $2-$5 |
Postgres | $5-$10 |
Total | $57-$120 |
Claude API detail: drawing analysis via Sonnet with vision at roughly 28 RFQs per month with two drawings each, approximately $18. Historical matching rationale: $3.50. Quote drafting: $3.20. Email classification via Haiku: $0.05. Total approximately $25 per month. Vision analysis is the cost driver and still lands under $1 per RFQ processed.
Build costs if hiring: 14-16 days at $400-$600 per day = $5,600-$9,600. Self-built: $0 plus four to six hours of material pricing setup.
Year-one total: $6,284-$11,040 (with developer) or $684-$1,440 (self-built). Compared against $993,600 in estimated revenue lost to slow quoting, $515,200 in RFQs never quoted, $30,668 in estimating time, and $23,000 in honoured under-cost quotes.
What Could Go Wrong
Drawing analysis misreads a specification. A material callout read as 304 when the drawing says 316 produces a quote significantly under cost. The rationale note surfaces every extracted specification with the drawing reference. Doug confirms material grade and critical dimensions before approval. Never auto-send. Flag low-confidence extractions explicitly. Track extraction accuracy across the first 50 RFQs.
No good historical comparable. A genuinely novel job returns no useful matches. Low-confidence quotes go to Doug with an explicit note: "No close historical comparable. This estimate is built from first-principles material and standard labour rates. Review carefully." The agent does not disguise uncertainty as precision.
Material pricing goes stale. Steel and aluminium move. Update the material database when new supplier price lists arrive. Flag quotes where the material price used is more than 45 days old.
Customer sends a photograph of a hand sketch. Vision analysis on a phone photo produces low-confidence extraction. Route directly to Doug with the image. The agent handles the 80% that arrive as clean PDFs and STEP files.
Doug doesn't trust the estimates. Trust builds from accuracy, not mandates. Run in parallel for three weeks: Doug prices manually, the agent prices independently, compare. When the agent lands within 10% consistently on high-confidence jobs, Doug starts reviewing rather than rebuilding.
Quantity scaling assumptions break. Historical job at 8 units, new job at 140. Material buying, setup amortisation, and labour learning curves all change non-linearly. Flag quantity deltas above 5x for manual review.
The Pattern
If your business bids for work and one person prices every job from scratch, your win rate is being determined by your queue length rather than by your capability or your pricing.
Doug is a good estimator. His prices are competitive, his shop is capable, and his quality record beats most of the shops he loses to. None of that helped on the Green Bay conveyor frame, because the customer made a decision shaped by the two quotes that arrived first, and Doug's arrived third.
The agent doesn't price better than Doug. It surfaces the historical data Doug would have found if he'd had four uninterrupted hours, drafts the quote he would have written, and hands it back for his judgment. The pricing stays with the estimator. The waiting goes away.
Nine days or ninety minutes. Same shop. Same capability. Same price. Different outcome.
This is Blueprint #53 in the AdAI series. Every week we publish the full architecture of a real AI agent design: the bottleneck, the build guide, and the costs. Free to read. Free to build from.
Want the next one? Subscribe to AdAI News. New blueprint every Thursday.
by GG
for the AdAI Ed. Team


