Jump to…
Service materials and favorite-for-roles
Every service in your catalog can carry its own materials list — the parts that get consumed every time you perform that work. A Kerdi shower install service knows it needs membrane, band, thinset, screws. A Floor tile install per sqft service knows it needs uncoupling membrane, thinset, grout, sealer.
When a proposal uses that service, the materials come along for the ride. Services own their materials directly — quick to set up, quick to edit per-job. If you sell the same kind of work in several flavors (small tile vs. large format, straight lay vs. herringbone), use Variants on the service detail page to deep-copy your materials into a sibling service that scales by your multipliers. See Building your service catalog for the full flow.
How service materials work
On any service detail page, scroll to the Materials section. Each row has:
- A role — what slot this material fills (e.g.,
thinset_modified_large_format,waterproofing_membrane,grout_unsanded) - A quantity rule — how much you need, based on the project's measurements (e.g., ""1 bag per 50 sq ft of wall""). When the row has a product picked, this comes from the product's coverage; see below.
- A unit — sheets, gallons, bags, linear feet
- A default product (optional) — the specific SKU you want to use here
The role is the important part. Roles are how Biddy knows what kind of product fits this slot, even when no specific product is pinned to the row.
Favorite-for-role: teach Biddy your preferences
Here's the magic part. In your materials library, you can tag any product as a favorite for one or more roles. For example:
- Your go-to large-format thinset → favorite for
thinset_modified_large_format - Your preferred shower membrane → favorite for
waterproofing_membrane - Your standard unsanded grout → favorite for
grout_unsanded
When Biddy builds a materials list and finds a service row with the role thinset_modified_large_format, it checks your favorites first. If you've tagged one, that's what goes on the list. No guesswork.
One product can be the favorite for several roles, and a single role can have multiple favorites — Biddy will pick the best fit based on what's known about the job (project dimensions, tile size, wet vs. dry area).
Setting favorites inline from Biddy
You don't have to leave the chat to set up favorites. During the Phase 2 pricing interview, Biddy walks you through six category cards — Walls, Floors, Waterproofing, Trim, Grout & Silicone, and Miscellaneous — and presents an inline picker for each role inside that category. For every role, you can:
- Pick a product from your existing library
- Search the master catalog and pull a SKU into your library on the spot
- Type a custom name (and optional SKU) for a product BidCraft doesn't carry
- Skip the role if you don't reach for the same product every time
The picker writes the favorite tag straight through to your library as you go. By the time you finish the six cards, your roles are wired without ever opening a separate page.
Generate with AI
If a service is mostly empty — you've named it and set the price but haven't built out the materials yet — hit Generate with AI at the top of the Materials section. Biddy will propose a list of materials with roles, quantity formulas, and (when possible) suggested products.
A tile line always comes back complete, and the same way every time. Generating for a tile-install line — on the service page or straight from a line on the Bid — is no longer at the mercy of what the AI happened to remember. BidCraft guarantees the floor: mortar, grout, silicone caulk for the change-of-plane joints, one way of holding the tile in line, and the tile itself, sized to the surfaces the line covers, with the tile you named in the scope written into the row's notes so you know which product to pick. Anything the AI forgets, BidCraft adds and marks "Baseline:" on the row, with the assumption spelled out — "~40 sq ft per 50 lb bag at a 1/2" notch — edit the rule if you run a different trowel." Run it three times and you get the same list three times; what the AI adds on top is the specific stuff for that job.
Your cost, on the row. A row with no product picked has a Your cost field — type what you pay per unit and every job that uses the service prices at it until you pick a product. A row with a product shows where its number comes from (your saved cost for that product, or catalog list × your cost multiplier). Click the product's name, or Edit product, and the product opens in a popup right there — cost, coverage, photo, notes, favorites — no trip to the library page. Save in the popup and the row updates.
The quantity comes from the product. A material row is a shell that holds a product, so once a product is picked, the row's quantity rule is read from that product's coverage: SET Unmodified Grey covers 50 sq ft per bag, so the row says "1 bag per 50 sq ft of wall — from SCHLUTER SET UNMODIFIED GREY" and the only way to change it is Change on the product (which opens the popup). Fix a product's coverage once and every service that uses it re-figures on the spot. If you genuinely run a different yield on one service, Use my own rule instead hands the rule back to you for that row; Use the product's coverage flips it back. Rows with no product keep a typed rule as before. A product with no coverage on file (about half the catalog) gets the usual trade rate for that material, marked assumed — Set the coverage on the product and the row turns exact. Count-type rows (clips, spacers) still figure by pack size. Whatever you type wins over the catalog, everywhere the number is used.
Clips, wedges and spacers are one family now. Leveling clips and wedges are a single system (the wedges are reusable, so they ride along as optional); spacers are the alternative. If the AI offers both clips and spacers, BidCraft keeps the clips — unless you've set a favorite for one of them, in which case yours wins.
[!note] AI-picked rows show a small ✨ badge labeled "AI pick — verify or swap". That's your cue to either confirm Biddy nailed it (one-tap Confirm) or swap to your real preferred product. A manual swap counts as verification.
There's a Verify all action at the top of the materials list when there's a batch of AI picks waiting. Use it when the AI got close enough that you just want to bless the whole list at once.
The product on each row comes out of the same catalog the proposal builder uses, and it has to be something you could actually buy for that row: a product sold by the roll can't fill a row you're counting by the piece, so it gets skipped and something that works gets picked instead. A fallback pick also has to look like the thing the row asks for: a product that shares a broad category but carries nothing of the role in its name — an embedding tool standing in for leveling clips — is rejected, not shown as a quantity, and the row says "wrong kind of product — check this pick" (or "sold by a different unit") so you know why it's blank. Products you picked yourself, or set as a favorite for the role, are never second-guessed this way. If the catalog has nothing that matches what the row is asking for — leveling clips and silicone caulk genuinely aren't in there yet — the row comes back blank on purpose, waiting for you to pick. A blank row is the honest answer, and it's one you can see; a confident wrong one is a job you have to notice first, and it would stick to this service for every job you use it on.
Every row also shows what the product is — its catalog description and category under the name, with Open in catalog → when it''s in your library — so you''re judging the product, not just its name. Count-type rows (clips, spacers, wedges) show the pack arithmetic too: 2 bags with ≈386 clips beside it as the working.
When to set defaults vs. favorites
Two ways to pin a specific product to a service row:
- Set a default product on the row itself — locks that specific service to a specific SKU. Useful for service-specific products (e.g., a shower service that must use a particular pre-formed shower tray).
- Tag a favorite-for-role in your library — applies across every service that has that role. Useful for products you reach for everywhere (e.g., your go-to thinset).
Most contractors use favorites-for-roles for 80% of cases and row-level defaults for the special-snowflake materials.
Customization-required materials
Some products are placeholders even when set. Grout color, silicone color, tile leveling clips, edge trim finish — these usually need to be picked per project, not blanketed across every job.
Rows like that get a small amber ⚑ Pick the color per project chip on the service detail page. The default is there so price previews work, but you swap to the actual variant when you start the job.
Next steps
- Build the services that drive proposal pricing: Building your service catalog
- Author the execution-side tasks that pair with materials on each service: Service tasks and execution checklists
- Stock the library so favorites have products to point to: Your materials library
- See how it all lands in the proposal materials list: Materials lists explained
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.