Jump to…
Uploading sample proposals to teach BidCraft your prices
You've been quoting tile jobs for years. You've got a folder of PDFs of proposals you've sent — real prices, real line items, real services. Why type all of that into a pricing interview when you've already done the work? The sample proposal uploader lets BidCraft read your past quotes and learn your business in one shot.
Where to do it
There are two doors into the same uploader, and which one you pick just decides where you land afterward.
To build out your catalog — go to Catalog → Services, hit the Add Services button, and choose Past proposals (PDF / image). This is the main road.
To turn a proposal into a reusable project shape — go to Settings → Pricing templates, tap + Add a job type (next to the Your job types heading) and pick From a past proposal. Same upload, same AI, but it opens the template modal for you when the scan finishes.
Either way you can drop in up to 25 proposals — PDFs or photos of printed ones. Give it a few minutes; the AI works through them in the background and you can close the tab.
The best proposals to upload are ones that represent your typical work — a couple of full bath remodels, a shower-only, a kitchen backsplash, anything that shows the range of jobs you actually take. Avoid one-off weirdos that aren't representative of how you price.
What the AI extracts
For each proposal, the AI pulls out three layers of useful information.
Your services
Every distinct line item — "Demo existing tile and substrate," "Install large-format wall tile," "Waterproofing membrane installation" — gets identified as a service. Across all 25 proposals, the AI clusters similar services together (so "Tile demo" on one proposal and "Demolition of existing tile" on another collapse into one service) and saves the merged set to your services catalog.
The same work done in different rooms stays one service — "Master bath floor tile" and "Guest bath floor tile" both fold into "Floor tile install," because the room is just where the work happened, not a different price.
But tiers stay separate. If you sell the same work at named levels — Standard, Plus, Premium; Good/Better/Best — the AI keeps each tier as its own priced version and links them under a shared base service. "Backsplash Plus at $28/sqft" and "Backsplash Premium at $38/sqft" become two versions of "Backsplash," each with its own price history. Averaging a Standard job in with a Premium one would wreck both numbers, so BidCraft never does that.
If a service the upload found is similar to one you've already created, the AI matches them and tells you on the review screen — "Looks like your Shower Floor Install (91%)." A strong match defaults to adding this proposal's pricing to that service (so your history combines instead of duplicating); a looser match just flags it and keeps them separate unless you say otherwise. The result is one clean catalog of the services you actually sell.
Your prices
For each service the AI extracts, it captures every instance — every time that service appeared on a proposal, what you charged, what the quantity and unit were. So if "Floor tile installation" appeared on six of your uploaded proposals at $12, $14, $15, $14, $13, and $17 per square foot, the AI captures all six datapoints.
It then computes a price range: min, max, median, mean, sample count. This becomes your pricing memory for that service. On future proposals, the AI looks at the pricing memory and uses it as ground truth — "this contractor's median for floor tile install is $14/sqft across 6 jobs, with a range of $12–$17" — instead of guessing from a generic baseline.
The more samples per service, the tighter and more trustworthy the pricing memory becomes. Three samples is enough to start influencing proposals; ten samples basically locks it in.
When you add a batch to a service you already have, every instance from the new proposals joins the existing history — the numbers genuinely combine across uploads rather than one batch overwriting another. Re-accepting the same batch won't double-count; BidCraft recognizes prices it already logged.
Uploads are the head start. After that, every bid you send keeps teaching BidCraft your real prices: each proposal you send adds the price you actually sent for each catalog service on it, one price per job, updated if you resend and set to what the client signed when they sign. Services priced as a range follow those prices. A fixed price never changes without you. See Building your service catalog for exactly what gets noted.
Your voice
The AI also reads how you sound: whether you write as "we", "I" or "the Contractor", how you speak to the client, whether your sentences are short and plain or long and formal, the phrases you reuse, and how you open and sign off — with two or three short quotes of your own wording as examples. That's added to your style's Additional style rules (in the Writing style card), and every proposal is written in that voice so it sounds like you, not like a generic template.
It lives in one Voice learned from your past proposals section inside Additional style rules, kept short — a handful of rules and a few quotes. Each time BidCraft learns (a new upload, or Learn from my past proposals again) it refreshes that one section from everything the style has learned, instead of piling up another copy. Anything you write outside that section stays exactly as you wrote it — so if you want to change how you sound for good, write it there. The shape of your proposals — how finely the lines are broken down, whether exclusions and material notes show — is learned separately, below.
If you write more than one kind of proposal — a tight one for builders, a detailed one for homeowners — the review asks which of your proposal styles each upload belongs to, and only that style learns from it. Everything below describes what gets learned; which style it lands on is yours to confirm.
On top of your voice, BidCraft learns the shape of your line names — whether you lead with the room ("Master Bath — Shower Floor"), tag a tier ("Backsplash (Premium)"), or keep it plain ("Shower Floor") — plus your tier ladder (the order, cheapest to priciest) and whether you show a price on every line or just a grand total.
It also learns how the page itself is laid out:
- Whether you group the work by room, with a heading for each one, or write a single straight list.
- Whether each room gets one price, or every line shows its own.
- How you spell out the tile under a line ("Tile: Roman 16x16 Concrete Limestone – 160 SF").
- How you mark side notes — some contractors start them with an asterisk.
- Whether your lines point back to the spec ("Per spec.") instead of restating it.
- The lines you open every proposal with, saying what each area includes.
The second step of the review shows you exactly what it picked up under How you lay out a proposal, written as plain sentences with a checkbox on each — "You group the work by room, and each room gets one price." Read them, uncheck anything that isn't true, and reword any sentence that's close but not quite right. Your wording is what gets saved, and BidCraft writes your next proposal that way. If your uploads disagree on tier order, it asks you which order is right.
Setting the layout by hand
You don't have to upload anything to get this. Under Settings → Proposal Settings, tap the Layout & pricing card:
- Line breakdown — one line per room, one line per kind of work, one line per component, or Not set to let each job decide.
- Prices your client sees — A price on every line, One price per room (your client sees each room and everything it includes, with one number for the room — this groups the lines by room for you), or Total only. You still see every line and what it costs in your own view and in Cost Analysis.
- Group line items by room — each room gets its own heading, with that room's work listed under it. Anything covering the whole job, like permits or the final clean, sits at the end on its own. It stays on while you show one price per room.
Tap Save on the card when you're done. If you did upload past proposals, these are already set to match them — the card is just where you'd change your mind.
Save the shape as a project template (optional)
The second step of the review ends with a Start a template from this toggle. Beyond pulling out services and prices, you can turn one representative proposal into a project template — the line items, in order, with your scope wording, as the starting shape for every future proposal of that type. Leave the toggle on, save, and we’ll ask which proposal to use. It’s the same review no matter which door you came in. See How job type templates work for the full walkthrough.
Why it's the fastest path to "fully tuned"
The pricing interview chat is great for setting day rate, multipliers, and overhead — the foundational math. But the interview can't reasonably ask you about every service you sell and every price you charge. That's where sample uploads carry their weight.
A contractor who uploads 15 well-chosen past proposals can go from a fresh account to a fully-populated services catalog and a meaningful pricing memory in under an hour of clock time — without typing a single price. The AI does the data entry. You just upload the PDFs.
[!tip] If you're new to BidCraft and you have any kind of historical proposal archive, do this first, before the pricing interview. Uploaded data informs the interview ("looks like you charged $14/sqft on most floor tile jobs — confirm?") instead of being something you set up after.
If your shop has the Guild switched on, accepting an upload also earns XP: your first 3 past proposals earn 75 XP each, every one after that earns 15, up to 50 in all. The Time Traveler badge levels up at 10, 25 and 50 proposals imported, for 75, 150 and 300 XP. One upload can move you up at most two levels, and that counts everything the upload earns, badge included, so the next level you earn on a real job still feels like one. The badge always unlocks; if an upload reaches the two-level limit, the badge pays only the XP that fits under it (its message says "capped") and the rest isn't paid later.
Reviewing or removing a batch
After upload, your batch shows up under Pending review on the Services page (the section is collapsed by default — tap Show to expand it). Each batch row has two actions: Review → walks you through what the AI extracted and lets you accept it into your catalog, and the trash icon deletes a batch you've decided not to use. Deleting drops the PDFs and the extracted data — there's no undo, but nothing's locked in until you accept either.
Once you accept a batch, it drops off the Pending review list — that list is your to-do pile, and a batch you've dealt with shouldn't keep asking for attention. The batch itself sticks around: the review page still opens if you want another look at what a past upload found, and re-accepting it won't duplicate a thing.
What the review screen shows you
The review is two steps, and there's a full walkthrough in Reviewing uploaded proposals. The short version:
Step 1 is the services. One row per piece of work, and everything starts checked — the checkbox is the decision. Uncheck what you don't want and move on.
- Prices say where they came from — "from your prices" when the number was printed on the line, "figured from your room prices" when your proposal priced the whole room as one number and we spread it over the square footage. If your proposals never priced the work on its own, the row says Needs a price and offers to let you type one. We'd never save a $0 you didn't quote.
- Tiers group together. When it finds a ladder — "Backsplash: Standard $22 · Plus $28 · Premium $38" — each level keeps its own price history.
- Match suggestions call out when a detected service looks like one you already have, so the row offers to add these prices to it instead of making a duplicate.
- Low-confidence scans get a "double-check this" flag and are the one thing that starts unchecked. If a PDF was rough, BidCraft won't quietly add it.
- "Only seen once" just means thin evidence. It stays checked — a service you did once is still a service you do.
- Bundles. If a proposal has an all-in package made of smaller line items, BidCraft links the pieces to the package, and tells you if any were created on their own so you can wire them up later.
- Open a row to see every job it appeared on, the tile that was on that job, and the rate — including the material note and any note you wrote on that line. From there you can Combine two rows that are really the same work, Split one that's lumping together things you price differently, or split a room's lump sum across the work inside it.
Step 2 is what BidCraft learned about you — your layout, the rules your proposals state outright, a couple of pricing settings, and your payment schedule. Every line has a checkbox and can be reworded.
Nothing saves until you hit Save to my account, so take your time.
What you can edit afterward
Nothing the AI extracts is locked. Every service it created appears in your services list with full edit access. Every price datapoint can be removed from pricing memory if it was a one-off you don't want to anchor on. Your Additional style rules are plain text you can rewrite.
The upload is an accelerator, not a commitment. If the AI guessed wrong on a service description or merged two services that shouldn't have been merged, you fix it in two clicks.
Next steps
If your foundational pricing numbers aren't set yet, sample proposals work best on top of a real day rate. Pair them with Day rate, multipliers, and overhead.
To round out the system with judgment rules the math can't capture on its own, see Pricing rules and the pricing meter.
Email andy@businessupai.com and a real person on the BidCraft Tile team will get back to you. If you're signed in, you can also ask Biddy from any page in the app.