BidResolve — fictional supplier allocation exercise — 23 September 2026 BUYER REQUIREMENT Buy exactly 1,000 units of X and 1,000 units of Y, in multiples of 100 per offer. X and Y represent already-qualified technical items. All suppliers' versions of each item are interchangeable for this exercise. No additional stock is wanted. SUPPLIER QUOTES (USD) A: X at 5 USD/unit, capacity 600 units. Fixed fee 1,000 USD if A is used. B: Y at 7 USD/unit, capacity 1,000 units. Fixed fee 4,000 USD if B is used. C: X and Y at 10 USD/unit; capacity 1,000 units per item. No fixed fee. C grants 10% off ALL C merchandise if X + Y bought from C is at least 1,600 units. The discount is not a progressive tier and does not apply to A or B. COMMON CONDITIONS One decision on 1 October 2026, one delivery on 15 October 2026; all offers remain valid to that delivery. All listed capacities are available by the same deadline. No taxes, currency conversion, freight beyond the fixed fees, extra minimums, commitments, exclusions or other costs. Fees are charged once per used supplier. There are no client documents or real supplier identities in this exercise. COMPARABLE ALLOCATIONS Lowest unit prices first: A 600 X, B 1,000 Y, C 400 X. Goods 3,000 + 7,000 + 4,000; fees 1,000 + 4,000; no C discount: 19,000 USD. Everything from C: 1,000 X + 1,000 Y; 20,000 - 2,000 discount = 18,000 USD. Best of the 77 exact-demand combinations: A 400 X; C 600 X + 1,000 Y. A: 400 x 5 + 1,000 fee = 3,000. C: 1,600 x 10 - 1,600 discount = 14,400. Total: 17,400 USD. Difference: 1,600 USD versus the first allocation, 600 versus all C. These are synthetic arithmetic differences, not achieved customer savings. WHY LESS FROM A? A's lower unit price is not enough to justify losing C's combined-volume discount. At 500 X from A and 500 X + 1,000 Y from C, C gets only 1,500 units: total 18,500 USD. At 400 X from A, C gets exactly 1,600 units and the total falls to 17,400 USD. REPRODUCE Save terms.json and enumerate_allocations.py together. Run the script with Python 3. It enumerates 7 possible A quantities times 11 possible B quantities = 77 choices. All remaining demand goes to C. It has no dependency on BidResolve's solver. The product solver and its separate feasibility/cost checker are tested on a manually prepared synthetic model. That is not a test of document extraction or real buyer acceptance. The separate checker does not itself prove optimality. Source: https://bidresolve.com/en/guide/#allocation-example Fictional USD dataset, distinct from the French EUR dataset; no currency conversion.