Estimating& Quoting
Every Normoyle quote is bespoke. A skilled estimator reads drawings, calculates quantities, checks supplier costs, and writes a structured response — often taking half a day. An estimating agent compresses the data-extraction work to minutes, leaving the estimator to apply judgement rather than grind through spreadsheets.
Why estimating is the right pilot
When deploying any new technology, choosing the right first use case is critical. Estimating and quoting ticks every box for a successful AI pilot:
Normoyle responds to RFQs constantly. The agent gets trained and refined with every quote, improving quickly unlike a one-off process.
Drawings, specs, and rate cards are structured documents. The agent has clear material to work from — not ambiguous conversational requests.
You have dozens of past quotes with known correct answers. You can immediately test accuracy before the agent touches live work.
A draft quote that the estimator reviews before sending carries no risk. Errors are caught before they leave the business — unlike, say, an automated email sender.
The current workflow vs the agent workflow
| Step | Today (manual) | With agent | Time saving |
|---|---|---|---|
| Receive RFQ drawings | Estimator opens PDFs, prints or marks up manually | Agent ingests PDFs/DXFs automatically on receipt | 15–30 min |
| Read and interpret drawings | Estimator reads every sheet, notes materials and dimensions | Agent extracts all text, dimensions, and material callouts from every sheet | 30–90 min |
| Build bill of materials | Estimator manually creates BOM in spreadsheet | Agent builds structured BOM with quantities and units; flags uncertain items | 45–120 min |
| Material costing | Check supplier price list, ring for current prices | Agent queries cost database automatically; flags items not in database | 30–60 min |
| Labour estimate | Estimator applies rates from experience, task by task | Agent applies standard rates; estimator adjusts only flagged complex items | 30–60 min |
| Write quote document | Estimator writes from blank template | Agent drafts complete quote in Normoyle format; estimator edits and adds margin | 30–60 min |
| Total | 3–8 hours per quote | 20–40 min estimator review time | ~70–80% |
The agent cannot apply the experience-based judgement a Normoyle estimator brings to difficult fabrications — unusual weld joints, tight fit-up tolerances, awkward site access, or the knowledge that a particular client always underspecifies their painting scope. That expertise stays with your team. The agent handles the mechanical data-extraction work so your estimator can focus their time on the decisions that actually require skill.
Worked example: RHS balustrade quote
This is the kind of job Normoyle quotes regularly — a straightforward structural balustrade using RHS and flat bar, supplied and installed. Walk through how the agent handles it from drawing to draft quote.
The job
A Tier 1 builder sends through an RFQ with three PDFs: a balustrade layout plan, a typical post detail, and a handrail section detail. The spec calls for 65×65×4 SHS posts at 1200mm centres, 50×5 flat bar top rail, and 40×40×3 SHS infill rails at 150mm centres. Powder-coat finish. Supply and install, 45 linear metres.
Step 1 — What the agent reads from the drawings
Given those three PDFs, a well-configured estimating agent extracts the following within about 90 seconds:
# Extracted from balustrade-layout.pdf, post-detail.pdf, handrail-section.pdf ELEMENT: Posts Section: 65×65×4 SHS Grade 350 Height: 1050mm (900mm above FFL + 150mm embedment) Spacing: 1200mm centres Qty: 38 posts (45m ÷ 1.2m + ends) [REVIEW NEEDED — confirm corners] Fix method: Core-filled sleeve to slab ELEMENT: Top rail Section: 50×5 flat bar Grade 350 Length: 45 LM Joints: Butt weld, ground flush — [REVIEW NEEDED — spec silent on joint finish] ELEMENT: Infill rails Section: 40×40×3 SHS Grade 350 Spacing: 150mm centres Runs: 6 rails per bay (900mm height ÷ 150mm) Total LM: 270 LM [REVIEW NEEDED — verify against layout — counted 45 bays] SURFACE FINISH: Powder coat — colour not specified [REVIEW NEEDED] FIXINGS: Not detailed — assumed proprietary sleeve anchors [REVIEW NEEDED]
Step 2 — The BOM the agent builds
From the extraction above, the agent queries the Normoyle cost database and builds this BOM. Items marked [REVIEW NEEDED] are automatically surfaced for the estimator:
┌─────────────────────────────────────────────────────────────────────────┐ │ BILL OF MATERIALS — Balustrade RFQ — [Project name] │ │ Generated: [date] · Status: DRAFT — ESTIMATOR REVIEW REQUIRED │ └─────────────────────────────────────────────────────────────────────────┘ MATERIALS Item Description Unit Qty Rate Total ──── ───────────────────────────── ──── ───── ────── ──────── M01 SHS 65×65×4 Gr350 LM 40.0 $28.40 $1,136 M02 Flat bar 50×5 Gr350 LM 47.0 $ 8.90 $ 418 M03 SHS 40×40×3 Gr350 LM 283.0 $14.20 $4,019 M04 Sleeve anchors (assumed) No. 38 [REVIEW NEEDED — spec silent] M05 Powder coat (colour TBC) LM 45.0 [REVIEW NEEDED — colour not specified] ────── ──────── Materials subtotal: $5,573 + M04 + M05 LABOUR Task Hrs Rate Total ────────────────────────── ───── ────── ────── Fabrication — standard 32 $95/hr $3,040 Welding — MIG/TIG 18 $110/hr $1,980 Surface prep (sandblast) 8 $75/hr $ 600 Assembly and installation 24 $100/hr $2,400 Project management 4 $130/hr $ 520 ────── Labour subtotal: $8,540 COST SUBTOTAL (before margin): $14,113 + unresolved items M04, M05 FLAGGED ITEMS FOR ESTIMATOR REVIEW: 1. Post quantity — 38 assumed; confirm corners/returns from layout 2. Top rail joint finish — spec silent; confirm butt weld ground flush required 3. Infill rail quantity — 270 LM calculated; verify bay count 4. Sleeve anchors — type and supply not specified; add or confirm PC rate 5. Powder coat colour — not specified; hold rate or request from client 6. Install labour — assumed ground-level access; confirm scaffold required
The estimator reviews the flagged items — typically a 15–20 minute task for a job like this. They confirm the post count against the layout, chase the client for powder coat colour, add the sleeve anchor rate from experience, and decide whether scaffold is needed. They then apply margin and send. The agent has done everything except the judgement calls.
Step 3 — The draft quote the agent produces
Alongside the BOM, the agent fills in the Normoyle quote template. The estimator doesn't write a word — they edit, apply margin, and sign off:
F&D NORMOYLE ENGINEERING PTY LTD Quote Ref: NE-2025-[NNN] Date: [date] Project: [Project name] Prepared for: [Builder name] Attention: [Contact name] SCOPE OF WORKS Supply, fabricate, and install structural steel balustrade system in accordance with drawings [ref] Rev [x], comprising: · 65×65×4 SHS Grade 350 posts at 1200mm centres, sleeve-fixed to slab · 50×5 flat bar Grade 350 continuous top rail · 40×40×3 SHS Grade 350 infill rails at 150mm centres · Powder coat finish — colour to client selection [CONFIRM] · All welding to AS/NZS 1554 by certified welders Total system length: 45 linear metres LUMP SUM PRICE Supply and fabrication: $ [estimator to complete] Installation: $ [estimator to complete] ───────────────────────────────────────────────── TOTAL (ex GST): $ [estimator to complete] GST: $ [estimator to complete] TOTAL (inc GST): $ [estimator to complete] EXCLUSIONS · Scaffolding and elevated work platform (if required — to be confirmed) · Concrete coring · Painting beyond powder coat finish specified · Engineering certification (available on request — additional fee) VALIDITY: 30 days from date of issue LEAD TIME: [estimator to confirm based on current schedule] ⚠ DRAFT — ESTIMATOR REVIEW AND SIGN-OFF REQUIRED BEFORE ISSUE
What drawing formats can the agent read?
One of the most common questions from estimators is: "Can it actually read our drawings?" The honest answer depends on format and complexity.
| Format | Agent capability | Limitation | Normoyle relevance |
|---|---|---|---|
| PDF (text-based) | EXCELLENT | Scanned/image PDFs need OCR pre-processing | Most RFQs received as PDF — works well |
| PDF (scanned image) | GOOD | Lower accuracy on handwritten annotations | Older drawings from builders — usable |
| DXF / DWG (AutoCAD) | GOOD | Reads dimension text and annotations; cannot interpret geometry natively | Common for structural — extract text layer |
| Tekla model (IFC export) | GOOD | IFC files contain full BOM data — agent reads structured data directly | High value: IFC export gives near-complete BOM automatically |
| Revit (IFC export) | GOOD | Same as Tekla IFC — excellent structured data | Increasingly common from architects/engineers |
| Handwritten sketch | POOR | Unreliable — estimator should transcribe key data first | Early-stage jobs only — not for final quotes |
| 3D PDF | PARTIAL | Can read embedded text/annotations; cannot rotate or measure 3D geometry | Extract annotation layer; estimator handles 3D interpretation |
If a client provides a Tekla or Revit IFC export, the agent can extract a near-complete BOM automatically — member sizes, lengths, grades, quantities — in seconds. This is worth requesting from clients who use 3D modelling software, particularly on larger structural packages. It reduces the agent's extraction work from minutes to seconds and dramatically improves accuracy.
Setting up the estimating agent
There are three components to configure: the system prompt, the cost database, and the labour rate card. Each is covered below with production-ready templates.
Component 1 — The system prompt
This is the agent's standing brief — its role, what it must always do, what it must never do, and what format to produce output in. Paste this into Claude Projects or your API configuration:
ROLE You are an estimating assistant for F&D Normoyle Engineering, a specialist metalwork and fabrication company based in Sydney, Australia. You support qualified estimators by extracting data from drawings and producing structured draft quotes for review. YOUR TASK When given engineering drawings, RFQ documents, or IFC/BIM files: 1. Extract all materials, sections, dimensions, and quantities 2. Build a structured Bill of Materials (BOM) 3. Apply unit costs from the attached rate card 4. Calculate labour hours by task type using the Normoyle rate card 5. Draft a quote in Normoyle standard format 6. List ALL flagged items clearly at the end MANDATORY RULES - Flag ANY uncertain item with [REVIEW NEEDED] — never guess - Never specify a material grade you cannot confirm from the drawing - Never apply a margin — the estimator does this at review - All currency in AUD (excl. GST) - Assume ground-level workshop access unless drawings indicate otherwise - If a drawing sheet is missing or illegible, say so explicitly - Always include quantity takeoff workings so the estimator can check FLAGGING RULES — flag when: - Material specification is absent or ambiguous - Quantity cannot be confirmed from available information - A fixing, finish, or accessory is implied but not specified - Site conditions affect labour but are not described - The scope appears to be missing something based on typical practice OUTPUT FORMAT Return in this order: 1. DRAWING REGISTER — what you received and read 2. EXTRACTION SUMMARY — what you found on each sheet 3. BILL OF MATERIALS — structured table with workings 4. LABOUR ESTIMATE — hours by task, rate, total 5. COST SUBTOTAL — materials + labour before margin 6. FLAGGED ITEMS — numbered list, one line each 7. QUOTE DRAFT — Normoyle template, mark all gaps clearly WHAT YOU DO NOT DO - Do not send or issue anything — output is always DRAFT - Do not certify compliance with any standard - Do not contact suppliers - Do not apply or recommend a margin percentage
Component 2 — The cost database
The agent needs access to current material unit rates. Start with a simple CSV file — you can upgrade to a live spreadsheet or ERP connection later. The CSV lives in the same folder as the agent or is uploaded to Claude Projects as a reference file.
material_code,description,unit,cost_aud,supplier,last_updated # ── RHS / SHS ────────────────────────────────────────────── RHS100x50x4,RHS 100×50×4 Grade 350,LM,32.10,InfraBuild,2025-01-15 RHS150x100x6,RHS 150×100×6 Grade 350,LM,68.40,InfraBuild,2025-01-15 SHS65x65x4,SHS 65×65×4 Grade 350,LM,28.40,InfraBuild,2025-01-15 SHS50x50x3,SHS 50×50×3 Grade 350,LM,18.70,InfraBuild,2025-01-15 SHS40x40x3,SHS 40×40×3 Grade 350,LM,14.20,InfraBuild,2025-01-15 # ── FLAT BAR ─────────────────────────────────────────────── FB50x5,Flat bar 50×5 Grade 350,LM,8.90,InfraBuild,2025-01-15 FB75x6,Flat bar 75×6 Grade 350,LM,16.20,InfraBuild,2025-01-15 # ── PLATE ────────────────────────────────────────────────── PL8,Plate 8mm Grade 350,KG,2.10,BlueScope,2025-01-15 PL10,Plate 10mm Grade 350,KG,2.15,BlueScope,2025-01-15 PL12,Plate 12mm Grade 350,KG,2.20,BlueScope,2025-01-15 PL16,Plate 16mm Grade 350,KG,2.25,BlueScope,2025-01-15 # ── UB / UC ──────────────────────────────────────────────── UB200x25,200UB25 Grade 300,LM,52.80,InfraBuild,2025-01-15 UB310x46,310UB46 Grade 300,LM,97.20,InfraBuild,2025-01-15 UC200x60,200UC60 Grade 300,LM,126.50,InfraBuild,2025-01-15 # ── STAINLESS (316 grade) ────────────────────────────────── SS-RHS50x25x2,SS RHS 50×25×2 316 grade,LM,48.00,Midalia,2025-01-15 SS-SHS50x50x2,SS SHS 50×50×2 316 grade,LM,72.50,Midalia,2025-01-15 # ── CONSUMABLES (allow per project) ─────────────────────── WELD-CONSM,Welding consumables allowance,%,3.5,Internal,2025-01-15 CUTTING,Cutting and grinding allowance,%,2.0,Internal,2025-01-15
Steel prices move. If your cost database is more than 60 days old, flag it. Assign one person as "database owner" — they update rates when new supplier invoices arrive. An agent quoting from stale rates is worse than no agent at all.
Component 3 — The labour rate card
Include the rate card directly in the system prompt so it's always available. Update it when rates change — this is a single edit in one place:
LABOUR RATES (AUD/hr excl. oncosts — update when rates change) Fabrication — standard: $95/hr Fabrication — complex: $125/hr [Use "complex" for: tight tolerances <1mm, difficult access, multi-plane geometry, heavy section >16mm plate] Welding — MIG/TIG: $110/hr Welding — structural certified: $140/hr [Use "structural certified" when AS/NZS 1554 category SP required] Surface preparation: $75/hr Assembly and installation: $100/hr Project management: $130/hr Engineering/design: $155/hr PRODUCTIVITY FACTORS Standard shop fabrication: assume 85% productive time Site installation: assume 70% productive time [These are already factored into the rates above — do not double-apply] MINIMUM CHARGES Mobilisation (site work): 4 hours minimum per visit Engineering sign-off: 2 hours minimum
Component 4 — Testing before you go live
Never use the agent on a live quote until you've validated it on past work. Follow this testing sequence:
- Pick 5 past quotes of increasing complexity Start with a simple single-element job (one section type, no finishes). Work up to a multi-element structural package. You know the correct answer for all of them.
- Run each through the agent and record results For each quote, note: BOM accuracy (items matched vs missed), quantity accuracy (% variance), cost accuracy (% variance from your known total), and whether every flag was legitimate.
- Target: within 10–15% on cost subtotal before margin This is the acceptance threshold. Variance above 15% means the system prompt or cost database needs refinement — don't proceed to live work until you're consistently under 15%.
- Refine the system prompt for each failure mode If the agent consistently misses surface finishes: add a rule. If it over-counts infill quantities: add a worked example. Each refinement is a one-line addition to the system prompt.
- Log everything in a test register Keep a simple spreadsheet: job type, date tested, BOM accuracy, cost variance, issues found, prompt change made. This is your proof that the agent works when you show it to management.
Improving your agent: prompt refinement in practice
Your first system prompt will not be your best. Every time the agent makes a mistake, that mistake tells you exactly what rule to add. This is the core skill of working with agents — not programming, but precise instruction writing.
| Agent mistake | Root cause | Fix to add to system prompt |
|---|---|---|
| Missed powder coat in BOM | Prompt didn't mention finishes explicitly | "Always check for and include surface treatment: paint, powder coat, galvanising, or anodising. If not specified, flag as [REVIEW NEEDED]." |
| Overcounted infill rails | Agent counted spaces, not rails | "When counting infill elements: number of rails = (clear height ÷ spacing) − 1. Show working." |
| Used wrong labour category | Prompt didn't define "complex" clearly | Add the complexity criteria explicitly — see rate card template above. |
| Didn't flag missing fixing spec | Prompt only flagged missing material grades | "Flag if fixings, anchors, or connections are shown on drawings but not specified — size, grade, and type must all be confirmed." |
| Included GST in subtotal | Ambiguous instruction | "All prices are ex-GST. Do not include GST in any line item or subtotal." |
| Wrong unit (LM vs EA) for posts | No unit rule in prompt | "Posts, columns, and point elements: count in EA. Linear elements (rails, beams): measure in LM. Plate and sheet: measure in KG or M²." |
Treat every agent error as a missing instruction, not a technology failure. An agent that misses powder coat didn't "fail" — it was never told to look for it. Add the rule, retest, move on. After 10–15 refinement cycles on real quotes, you'll have a prompt that catches 90%+ of items reliably.
Hands-on exercise: your first estimating agent run
This exercise takes you from zero to a working estimating agent using Claude.ai Projects. You need a Claude Team or Business account and access to a past simple quote (one section type, no complex finishes).
- Create a Claude Project called "Normoyle Estimating Agent" In Claude.ai → Projects → New Project. This gives you a persistent agent workspace where your system prompt and reference files are saved between sessions.
- Paste the system prompt Copy the full system prompt from Component 1 above into the "Custom instructions" field. Edit the labour rates if yours differ. Save.
- Upload your cost database Use the normoyle-costs.csv template above, fill in your actual rates, and upload it to the Project. The agent will reference this for every session.
- Upload a past drawing (anonymise if needed) Take a simple completed job — an RHS frame, a balustrade, a simple bracket assembly. Remove client name if needed. Upload the PDF to a new conversation within the Project.
-
Send this exact prompt to start
Opening prompt to send
Please process this drawing and produce: 1. A full bill of materials with quantities and costs from the uploaded rate card 2. A labour estimate using the Normoyle rate card 3. A cost subtotal (materials + labour, before margin) 4. A complete list of flagged items 5. A draft quote in Normoyle standard format This is a test against a completed job. I will compare your output to the known answer and refine accordingly.
- Compare to your known answer Record: How many BOM items did the agent get right? What did it miss? What did it flag that was correct vs over-flagged? What was the % variance on total cost? Fill in a simple table.
- Make one prompt refinement per missed item For each thing the agent missed, add one rule to the system prompt. Re-run. Repeat until variance is under 15%. Most people get there within 3–4 iterations on a simple job.
After completing this exercise, bring your test register to the next session: the job you tested, your iteration log, and the final variance figure. The group will review common failure modes and share prompt fixes.
Common mistakes and how to avoid them
Using the agent on a live quote before validating on past work. Always test on known jobs first. One wrong live quote damages confidence across the whole team.
Running the agent with a rate card that's 6 months old. Steel prices move 5–15% in that timeframe. Assign a database owner and set a 60-day review reminder.
Treating flagged items as optional. Every flag is a real risk to the quote accuracy. If the agent flagged 6 items, all 6 need a decision before the quote is issued.
Writing a short, general prompt and expecting detailed, consistent output. The more precisely you define expected output, the less the agent has to guess. Specificity is everything.
Editing the system prompt without saving the previous version. When a refinement makes things worse, you need to roll back. Keep a dated copy before each change.
Starting with a multi-trade, multi-level structural package. Start with the simplest recurring job type. Get reliable results there before moving up in complexity.
When it's working: scaling up
Once the agent is reliably producing accurate drafts on simple jobs, you can progressively expand its scope. This is the "scale on trust" principle from Module 5.
- Phase 1 — Simple recurring job types (weeks 1–4) Balustrades, simple frames, standard bracket assemblies. One section type, standard finishes, shop fabrication only. Target: <10% variance, estimator review time under 20 minutes.
- Phase 2 — Multi-element jobs (weeks 5–10) Structural packages with mixed sections, multiple finish specs, some site work. Add specific prompt rules for each new element type as you encounter them.
- Phase 3 — Complex and bespoke (months 3+) Architectural metalwork, defence components, complex assemblies. The agent handles the standard elements; the estimator focuses exclusively on the bespoke items. This is where the time saving is most valuable — the estimator's attention goes to the hard 20% rather than the routine 80%.
- Phase 4 — Connect to live data (when ready) Replace the CSV with a live supplier price feed or ERP connection. This keeps rates current automatically and removes the database maintenance burden. See the Setup guide for how to connect n8n to a live spreadsheet.