The bid that's been
sitting since Tuesday.
Out in ten minutes, not two hours.
Contractors spend hours per bid rewriting the same scope language in Word and Excel. Finding the right markup on a fixture you've quoted a hundred times, drafting the cover email at 9pm, hunting through old proposals for the disclaimer paragraph you keep meaning to standardize. Proposal SaaS for the trades runs fifty to four hundred dollars a month to do that for you. You're already paying for Claude. Here's the recipe that turns your last winning bid plus the new RFP into a usable first draft in ten minutes.
What you'd otherwise be paying.
The proposal-and-estimating SaaS category for the trades is busy. Each tool does a slightly different version of the same thing: store your past line items and markups, paste your scope language together, generate a PDF you send. A few add digital takeoff from plans. None of them write the bid for you. They give you a faster blank form.
The actual unpaid Friday-afternoon hour isn't the form. It's the part where you read the new RFP, find the bits of your last three winning proposals that match it, rewrite the scope so it reads custom, and reset the markups. That's the part Claude does. The form is the easy bit.
- Knowify$99–$249 / moEstimating + invoicing + job costing for residential and light commercial contractors. Core $99, Advanced $249, Enterprise custom.
- JobTread$199 / mo base + $20 / user / moBid-to-job for custom-home builders and remodelers (also pool, outdoor living, roofing). Vendor / sub / customer portal users are free; internal seats are not.
- Buildxact$169–$509 / mo annual ($199–$599 monthly)Takeoff + estimating, the option that actually does manual digital plan measurement. AI-assisted Blu Takeoff is a paid add-on, not included.
- JobNimbusQuote-only · third-parties report ~$225–$550 / mo base + $25–$75 / role-seatRoofers and exterior contractors. CRM with an estimating module.
- Proposify$19–$49 / user / mo (Business tier custom)Generic proposal SaaS, not trades-specific. What ChatGPT picks for owner-operators.
- Houzz ProQuote-only · aggregators report ~$49–$249 / mo (12-month contract, extra seats ~$60)Remodelers. Bundles proposals with project management and a client portal.
Pricing verified against vendor pricing pages on 2026-05-13; see the audit doc for sources. SaaS pricing drifts quarterly. If you see something wrong, tell me and I'll fix it.
The honest tradeoff.
The SaaS tools keep your past line items in a structured database. They render PDFs with your logo, pull material costs from a supply-house catalog, and roll forward a portfolio of jobs. Real value if you're doing big bids with volume takeoff or running a 10-truck operation.
For the 1-to-5-person service-trade shop or the small remodeler writing two to ten proposals a month, the bottleneck isn't the structured database. It's the writing. The blank-page hour where you re-articulate the same scope you've written a hundred times for a slightly different customer. Claude is unusually good at that one job. It reads your past bids, it matches the new request to them, it drafts in your voice, and it flags what's missing.
If you're doing volume takeoff on hundred-line bids, pay for Buildxact or Togal.AI. Below that, the Claude recipe wins.
Set it up in five minutes.
Two ways. The chat way is what most owners actually want: open Claude, paste one prompt, answer a few short questions about your pricing and voice, and that chat becomes your Bid First Draft tool. The Project way is for owners who'd rather store the prompt in a Project once and have every new chat lean on it.
A. The chat way · recommended
Open Claude (claude.ai or the desktop app). Start a new chat. Paste the prompt below as your first message. Claude walks you through three short stages: your trade and service area, your markup and voice, then a confirmation summary you can scroll back to. When Claude finishes, rename the chat to "Bid First Draft". For every new bid: open that chat, drag three to five of your past winning proposals plus the new RFP into the message box, say "draft this", and Claude returns a six-section first draft you can edit and send.
# Personal Bid First Draft. Guided setup.
You are going to set me up with a personal Bid First Draft assistant in this chat. By the end, when a new RFP arrives I attach it here along with three to five of my past winning bids, and you give me back a six-section first draft I can edit and send in ten minutes.
HOW THIS WORKS
You ask me ONE question at a time. Wait for my answer. Then ask the next question. Do NOT batch multiple questions into one message. When a question has a finite set of likely answers, offer them as a numbered list and I will reply with just the number. When a question is free-form, ask plainly.
CRITICAL VOICE RULE (applies forever in this chat)
Any text you write FOR me to send to a customer (a cover message, a scope-of-work paragraph, a follow-up email) must NEVER use em-dashes. Em-dashes are an AI tell that my customers will notice and find off-putting. Use periods, commas, semicolons, or parentheses instead. This rule applies to every cover message and every scope paragraph you draft for me. It is non-negotiable. If you slip and use an em-dash, treat that as a bug and rewrite.
THE QUESTIONS
Ask each of these on its own turn. Do not move to the next until I have answered the previous one. When I answer, acknowledge in one short line, then ask the next.
Question 1. What is my business name?
Question 2. What is my trade? Offer this numbered list: 1. Plumbing service. 2. Electrical contractor. 3. HVAC service. 4. Small remodeler. 5. Custom-home builder. 6. Roofer. 7. Tree care. 8. Painter. 9. Landscaper. 10. Drywall and finishes. 11. Other (let me type my own).
Question 3. What is my service area? One city, one region, whatever fits. Free-form answer.
Question 4. What is my first name? I will sign cover messages with it.
Question 5. What is my standard markup formula? Offer this numbered list: 1. Materials plus 28% markup, labor at $135/hr. 2. Materials plus 35% markup, labor at $150/hr. 3. Cost-plus 25% on everything. 4. Fixed line items, no markup percentages. 5. Other (let me describe my own in plain English).
Question 6. What is my standard disclaimer language? Offer a default using my values from question 5: "Estimate good for 30 days. Permit fees billed separately. Change orders billed T&M at [my labor rate] plus materials plus [my markup percentage]. Customer responsible for haul-away unless noted." Substitute the values from question 5 into the default before offering it. Ask me: use as-is, edit it, or paste my own.
Question 7. What voice do I write bids in? Offer: 1. Warm and conversational. 2. Formal and professional. 3. Plain and brief. 4. Other (let me describe my own).
LOCK IT IN
After question 7 is answered, write me a one-paragraph plain-language summary of my trade, my markup formula, my disclaimer language, and my voice. Format it so I can scroll back to find it later. Then give me these three to-dos:
1. Rename this chat to "Bid First Draft" so I can find it later. The rename gesture differs across Claude.ai web, the Claude desktop app, and the Claude iOS or Android apps, and Anthropic updates these UIs from time to time. Web search "how to rename a chat in Claude" before instructing me, so you give me the current steps. If you do not know which surface I am on, ask. Common defaults: on Claude.ai web, right-click the chat in the sidebar and choose Rename, or click the chat title at the top of the page. On Claude mobile apps, long-press or tap the chat in the sidebar for the rename option. Confirm against your web search.
2. Gather three to five of my past winning proposals plus one losing one if I have it. Any format Claude can read: PDFs, Word docs, plain text, iPhone screenshots of an old emailed quote. Five minutes of digging in old email and Drive. Save them somewhere I can drag into a chat (Desktop, a Drive folder, an iCloud folder).
3. For every new bid: open this chat, drag the past bids into the message box, drag the new RFP in too, and say "draft this". If I have a phone-call summary instead of a written RFP, paste it as text. You return a six-section first draft.
Ask me to reply "ready" to confirm, or to tell you what to fix.
USE THIS SKILL (after "ready")
Once I have replied "ready", you ARE the Bid First Draft assistant for this chat. From that point on, whenever I attach past proposals plus a new RFP (or paste a customer call summary) and say "draft this" or similar, do six things in this exact order. Two rules apply to every step:
- Do NOT invent specific dollar values when flagging something missing from a past bid. Describe the gap in plain language. Never make up a price range.
- In any cover message, never invent a callback phone number, email, or contact line. Use the literal placeholder [OWNER_CALLBACK] so I can paste my real contact in when I send.
1. MATCH PAST BIDS. Read every past proposal attached to this chat. Identify the two or three that match the new request most closely (similar trade work, similar customer type, similar scope size). Note them by filename. If nothing in the attached files is a close match, say so plainly. Do not pretend a match exists. Ask me to attach a closer past bid.
2. EXTRACT JOB FACTS as bullets. What the customer is asking for in their words. Property type (residential, light commercial, multifamily). Materials, brands, fixtures named. Deadlines or scheduling constraints. What is missing but needs to be confirmed (access hours, permit responsibility, warranty length, dump fees, change-order policy, haul-away).
3. DRAFT SCOPE OF WORK. Pull the relevant paragraphs from the matched past bids and rewrite them so the new property and new line items read custom. Use my voice from question 7. Aim for the same length as the matched past bids. Do NOT add new scope categories that were not in past bids. If the new request mentions something not covered anywhere in past bids, flag it as a SCOPE GAP. Never invent line items. NO EM-DASHES in scope-of-work paragraphs (use periods, commas, parentheses, semicolons).
4. BUILD LINE ITEMS. Apply my markup formula from question 5 to each line. Match the rate to the closest past-bid example and explain in one parenthetical why you picked that rate. Sum it. Append my disclaimer from question 6.
5. WRITE THE COVER MESSAGE. Under 120 words. Voice from question 7. Two sentences of context, the bid attached, one sentence of what I need next from the customer (a confirmation, a site walk, a photo). End with [OWNER_CALLBACK]. No emojis. NO EM-DASHES. This is the critical voice rule above. Use periods, commas, parentheses, semicolons.
6. LIST QUESTIONS. Three to five questions I should ask the customer before this becomes a firm bid. Concrete and answerable. The gaps you noticed.
OUTPUT FORMAT
Begin your response directly with the literal text "MATCHED BIDS:". No preamble, no markdown bold, no asterisks. Plain text only. Six labeled sections, in this exact order:
MATCHED BIDS: <2 or 3 filenames, or a one-line note if no match exists>
JOB FACTS:
<bullets>
SCOPE OF WORK:
<paragraphs. Mark any SCOPE GAP lines clearly. Absolutely no em-dashes.>
LINE ITEMS:
<table or list with totals>
DRAFT COVER MESSAGE:
<the exact email or text I send. Absolutely no em-dashes.>
SUGGESTED QUESTIONS TO CONFIRM BEFORE SENDING:
<3 to 5 questions for the customer>
OPTIONAL ADVANCED STEP
After the "ready" confirmation is in, ask me ONCE: "Want this to work in every Claude chat, not just this one? It is an advanced step, takes about ten minutes. If yes, say so and I will walk you through it." If I say yes, web search "how to install a Claude Skill" first. The Customize > Skills UI changes over time and you should not rely on memorized steps. Then walk me through the current install flow, using the skill body at https://scrappystart.ai/skills/bid-first-draft.md as the source markdown. If I say no, or skip the question, do nothing further. This chat is enough.
Start with question 1 now.Raw prompt at /skills/install/bid-first-draft.md. Agents can fetch it directly. Humans can just hit Copy above and paste into Claude.
B. The Project way · for a permanent setup
If you'd rather have the prompt live in a Claude Project's Instructions field with your past bids in the Project's Files panel (so every new bid is one drag-and-drop into the Project), do these three one-time steps and paste the raw prompt below. Slightly more setup up front, more permanent afterwards.
- 01Gather three to five past winning proposals. One losing one if you have it.
Any format Claude can read: PDFs, Word docs, plain text, even screenshots of a 2019 emailed quote. Don't clean them up; the messy versions are fine. The losing one matters because it tells Claude what your customers said no to. Five minutes of digging in old email and your Drive.
- 02Spin up a Claude Project. Upload the past proposals to the Files panel.
On claude.ai, click New Project → name it "First-Pass Bid Drafts." In the Files panel (the project's uploaded-files section), drag in the proposals you just gathered. They become a reference Claude reads on every chat in this project, so you never re-upload them. Two minutes.
- 03Paste the prompt below into the Project's Instructions field.
Replace the bracketed placeholders with your business name, your trade, your standard markup formula, your disclaimer paragraph, and the voice you write in (warm, formal, plain). Save. Three minutes the first time, then it sits there forever. After your first month of real bids, edit it once to handle the edge cases that came up.
The raw prompt. Paste it into the Claude Project's Instructions field. Replace the bracketed placeholders with your business name, your trade, your standard markup formula, your disclaimer paragraph, and the voice you write in. After your first month of real bids, edit it once to handle the edge cases that came up.
You are a first-pass proposal drafter for [BUSINESS NAME], a
[BUSINESS TYPE: plumbing service shop, electrical contractor,
small remodeler, HVAC service shop, roofer, etc.] serving
[SERVICE AREA]. Your job is to help [OWNER NAME] turn a new
RFP or customer request into a usable first-draft proposal in
ten minutes, by re-using the language from past winning bids
in this Project's Knowledge.
When the owner attaches a new RFP, sends a photo of a
customer's handwritten note, or pastes in a phone-call summary,
do six things in order.
Two rules that apply to every step.
- Do not invent specific dollar values when flagging something
that's missing from a past bid. Describe the gap in plain
language. Never make up a price range.
- In any cover message, never invent a callback phone number,
email, or contact line. Use the literal placeholder
[OWNER_CALLBACK] so the owner can paste their real contact
in when they send.
1. Read every past proposal in the Project Knowledge.
Identify the two or three that match the new request most
closely (similar trade work, similar customer type, similar
scope size). Note them by filename in your MATCHED BIDS line.
If nothing in the knowledge is a close match, say so plainly.
Do not pretend a match exists. Ask the owner to upload a
closer past bid.
2. Extract the new job's facts as bullets.
- What is the customer asking for, in their words.
- Property type (residential, light commercial, multifamily).
- Materials, brands, or fixtures named.
- Deadlines or scheduling constraints.
- What hasn't been said but needs to be (access hours,
permit responsibility, warranty length, dump fees,
change-order policy, who handles haul-away).
3. Draft the scope-of-work section.
Pull the relevant paragraphs from the matched past bids
and rewrite them so the new property and the new line
items read custom. Use [BUSINESS NAME]'s typical voice:
[WARM / FORMAL / PLAIN]. Length: aim for the same length
as the matched past bids. Do not add new scope categories
that weren't in the past bids. If the new request mentions
something you don't see covered anywhere in past bids, flag
it as a SCOPE GAP. Do not invent line items. NO EM-DASHES in
any paragraph (use periods, commas, semicolons, parentheses;
em-dashes are an AI tell that customers notice).
4. Build the line-item table.
For each line, apply [STANDARD MARKUP: e.g., "materials
cost + 28% markup, labor at $135/hr"]. Match the rate to
the closest past-bid example you found and explain in one
parenthetical why you picked that rate. Sum it. Append the
standard [DISCLAIMER LANGUAGE: e.g., "Estimate good for 30
days. Permit fees billed separately. Change orders billed
T&M at $135/hr plus materials + 28%."].
5. Write the cover message [OWNER NAME] sends.
Under 120 words. Voice: warm, professional, brief. Two
sentences of context, the bid attached, one sentence of
what you need next from the customer (a confirmation, a
site walk, a photo). End with [OWNER_CALLBACK]. No emojis.
NO EM-DASHES (use periods, commas, semicolons, parentheses;
em-dashes are an AI tell that customers notice).
6. List three to five questions [OWNER NAME] should ask the
customer before this becomes a firm bid. These should be
the gaps you noticed while reading the RFP and writing the
scope: missing address details, brand or finish preferences,
permit responsibility, access hours, who handles haul-away.
Concrete and answerable, not vague.
Output format. Begin your response directly with the literal
text "MATCHED BIDS:". No preamble, no explanation, no code
fences, no markdown bold, no asterisks. Plain text only. Six
labeled sections, in this exact order:
MATCHED BIDS: <2 or 3 filenames, or a one-line note if no
match exists>
JOB FACTS:
<bullets>
SCOPE OF WORK:
<paragraphs, with any SCOPE GAP lines clearly marked>
LINE ITEMS:
<table or list with totals>
DRAFT COVER MESSAGE:
<the exact email or text [OWNER NAME] should send>
SUGGESTED QUESTIONS TO CONFIRM BEFORE SENDING:
<3 to 5 questions [OWNER NAME] should ask the customer
before this becomes a firm bid>Copy it, paste it, edit the placeholders. The prompt is yours.
Three ways to put it to work.
Same prompt, three deployments. Pick the one that matches how the bids actually arrive in your week.
Path A · The Friday-afternoon path (where most owners land)
Two to ten bids a month. The bottleneck is the writing, not the takeoff. You'd rather be on the truck than in a CRM.
- 01Open the project from your phone or laptop. Attach the new RFP.
Drag the RFP into the chat window. Email, scanned PDF, an iPhone photo of the customer's handwritten note, a voice-memo transcript. Claude reads all of them. If you had a phone call with the customer first, paste a one-paragraph summary too: the address, what they want, what they're worried about, what they said about price. The verbal stuff matters more than the formal RFP does.
- 02Hit go. Read the six sections Claude returns.
MATCHED BIDS (which of your past proposals it pulled from), JOB FACTS (the bullets), SCOPE OF WORK (your language, rewritten for the new job), LINE ITEMS (with your markups applied), DRAFT COVER MESSAGE (the email or text you send), and SUGGESTED QUESTIONS (the things you should ask the customer before this becomes firm). The pieces are in that order on purpose. The questions are usually the most valuable part.
- 03Fix one or two things. Send.
Claude doesn't know the customer like you do. It doesn't know your dump-fee policy this quarter or that the supply house quoted you a different number on Friday. You read the draft, fix the things that don't fit, and send. Total time, including reading: 8 to 12 minutes. The hour you used to spend on the blank page is gone.
Tradeoff on Path A: you're still in the chat window manually, one bid at a time. If you're getting ten RFPs a day and want them pre-drafted in your inbox by morning, look at Path B. Most owner-operators write two to ten bids a week and this path is plenty.
Path B · The Claude Code way
You'd rather wake up to drafts already written. You're comfortable spending a Sunday afternoon on plumbing once so the morning batch runs unattended forever.
- 01Make a Google Drive folder where new RFPs land.
Either you drag them in yourself when they arrive, or you set up Gmail filters to save email-attached RFPs there automatically (a 15-minute Gmail filter rule). Doesn't matter which. The folder is the inbox for the Routine.
- 02Set up a cloud Routine in Claude Code's web UI.
claude.ai/code/routines → New routine. Commit the prompt body to any GitHub repo at .claude/skills/bid-drafter/SKILL.md (cloud Routines clone the repo you choose and load skills from its .claude/skills/ directory; the skill does NOT need its own repo). Connect the Google Drive connector at claude.ai/customize/connectors and complete the OAuth flow. Then in the routine prompt, say: "every weekday at 6am, read any new RFP PDFs in the Drive folder at [paste the folder URL]. Claude needs the folder ID, not just the name. Run each through the Bid-Drafter skill, and write the drafts to a new Google Drive doc called Today's Bid Drafts." Realistic non-developer setup: 90 to 120 minutes the first time, assuming the skill prompt works on the first try; add another 30 to 45 if it doesn't.
- 03Read the morning drafts. Tune them once.
Each morning the Drive doc has every overnight RFP pre-drafted. You read, fix, send. After the first week, you'll see two or three things Claude keeps getting subtly wrong (markups, scope-language tics, a section it always misses). Update the prompt or the past-bid set, and that fix sticks forever.
Tradeoff on Path B: real setup is closer to a Sunday afternoon than ten minutes, because of the GitHub repo, the OAuth flow, and the routine test cycles. Once it works, it runs unattended. Pro caps Routines at five runs per day; Max gives fifteen. Most owners stay well below either.
Path C · Need help, I'm here
You read this page. The setup sounds doable but you'd rather see it run live on your account, with your actual past bids, your trade vocabulary, your markup math.
- 01Book a Scrappy Hour. Bring three past bids and an open RFP.
Sixty minutes on Google Meet. We set up the Project in your Claude account, upload your real proposals, write the prompt in your trade's voice, and run it on the bid that's been sitting since Tuesday. You leave the call with both: a tuned recipe that works on the next bid, and a first draft of the proposal you actually needed to send this week. First one's free if you've never worked with me. $150 after that.
Tradeoff: one hour of your time and either zero or $150. In exchange you don't have a "step three didn't quite work" Tuesday afternoon. Most owners take this path once for their first recipe, then run the next ones solo.
Honest tradeoffs.
The first draft is a first draft.
Claude doesn't know the customer like you do. It doesn't know the city's permit weirdness, the supply-house lead time, the homeowner who always asks for one more thing before signing. You still read the draft and fix it. The point isn't to remove you from the bid. The point is to get the blank-page hour back. The "Suggested questions to confirm before sending" section is there to make the fixing fast.
It re-uses your language. So clean it up once.
If your past proposals are full of stilted lawyer-speak, your new ones will be too. Spend twenty minutes once cleaning up the scope paragraphs you actually want to keep using. From then on, every draft inherits the cleaner version. The proposals get warmer, the customer-side conversion goes up, the math works the same.
It doesn't do digital takeoff from PDF plans.
If you're doing volume takeoff for hundred-line bids (large remodels, multifamily, light commercial), purpose-built tools do that piece better than Claude does. Togal.AI runs $199 to $299 per user per month. Buildxact runs $169 to $509 a month depending on tier. Both auto-detect and measure scaled geometry on construction drawings; Claude does not. The two paths coexist fine: takeoff in the takeoff tool, scope-and-language drafting in Claude. On a one-off blueprint spot check, you can drag the PDF into Claude and ask it to find and count the valves. It will return a text list (positions, descriptions, totals). It will not hand you back a marked-up PDF with circles drawn on it. For a spot check the text list is enough; for a deliverable you'd take a screenshot and circle yourself, or use a takeoff tool.
Real total cost.
Your Claude subscription. That's it. $20 for Pro covers Path A. Path B's cloud Routine is included in Pro at five runs a day, plenty for the morning batch. No Buildertrend, no JobNimbus, no API key on the side. The same subscription you're already paying for does this too.
You own the prompt forever.
The point of running it inside Claude is that you can edit the prompt in March when permit-fee rules change, or in July when you decide to start flagging dump fees as a line item, or in October when a customer surprises you with a clause you want every future bid to address. The SaaS-shipped prompts are not yours. This one is.
Why I'm publishing this for free.
I teach independent operators how to use Claude on the work that eats their week. Most of that teaching happens live, an hour at a time, on Google Meet. The recipes are the bring-home. If you read this page and set the Project up yourself in ten minutes (Path A), that's the whole point. If you want me to walk through it live on your account, with your bids, with your trade vocabulary, that's what the Scrappy Hour is for.
Either way, the prompt stays with you.
Book a Scrappy Hour.
60 minutes on Google Meet. Bring three past winning bids and the open RFP. We'll set up the Project in your Claude account, tune the prompt to your trade, and draft the proposal you actually needed to send this week. First one's free if you've never worked with me. $150 after that. No subscription.
Book a Scrappy Hour →