To keep a ServiceTitan pricebook's material costs current automatically, connect your distributor's price file (or feed) to a tool that, on a schedule, matches each new vendor unit cost to the SKUs on your pricebook items, recomputes every affected item under the sold-hour pricing model — price = sold hours × sold-hour rate + materials cost + (materials cost × markup) — and shows you the old price, the new price, and the margin change for each item. You approve the batch, and the approved prices write back into ServiceTitan. That is exactly what Top Builder AI's Pricebook agent does: it ingests a vendor price update, recomputes cost and price for each item, flags anything that moves past a tolerance you set, and proposes each change as a human-approved, reversible write-back. AI never changes a customer-facing price on its own — a person approves it first.
If you run a residential HVAC, plumbing, or electrical shop on ServiceTitan, your pricebook is the single most valuable spreadsheet in the company. It is where every quote, every option a technician presents at the kitchen table, and every dollar of gross margin is decided. And it is almost always out of date. Vendors raise prices through the year; the pricebook does not move with them. This guide walks through why that gap quietly eats margin, how material costs actually get into a ServiceTitan pricebook today, and how an AI agent keeps them current with a continuous, human-approved sync instead of a once-a-year scramble.
Why a stale pricebook silently kills margin
Flat-rate pricing is the engine of a modern service business, and it has one structural weakness: you sell a price, not a receipt. The customer never sees your cost. That is the point — it lets your technician quote a confident, all-in number at the door. But it also means a cost error never corrects itself. If the price on the sheet is built on last spring's copper cost, every job that uses copper is quoted at last spring's margin, forever, until someone updates the sheet.
The sold-hour model amplifies this. Because the price is a formula and not a guess, a wrong input produces a precisely wrong output on every single ticket that touches it. A high-volume item that is underpriced by a few percent does not lose you a few percent once; it loses you a few percent on every job, every day, for as long as the cost is stale. The leak is invisible in the moment because the price still looks normal. It only surfaces weeks later as a gross margin that came in thinner than the estimate, and by then it is nearly impossible to trace back to the specific items that drifted.
Two forces make this worse in practice. First, the costs that move most are the ones contractors use most: copper, aluminum, refrigerant, sheet metal, fittings, and standard equipment all ride commodity and supply cycles. Second, manual pricebook maintenance is exactly the kind of low-urgency, high-effort task that gets postponed. Nobody's day blows up because the pricebook is three months old. So it slips, and the margin slips with it.
How material costs get into a pricebook today — and why they go stale
There are three common ways a residential contractor keeps costs and prices in a ServiceTitan pricebook, and each leaves the same freshness gap.
1. Manual entry and bulk edits
Many shops maintain the pricebook by hand: an office manager edits items in ServiceTitan, or exports to a spreadsheet, updates costs, and re-imports. This is fully under your control and works for small books, but it is slow and error-prone, and it only happens as often as someone has time, which in practice means rarely. Between updates, the book drifts.
2. One-time imports from a flat-rate provider (e.g., Profit Rhino)
Profit Rhino is a well-known flat-rate pricebook product that gives contractors a structured, professionally built catalog with labor and materials already organized. Its ServiceTitan integration is import-based: you bring the content and pricing into ServiceTitan as a sync or import. That is genuinely useful for getting a clean, complete book in place. The limitation, for the specific problem of your vendor costs rising, is that an import is a point-in-time event. It refreshes the book when you run it; it does not continuously reach into your distributor's latest cost file and reprice your items every time those costs change.
3. ServiceTitan Pricebook Pro and Pricing Builder
ServiceTitan offers Pricebook Pro, professionally maintained pricebook content with images and descriptions updated on a managed cadence, and Pricing Builder, the native tooling for calculating prices from costs, markups, and member rates. These are real, capable features and the right foundation for many shops. What they do not do is automatically pull your specific distributor's new unit costs and reprice your book the moment those costs change. Managed content updates on a vendor's cadence; keeping your own vendor-cost inputs current is still a process you own.
The common thread across all three: the structure is solved, but the freshness of your vendor costs is not. That freshness gap — the lag between a vendor raising a price and your pricebook reflecting it — is where margin leaks, and it is the exact wedge an AI agent fills.
The sold-hour pricing model, in plain numbers
Everything that follows hinges on one formula, the flat-rate model most residential contractors already price from:
Notice what this structure does to margin. Your true cost of a job is labor (sold at your rate) plus materials at cost. The markup dollars — materials cost times the markup percent — are the gross margin the model is designed to protect. So when a vendor cost rises and you pass it through at the same markup percent, your margin dollars actually go up, because the markup is now applied to a larger cost. Margin only erodes when you fail to pass the increase through, which is precisely what a stale pricebook does for you.
A worked example: an AC install when copper and refrigerant rise
Here is the arithmetic on a single item, shown transparently. This is illustrative math with round, made-up numbers to demonstrate the model — not a client result.
Take an air-conditioning install priced at 8 sold hours, a sold-hour rate of $150, a 20% material markup, and four material lines:
| Labor — 8 sold hours × $150 | $1,200.00 |
| Condenser (1 × $1,800) | $1,800.00 |
| Line set (1 × $120) | $120.00 |
| R‑410A refrigerant (4 lb × $50) | $200.00 |
| Copper (20 ft × $5.00) | $100.00 |
| Materials cost (sum of material lines) | $2,220.00 |
| Markup on materials (20% × $2,220) | $444.00 |
| Price = $1,200 + $2,220 + $444 | $3,864.00 |
Now a vendor publishes a price update: copper rises to $6.50/ft and R‑410A rises to $62/lb. The condenser and line set are unchanged. Only the two affected material lines move:
| Labor (unchanged) | $1,200.00 |
| Condenser (unchanged) | $1,800.00 |
| Line set (unchanged) | $120.00 |
| R‑410A (4 lb × $62) ↑ | $248.00 |
| Copper (20 ft × $6.50) ↑ | $130.00 |
| Materials cost (new) | $2,298.00 |
| Markup on materials (20% × $2,298) | $459.60 |
| New price = $1,200 + $2,298 + $459.60 | $3,957.60 |
That is the whole problem in one item. A small, almost unnoticeable cost change moves the right price by 2.42%. On a single install it is $93.60. Across a full book of items, hundreds of jobs a month, and a year of vendor increases that never got entered, it is the difference between the margin you planned and the margin you got.
How an AI agent keeps the pricebook current
An AI pricebook agent automates the loop that a careful office manager would run if they had unlimited time. The pipeline is deliberately boring and auditable:
- Ingest the vendor price file or distributor feed. On a schedule (quarterly works well; event-driven on each new file is better), the agent reads the distributor's spreadsheet, CSV, or feed of new unit costs and maps each row to a SKU on your pricebook.
- Recompute material cost per item. For every pricebook item whose bill of materials includes a changed SKU, it sums quantity × new vendor unit cost across the material lines to get the new materials cost.
- Re-apply the sold-hour formula. It runs price = sold hours × sold-hour rate + materials cost + (materials cost × markup) with the new materials cost, producing the new price — labor untouched.
- Surface the price delta and margin impact. For each item it shows the old price, the new price, the dollar and percent change, and the change in margin dollars, sorted largest move first, exactly how a pricing desk reviews a re-price batch.
- Flag anything past tolerance. Items whose price moves beyond a tolerance you set (say, more than 5%) are flagged for a closer look — the guardrail that catches vendor data errors and mis-mapped SKUs before they reach a quote.
- A human approves the batch. A person reviews the proposed changes and approves, edits, or rejects. Nothing is customer-facing until then.
- Write back to ServiceTitan. Approved prices write back into the ServiceTitan pricebook, and each write stores the prior price so it can be reversed.
This is exactly how Top Builder AI's Pricebook agent is built. The price is computed by deterministic, tested code — not by a language model — so the same inputs always produce the same number, and every figure is auditable line by line. The agent persists its findings as advisory recommendations; it does not silently touch your live pricebook. A price write-back to ServiceTitan is always human-in-the-loop, and every approved change is reversible to the exact prior price. The language model's only job is to narrate the result in plain English — the dollars come from the math, never from the model.
One-time import vs. continuous, human-approved sync
The point here is not that imports or managed content are wrong — they are a great foundation. It is that they solve a different problem (getting a clean, structured book) than the one that erodes margin during the year (keeping your vendor costs fresh). Here is the framing:
| Capability | One-time import / managed content | Continuous, approved sync (Pricebook agent) |
|---|---|---|
| Gets a structured book in place | Yes | Assumes you already have one |
| Uses your specific distributor's costs | Partially — whatever you import | Yes, from your vendor price file |
| Re-prices on every cost change | No — point-in-time | Yes — scheduled or event-driven |
| Shows old → new price + margin impact | Limited | Per item, largest move first |
| Flags outliers past a tolerance | No | Yes — configurable |
| Human approves before customers see it | You re-import manually | Yes — always human-in-the-loop |
| Reversible to the prior price | Manual | Yes — one-click undo |
Read it as a stack, not a fight. Use a flat-rate provider or Pricebook Pro to build and maintain the structure of your book. Layer a continuous, approved re-pricing agent on top to keep the vendor-cost inputs current between those structural updates. The two solve adjacent problems.
How to roll it out
You do not need to automate the whole book on day one. A sensible rollout looks like this:
- Start with one vendor and your highest-volume items. Map your primary distributor's price file to the SKUs that appear on your most-quoted installs and repairs. That is where stale costs do the most damage and where you see value fastest.
- Set a conservative tolerance. Begin with a tight flag threshold so anything unusual lands in front of a human. Loosen it as you build trust in the mapping.
- Run the first file in review mode. The first run is diagnostic on its own — it tells you which items are underpriced against today's costs and by how much, before you change anything.
- Approve in batches. Review the proposed changes sorted by largest dollar move, approve the routine ones, and hold the flagged outliers for a second look or a SKU-mapping fix.
- Schedule the cadence. Once the mapping is solid, let new vendor files flow through the same pipeline automatically, with a human approving each batch. Quarterly is the floor; per-file is the goal.
The setup cost is a one-time mapping of your vendors and SKU naming. After that, every new price file runs through the same auditable loop without engineering work — and your pricebook stops drifting away from reality the moment a vendor raises a price.
The takeaway
A ServiceTitan pricebook is only as good as the costs underneath it, and in a flat-rate world those costs are a moving target. The structure is a solved problem; the freshness of your vendor costs is not. Closing that gap — ingest the new costs, recompute under the sold-hour model, surface the price and margin delta, let a human approve, and write back a reversible change — is how you keep margin from quietly leaking between manual updates. That is the job the Top Builder AI Pricebook agent was built to do, and it does it without ever changing a customer-facing price on its own. For more on how the agents are governed and what data they touch, see the Top Builder AI FAQ.
See it run against your pricebook
Bring one vendor price file and we'll show you which items are underpriced today, under the sold-hour model, with every figure auditable line by line.
Book a fit call →