A build guide for any service business. No code required. Claude Cowork (or Code) does the heavy lifting.
Turn Your Quote History into
an AI Estimator
Your pricing logic is real IP. It is sitting in old quotes and in one person's head. This guide shows you how to pull it out into a system anyone on your team can use, built in Claude Cowork (or Claude Code). Six steps. Eight copy-and-paste prompts. Worked through with a software agency and an electrical business.
Your old quotes
Years of pricing, frozen in spreadsheets
A knowledge base
One clean page per job type
An estimator
A grounded range in minutes
Orient 01
What You'll End Up With
A tool that turns a plain-English job brief into a grounded cost range in minutes. Built from work you've already done. An estimate, not a quote.
You describe a job in plain English. The estimator reads a structured record of your own history and returns a priced range in the time it takes to read a brief. Not because it is clever. Because it is reading your work, not guessing.
What it gives you
The job type it maps to, or how to split a combined job into known parts
A complexity tier: simple, medium, or complex, and why
Labour hours by role
A materials estimate
Your internal cost, using your real cost rates
A client price at your standard margin, plus a cheaper and a fuller option
A confidence level, and what is driving any uncertainty
What it is not
It is not your formal quote. That comes after full scoping.
It does not invent numbers. Every figure traces back to a past job.
It does not replace judgement. It hands you a grounded starting point.
Estimate vs quote: get this clear first
Estimate
A fast range before the job is fully scoped. For the first call, when the client asks "roughly, what are we looking at?" Will not be exact. Not meant to be.
Quote
The formal price after full scoping. Line by line. Signed off. This guide builds the estimator, not the quoting tool. On purpose.
Orient 02
Will This Work For You?
Three honest prerequisites. Plus the three-layer architecture that keeps the whole thing fast and reliable.
Be honest about three things first
Enough data
Your common job types each need to show up a few times. As a floor, 20 to 30 past jobs across your main categories. Three or more comparable jobs for a type means you can estimate that type with confidence.
Repeatable work
This works when similar jobs recur. If every project is genuinely one of a kind, there is no pattern to compile. Most service businesses repeat more than they think.
Real cost visibility
You need to know what jobs cost you to deliver, not just what you charged. If you do not track internal cost, start there first. The estimator is only as honest as your cost data.
The three-layer architecture
The trick most people get wrong is pointing AI at a folder of old quotes and asking it to estimate every time. Slow, costly, and inconsistent. Instead, give each layer one job. Compile once. Query the summary. Keep it current.
Your historical quotes, exactly as they were. Never edited. Frozen records the AI reads but never changes.
Maintained by: Nobody. They stay frozen.
A compiled, structured summary. One page per job type, with hours, materials, and tiers. The estimator reads this, not the raw files.
Maintained by: AI, kept current as new jobs land.
The estimator itself. A small skill that reads the knowledge base on demand and prices a new job. Stays lean.
Maintained by: You, lightly. It just reads.
Compile once, keep current. You do the synthesis a single time, into a clean knowledge base. Then you query that. Every finished job gets fed back in, so the base sharpens with use.
The Method
The Six Steps
The whole build at a glance. Define, define, extract, clean, compile, ship. The order matters.
Six steps. The order matters. Skipping the cleanup step is the most common way to end up with an estimator that is confidently wrong. First comes a quick setup: , where you choose Claude Cowork or Code, pull everything into one folder, and let Claude plan the build. Then the six steps, each with the exact prompt to run.
Tap any step to jump to it. Steps 1 and 2 share a section, as do 3 and 4.
Enjoying the guide?
Enter your details to unlock the remaining insights. We'll also send you the complete guide as a reference.
Step Zero
Set Up and Plan the Build
Do it in Claude Cowork (or Claude Code). One folder, pull every source in, plan before building, and let Claude ask you questions to fill the gaps.
Before step 1, set yourself up. The whole build runs inside Claude Cowork or Claude Code. You bring the business knowledge. Claude does the file work, the extraction, and the writing. Get the setup right and the six steps almost run themselves.
Pick your tool
A chat-style workspace. No terminal, no setup. Connect Google Drive and your other tools, point it at a folder, and talk to it in plain English. Right for most business owners.
Runs in a terminal on your computer. Same model, more power, a real plan mode. Right if you or someone on your team is comfortable with a command line.
Step zero: get set up
Make one folder
Create a single project folder. This is the home for the whole build. Everything goes here.
Pull your sources in
Get every quote into that folder first. If they live in Google Drive, connect Drive and have Claude copy them across. Same for email attachments, accounting exports, even photos of job sheets.
Start in plan mode
Do not say 'build it'. Ask Claude to plan first. Claude Code has a dedicated plan mode. In Cowork, just tell it to propose a plan before doing the work. You approve, then it builds.
Answer its questions
Claude will ask you to fill gaps: your rates, which jobs to drop, your job-type names. Answer them. Every answer sharpens the plan and keeps the numbers honest.
The kickoff prompt
Paste this first, into a fresh folder. It does all four things at once: gathers your files, pulls from Google Drive, makes a plan before building, and asks you questions to fill the gaps. Approve the plan, then let it work.
I want to build an AI estimator from my historical quotes, using this folder as the project. Before you build anything, make a plan and check it with me. Do not start until I approve it. Step 1: Gather everything into this folder. - My past quotes and job records are in [Google Drive / a folder at PATH / exports from my accounting or job software]. - Pull copies of all of them into this folder so we have one source of truth. Do not change the originals. - If you can reach my Google Drive, search it for anything that looks like a quote, invoice, or job sheet from [DATE RANGE] and copy those in too. Step 2: Plan the build. - Lay out how you'll work through the six steps: define job types, define labour and materials costs, extract the data, clean it, build a knowledge base, then build the estimator skill. - Show me the plan as a short checklist before you start. Step 3: Ask me what you need. - Before and during the build, ask me clarifying questions to fill any gaps: my job-type names, my internal cost rates, which old quotes to ignore, my margin. - Ask a few at a time and wait for my answers. Never guess at a number that affects pricing. Once I approve the plan, work through it one step at a time and check in at the end of each step.
Steps 1-2
Define Your Job Types and Costs
Sit down before touching data. List the jobs you do and what they cost you internally. This is the spine of everything that follows.
Do this before you touch any data. Two lists. The job types you sell, and what each one costs you to deliver. Get these right and the rest of the build is mostly mechanical. Get them wrong and no amount of clever prompting saves you.
Step 1: Your job taxonomy
Repeating categories, not individual line items. Aim for 10 to 30 that cover roughly 80% of your jobs. Genuine one-offs go in a "custom" bucket, you do not need a category for every odd job.
+ 75 more
The agency found these repeating across 29 projects. The full build named 81 job-type categories in total.
A sparky has never heard the word 'epic'. They do not need to. The job names are theirs.
Step 2: Labour and materials
Who does each job, and what they cost you per hour internally. This is cost, not your charge-out rate. The margin gets added later, in one place. For trades, also list materials as categories with typical cost ranges, not individual SKUs.
Two electrician lines, on purpose. An employee costs you their loaded wage. A subcontractor costs you what you pay them, which is often $100+ an hour because it already includes their margin. The $100+ "hired out" figure is a charge-out price, not a cost. Use real cost here. We come back to this in the pricing step.
Materials categories (trades only)
Group materials into a handful of categories, each with a typical cost range. For example: downlights $12 to $45 each, LED strip $8 to $30 per metre, light fittings $30 to $200, cable and consumables $20 to $150 per job, switchboard components $40 to $300. You are after a sensible range per category, not a live price list.
Steps 3-4
Extract and Clean Your History
Pull past jobs out of wherever they live. Strip the junk. What's left is your usable dataset. Three prompts do most of the work.
Your past jobs live somewhere already. Accounting software, a job app like ServiceM8, Tradify, or simPRO, Excel, Google Drive, even handwritten job sheets. If you ran the kickoff prompt in Step Zero, they are already sitting in your project folder. Point the prompts below at that folder. The agency in our example pulled 37 quote spreadsheets out of Drive. After cleanup, 29 were usable. That is a normal hit rate. Expect to throw some away.
Step 3: Extract your history
Two prompts. The first finds the files. The second pulls each one into a clean, consistent shape. Run the second once per file, or point it at a folder and let it work through the batch.
I want to find all of my historical quote files. They're in [Google Drive / a folder on my computer at PATH / my accounting software]. Can you list all files that look like quotes or invoices from [DATE RANGE]? I'm looking for anything that shows what I quoted for a job, the labour involved, and the materials or costs. List them with file names and dates.
I have a quote file at [PATH / here is the content]. Extract the following from it and give it to me as structured data: - Job type (what kind of work was this?) - Date of the quote - Labour: who did the work and how many hours for each person/role - Materials: what materials were used and what did they cost - Total cost to deliver (internal cost if known, or total charged if not) - What the client was charged - Any notes on unusual conditions or scope If any of these fields are missing, note them as unknown rather than guessing.
Step 4: Clean it
The cleanup is what makes the estimator trustworthy. Strip incomplete records, true one-offs, mates-rates jobs, and anything from a pricing era that no longer applies. What survives is your usable dataset.
Here are [N] extracted quote records. I want to QC them before building my estimator. Remove any that are: - Missing labour hours AND materials cost (no useful data) - Obvious duplicates of another record - Done at a special rate for a non-commercial reason - From before [DATE] (pricing is too old to be useful) - Clearly one-off jobs that don't fit any of my standard job types For each one you remove, give me one sentence explaining why. For the ones you keep, give them a quality score 1 to 5 based on how complete the data is.
What the agency removed (real reasons)
- Blank template with no numbers ever filled in
- Two near-identical copies of the same quote
- Draft where the hours columns were all zero
- A job priced as a favour, not at commercial rates
Step 5
Build the Knowledge Base
One page per job type. Hours by tier, materials range, the triggers that push a job up a tier, and real examples as anchors.
This is the compile step. One page per job type. Each page holds the hours by tier, the materials range, the triggers that move a job up a tier, and two or three real past jobs as anchors. The estimator reads these pages, never the raw files.
What one page looks like: complexity tiers
Email and password login, one platform, no extras
Add a social login and a second platform, basic profile fields
Multiple login methods, three platforms, multi-step onboarding
Like-for-like swap into an existing hole
New position needs fresh cabling run
No roof access, asbestos, or switchboard work first
The agency numbers are pulled straight from real quote line items. The trade numbers are illustrative. Yours come from your own data, which is the whole point.
Build one page per job type
Run this once per job type, feeding it the records for that type. The "do not invent numbers" line is load-bearing. A wide honest range beats a narrow fake one.
Here are all the historical records for the job type: [JOB TYPE NAME]. Build a knowledge base page for this job type with: 1. A description of what this job type covers (and what it doesn't) 2. An hours table broken into Simple / Medium / Complex tiers, with the hour ranges grounded in the actual data 3. A materials cost range for each tier 4. A "what pushes this from Simple to Complex" guide, 3 to 5 bullet points based on what you can see in the data 5. A table of the real historical examples, with hours, cost, and any notable scope notes Do not invent numbers. If the data only supports a wide range, show the wide range.
Then build a primitives page
Primitives are the smallest repeating units of work that show up across many job types. A "push notification" for the agency. A "cable run" for the sparky. They let the estimator price a job it has never seen before, by building it up from parts it knows.
Looking across all the job types in my knowledge base, identify the smallest repeating units of work, the tasks that appear across multiple job types. For each primitive, give me: - What it is (plain description) - Labour hours (range) - Materials cost (range, or "materials not applicable") - Which job types it appears in These should be the building blocks I can use to estimate a job type I've never done before.
Step 6
Margin Model and the Estimator
Set your margin once. Then build the skill that reads the knowledge base and prices a new job end to end.
Two things left. Decide how you turn cost into price, then point a skill at the knowledge base. The skill is a short Markdown file that tells Claude how to read your pages and price a job. You write it once.
The margin model
Keep it simple. Total internal cost (labour plus materials plus overhead) times a multiplier equals the client price. Set three levels and default to the middle one. The agency in our example uses 1.5× to 2.0×, default 1.75×.
Competitive bid, trusted repeat client, straightforward scope
The default for most jobs. Start here.
Novel work, high risk, tight timeline, first-time client
Cost rate is not charge-out rate
An electrician is hired out at $100+ an hour. That is the charge-out rate, the price to the client. It already has margin baked in. It is not your cost. Feed your real cost into the estimator, never charge-out, or you double-count margin.
- Employee: your cost is their loaded hourly rate (wage, super, tools, vehicle), often $45 to $60. The margin you add covers overhead and profit on top.
- Subcontractor: your cost is what you pay the sub, often $100+, because that already includes their margin. So you mark up less, maybe 1.3 to 1.5×, or you price yourself out of the job.
Estimate a job
This is the prompt your team runs day to day. It is also the core of the skill. Paste it once into a SKILL.md file and Claude can run it on command, every time, the same way.
I need to estimate a job. Here's what the client wants: [JOB DESCRIPTION IN PLAIN LANGUAGE] Site conditions / anything unusual: [OR "nothing unusual"] Using the knowledge base, give me: 1. Which job type this maps to (or how to decompose it if it's a combination) 2. Complexity tier (Simple / Medium / Complex) and why 3. Labour hours estimate by role 4. Materials cost estimate 5. My internal cost (using my rates: [PASTE RATE TABLE]) 6. Client price at my standard margin of [X]×, and also at [Y]× and [Z]× 7. Confidence level (High / Medium / Low) and what's driving any uncertainty State clearly if any part of this has no comparable data in the knowledge base.
What comes back (trade example)
Brief: "8 downlights in new positions, plus a new lighting circuit off the board. Single-storey, roof access fine."
Client price
Figures illustrative. The structure is the point: type, tier, hours, materials, cost, price at each margin, confidence. Every estimate, same shape.
Keep It Alive
Maintain It So It Compounds
Feed every finished job back in. Update rates in one place. Trust the confidence flag. The system gets sharper with use.
The build is done. Now keep it honest. Three habits do it: feed finished jobs back in, update rates in one place when prices move, and trust the confidence flag instead of arguing with it.
Feed every finished job back in
Run this when a job wraps, with the actuals, not the estimate. This is what makes the system compound. Two minutes a job keeps the whole thing current.
I've just finished a job. Here are the actual details: Job type: [TYPE] Labour used: [ROLE: HOURS], [ROLE: HOURS] Materials cost: $[X] What I charged: $[X] Notes: [anything unusual] Update the knowledge base page for [JOB TYPE] with this new data point. Recalculate the hour ranges and materials ranges if this job changes them meaningfully. Note the date so the data stays current.
When prices change
Because the knowledge base separates hours and materials from your cost rates and your margin, a price rise does not mean rebuilding anything. You change the rate card in one place, and every future estimate uses the new numbers. Hours stay. Costs update.
Trust the confidence flag
Every estimate says how sure it is. Low confidence is not a failure. It is the system being honest about where your history runs out. That is exactly when a human should look closer.
Three or more directly comparable past jobs
Use the range as is
Built from known job types, fewer direct matches
Use it, note the assumptions
Novel work, no real comparable
Add a buffer and flag it to the client
Most tools decay. This one improves with use.
Every job you finish is a new data point. The longer you run it, the more of your business it understands, and the less it depends on any single person to hold the logic.
YourYourpricingpricinglogiclogictooktookyearsyearstotobuildbuildandandititliveslivesininoneoneperson'sperson'shead.head.ThisThisisishowhowyouyoumovemoveititintointoaasystemsystemthethewholewholebusinessbusinessowns.owns.PickPickyouryourtentenjobjobtypes.types.PullPullyouryouroldoldquotes.quotes.BuildBuildthethefirstfirstpagepagethisthisweek.week.
The five ideas that make it work
Estimate, not quote
A fast range before scoping. The formal quote comes after.
Three layers
Raw sources, compiled knowledge base, the skill. Each has one job.
Compile once
Synthesise into a wiki, then query that. Do not re-read raw files every time.
Confidence tiers
Every estimate states how sure it is. Low means add a buffer and flag it.
It compounds
Every job you feed back in makes the next estimate sharper.
Jump back to a section
Prefer the short version? Read the overview on the blog.