Proposify Pricing Library, Lead Product Designer.

A pricing tool reps would trust more than their own spreadsheet.

~25%Faster assembly
50→87.5%Task completion

What I owned

  • Customer research: interviews across four mid-market accounts, plus support tickets
  • Feasibility on external pricing integrations, with engineering
  • Catalog architecture and pricing UX, from flows to high-fidelity prototypes
  • Rollout, beta, and post-launch evaluation

Constraints

  • 3 months to Phase 1
  • One PM, four engineers, and myself as the product design lead
  • Customers' real prices lived in systems we didn't own
  • A wrong number becomes a signed contract

Our real competitor was Excel, and Excel was winning.

Mid-market reps didn't trust Proposify with their prices. The v2 Pricing Library couldn't bundle, tier, apply conditional discounts, route approvals or sync with an outside price source, so reps built every quote in a spreadsheet and pasted the result in. Nobody downstream could see what had happened to the number.

"I discovered two reps were quoting different prices for the same product. There was no way to enforce consistency."VP Sales, B2B services provider
ItemListRep discountQuoted
Enterprise License$24,99915%$21,249
Enterprise LicenseSame product, different rep$24,99928%$17,999
Pro Services$5,0000%$5,000
Analytics ModuleFormula referenced a deleted row$7,500-#REF!
The workaround in production.

Customers wanted automation, but never at the cost of seeing what changed.

"We want the system to update prices, but only if we know when it happens. Surprises would erode our clients' trust."Account Director, marketing agency

I turned that into four principles the team used for every trade-off:

We cut a full CPQ brief down to the part nobody trusted: the price.

The brief was a full CPQ product: configuration, pricing, quoting, approvals and guided selling. Four sprints of interviews argued against building it that way. Reps weren't losing time to configuration logic; they were losing it to not trusting the price they started from. So Phase 1 narrowed to the Pricing Catalog, with the rest of CPQ to follow on top of it.

A catalog worth quoting from, wired into every pricing table.

The catalog replaced the flat fee list with folders, search and inline editing, and billing frequency travels with each item instead of being retyped into every quote.

Pricing Library
Products
Bundles
Approvals
Analytics
Enterprise Platform License
SKU: EPL-001
DetailsAdd-onsDependenciesVolume PricingBundlesPermissions
FieldValue
Cost$8,000
List Price$24,999 Suggested: $11,200 avg.
Default Quantity1
Lock PriceEnabled
Product detail: one screen for most people, six tabs for the admin who needs them.
Pricing table
The menu on a single quote row
ItemPriceQtySubtotal
Enterprise LicenseEPL-001$24,9991$24,999⋮
Pro ServicesCustom line, not in catalog$5,0002$10,000⋮
+Insert row
+Insert column
↓Insert from Catalog
↑Save to Catalog
⧉Duplicate row
×Delete row
%Discount
↻Billing frequency
☑Make row optional
Managed SupportMS-220$1,20012$14,400⋮
Onsite TrainingOT-050$1,2001$1,200⋮
Analytics ModuleAM-310$7,5001$7,500⋮
Total$58,099
The pricing table’s row menu. Insert from Catalog pulls a priced item in; Save to Catalog sends a custom line back.

I spent two weeks pushing for two-way pricing sync. Then we killed it.

Customers were asking for live sync between Proposify and their own sheets, and I argued for it. A feasibility spike with engineering found what I'd missed: if both sides changed the same price between syncs, every way of resolving it silently overwrote one of them. That broke the no-silent-automation principle, and a pricing tool that changes numbers without telling you is worse than none, because people stop checking.

✕ Proposed, killed at feasibility

Two-way live sync

Proposify ⇄ Customer sheet
Both edit $24,999 → whose number wins? Any answer overwrites someone silently.

Impressive on a roadmap, unresolvable in the one case that matters: a price on a contract.

✓ Shipped

A catalog, and nothing moves by itself

Pricing Catalog → Proposal
Proposal → Pricing Catalog
Insert from Catalog · Save to Catalog

Still two-way, but a person makes every move, one row at a time, so there is never a conflict to resolve.

The decision that defined the project. Losing the feature was the point, not the cost.

Killing sync made the catalog the source of truth inside Proposify, and that tested our second principle. It turned out to be a hypothesis. We'd assumed customers needed Proposify to defer to a pricing system they already had. In reality, smaller companies were happy to build their catalog from scratch, and others were fine uploading a CSV to start. What most companies actually used to track pricing was an Excel sheet, so the eventual answer was simply letting them link it as the source.

Three fail-safes made the numbers trustworthy.

  1. 01A rep edits a row
    City of Toronto · Pricing
    ItemDisc.Total
    Enterprise License25%$18,749
    Pro Services0%$5,000
  2. 02The threshold trips
    Discount over 20% needs approval. You can still send. A manager will review it.
    ItemDisc.Total
    Enterprise License25%$18,749
    Pro Services0%$5,000
  3. 03Sent, and flagged for review
    Approvals · Manager view
    City of TorontoDiscount 25%, limit 20%
    Needs review
    Harbourfront EventsTotal $38,200
    Within limits
Admins set the rule, such as a discount over 20% or a total over $50,000.

Building a priced proposal became faster and significantly more reliable.

~25%Faster assembly
50→87.5%Task completion

Every time we chose to show more, whether a log, an icon or one more confirmation, people trusted the system more.

Next case study

Rebuilding an editor customers had rejected

→