Deal-cost model for supplier negotiation (CentriComp)
Every negotiation lever priced as present-value net cost versus baseline
Role: Designed the model and built and tested the app myself (individual build)

See the app, then try the model
A compact version of my live app, using the same formulas and the ITLS6202 case assumptions (baseline: $10M, back-loaded, standard service, 70% recycling). It is a teaching case model, not a real negotiation result.
- 1 Move a negotiation lever
- 2 Net cost is recomputed in present value against the baseline
- 3 Read the verdict, the waterfall and the break-even price per plan
Negotiation levers
At baseline
$0
Net cost $10,700,000 vs baseline $10,700,000 (PV)
From sticker price to net cost
Break-even price by payment plan
- Front-loaded$8.82M
- Even$9.32M
- Back-loaded$10.00M
The offer sits exactly at break-even for back-loaded: $10,000,000.
The full app adds a service premium lever, A/B/C scenario compare, a computed negotiation playbook and the sustainability flag.
Supply chain problem
Nominal price comparisons hide payment timing, service, installation, recycling and disposal costs.
- Total cost of ownership
- Present value and payment terms
- Supplier negotiation
- Sustainable procurement
- Scenario analysis
Tech I used
A present-value deal-cost model in pure, unit-tested functions behind a React app, pricing every lever against the baseline
- React
- Vite
- JavaScript
- Vitest
- Netlify
Result
A live, tested app that shows the net cost and break-even price of an offer before the negotiation. Inputs are case assumptions.
From negotiation levers to a playbook

01Step 1 of 6, React
Negotiation levers
Nominal price, payment plan, service package, installation timing, recycling rate and disposal cost.
02Step 2 of 6, JavaScript
Present-value model
Pure functions discount each lever into present-value net cost against the baseline.

03Step 3 of 6, React
Verdict and waterfall
A gauge scores the offer; a waterfall runs from sticker price to net cost.

04Step 4 of 6
Break-even and scenarios
Maximum break-even price per payment plan, plus an A/B/C scenario comparison.
05Step 5 of 6
Playbook and sustainability flag
A computed negotiation playbook, and a flag when toxic solvent stays unrecycled.
06Step 6 of 6, Vitest
Tested and deployed
13 unit tests, including a 5,184-case break-even check; deployed on Netlify.
Tech stack in this project
- ReactLever controls, verdict gauge, waterfall, break-even bars, scenarios and playbook
- JavaScriptModel logic in pure functions, kept apart from the interface so every figure is testable
- Vitest13 unit tests, including a 5,184-case check that break-even always nets zero versus baseline
- ViteBuild tooling for the app
- NetlifyHosting for the live app
Why it matters for supply chain
- Present-value net cost = total cost of ownership in supplier selection
- Payment-plan levers = payment terms and working capital in negotiation
- Disposal and recycling flag = sustainable procurement and end-of-life liability
Linked to my Master of Logistics & SCM, University of Sydney
Gallery
Read the full case study
Problem
Comparing supplier offers on nominal price alone hides what a deal really costs: when payments fall due, which service package is included, when installation happens, how much solvent is recycled and the disposal liability left behind. In the ITLS6202 CentriComp case, the buyer had to judge a supplier's offer for a solvent recycling acquisition against a baseline on a like-for-like basis.
Approach
- I designed the deal-cost model and built the app myself: each negotiation lever (nominal price, payment schedule, service package, installation timing, solvent recycling rate and disposal cost) feeds a present-value net cost compared with the baseline.
- I isolated the model logic in pure functions, separate from the React interface, so every figure on screen comes from testable code.
- The interface shows a verdict gauge against the baseline, a waterfall from sticker price to net cost, the maximum break-even price for each payment plan and an A/B/C scenario comparison.
- From the current inputs, the app computes a negotiation playbook and raises a sustainability flag when toxic solvent is left unrecycled.
- I covered the model with 13 Vitest unit tests, including a 5,184-case check that the break-even price always returns zero versus baseline, then rebuilt, fixed and deployed the app on Netlify.
- All inputs are case assumptions; the app makes no claim about grades, savings or real negotiation outcomes.