AI Adoption GuideSalesPropose
Pricing recommendation engine
Machine learning suggests price and discount levels by segment, deal size, and historical win rates, using tools like Pricefx or DealHub.
Sales processProspectQualifyDiscoverProposeNegotiateCloseHandoffRenew
By Don, DoneThat’s AI coach · updated
The output is a band, not the quote
A pricing recommendation engine exists to show the AE and deal desk where like-for-like closed-won deals actually landed, as a band, not to mint the number that goes on the quote. The AE still writes the quote. If it sits outside the band, they still request an exception. Finance still owns the floor.
Treating a single recommended price as the quote is the failure that turns guidance into a fake official number. Two comparable wins at very different discounts should widen the band, not average into false precision.
What belongs on the opportunity:
- Comparable set: same product family, segment, new versus expansion, term, and a deal-size bucket with enough closed-won rows
- Low and high booked price (or discount off current list), plus the count of deals
- Whether the working quote is inside, above, or below the band
- The finance floor as a hard line the engine cannot cross
- An exception path with a required reason
If the set is thin, say so and hide the number. Once accepted, the working price should flow into the auto-drafted proposal from configure-price-quote (CPQ). If last-mile deal coaching is running late in the quarter, coach to the band and the exception path, not to finding more discount.
Train on booked price, not the list nobody paid
If you train on list price, or on a CRM Amount field that still holds list, the engine will recommend prices customers have not paid. Booked price is what hit the order form: net of discount, credits, free months, and packaged SKUs, on the term that closed.
In many Salesforce orgs Amount is list, a leftover catalog push, or a number the AE typed on day one and never updated. Gong will often show a different figure on the call. None of those is the label. The label is the signed net.
Closed-won only, with fields you can defend: product family and edition, segment or price book, new versus expansion versus renewal, term and billing, deal-size at booking, channel if it changes norms, and the list in force on the close date so discount stays comparable after a price-book change.
Do not train on open pipeline. Do not treat closed-lost as "the price that would have won." You rarely know it. Use losses, and competitive mentions from Gong, as context for deal risk scoring, not as a reason to walk the band down.
The model only sees prices you already accepted. A segment you over-discounted will look normal. If last year's fourth quarter taught extra discount as how you close, this year's band will sit lower unless you freeze a policy overlay. Public-sector work and most-favored-customer clauses are a hard stop on optimizing one deal. Retrieve the last like-for-like award and flag drift. Do not propose a new point.
The floor is a finance rule the model may not undercut
Finance sets the floor, and the engine may not recommend below it, even if comparable closed-won deals did. Those deals were exceptions, errors, or a prior policy. Replaying them as guidance turns them into the new default.
Three states, not one number:
- Inside the band and above the floor. The AE may quote.
- Outside the band, still above the floor. Flag it. The AE requests an exception with a reason. Deal desk or the named approver decides. The engine does not.
- At or below the floor. Block the quote. That exception is a finance conversation.
Never emit a price under the floor and hope a human notices. If historical booked deals sit under today's floor, exclude them or mark them grandfathered so they cannot pull the low end down. Review the floor on a calendar with finance, not when a large deal is in the room.
Discount that appears in the MSA but was not on the quote is a second leak. If legal already runs contract redline AI, treat an extra commercial concession as out of band the same way you treat a CPQ line.
Illustrative example: a four-person deal desk on mid-market SaaS
A four-person deal desk can spend the quarter arguing individual discounts and still have no shared view of where comparable wins landed. This walkthrough is illustrative: realistic roles and deal shape, no measured lift.
Head of deal desk at a ~90-person B2B SaaS company selling to mid-market operations buyers. Quotes go through CPQ on Salesforce. Quarter-end fills the inbox with one more concession to get it done.
They ran an annual slide of typical discount by segment. List lived in Salesforce. Booked net lived in the signed PDF. Nobody paid list, so AEs treated typical as a starting concession. Distressed fourth-quarter wins sat under the CFO floor. A recommender pointed at Amount treated those nets as the middle of the band. AEs pasted the point estimate into the quote. One AE called it the system price on a live call. The buyer treated it as official.
They rebuilt comparables from closed-won in the same edition, segment, new versus expansion, and deal-size bucket, using booked net versus list at close. The AE sees a band and a floor. In-band quotes proceed. Out-of-band quotes stay as drafts and open an exception. Floor quotes cannot be sent. Deal desk shadowed live quotes for a month before AEs saw the band. The ROI business case generator consumes the CPQ quote; it does not invent a price to make payback land.
A mid-market new logo on the platform edition, roughly $180k annual contract value, three-year annual prepay, is in-band if like-for-like wins clustered there. The same logo asking for a one-year monthly at a much deeper discount is a flag, not a new recommended point.
Shadow the band on deal desk before anyone quotes from it
Backtest on frozen closed-won fields, then shadow live quotes on deal desk, before an AE sees a recommended number. If last year's booked file cannot separate a standard win from a distressed exception, nobody will trust the band.
- Freeze several quarters of closed-won as CPQ and CRM looked at booking, including the list then in force
- Rebuild bands. Known giveaways should sit below the band or be marked exceptions; standard wins should sit inside
- For one quote cycle, compute the band on every submitted quote. Deal desk sees it. AEs do not
- Then show in-band, out-of-band, or below-floor on the AE screen, with the exception form
- Recalibrate after a price-book, packaging, or floor change
Watch in-band quote share, whether exception reasons are specific, realized booked net by segment, floor blocks versus CPQ bypasses, and how often the engine refused a thin set.
Do not report that win rate improved. If AEs now start at the bottom of the band, realized price can fall while in-band rate looks healthy. Booked net by segment is the scoreboard. Start with one price book and one dense segment. Skip public-sector or most-favored-customer books until retrieval-and-flag is the product.
CPQ, CRM, and call recordings each hold one piece
Price guidance, opportunity facts, and call notes are adjacent. None of them is a complete pricing engine.
Configure-price-quote and price-guidance platforms, including tools in the class of Pricefx and DealHub, are where the working quote should live. Put the band, the floor, and the exception path on that record. They are a class, not a ranking.
Salesforce, or the CRM you actually run, holds segment, product, term, amount, and stage. Those are comparable keys only if they are trustworthy at close. Amount that still says list is a poison label.
Gong-class conversation intelligence holds what was said about budget, a competitor, or a requested discount. Use it to explain an exception and to feed deal risk. Do not let a call snippet move the band.
Keep the jobs separate: CRM keys the set, CPQ stores the working quote and the floor, the model proposes the band from closed-won booked net, humans approve exceptions, and the proposal consumes the approved quote. If those systems disagree, the AE should see a conflict, not a blended number.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first