Hamza Fayz
Home/ Case Studies/ Procurement Truth Model
Case · 04·Supporting·Procurement allocation

Header delta allocated with governance — line cost stays honest.

Header-level discounts, charges, and tax components stop corrupting line-level cost. Allocation is a governed rule, tax base follows the allocated line, and 3-way reconciliation happens at WBS — not at "report export".

PatternRule-driven allocation
GranularityHeader → Line → WBS
TaxMapped · not gross
Reconciliation3-way · by WBS
Allocation · header to line Traced
01Header
02Rule
03Line split
04Tax base
05WBS cost
Audit anchor · traceable back to source
PO doc
Line #
Rule ID
WBS
Sample scope20 POsAcross 4 projects
Line items79All with allocated deltas
Allocation bases3Value · quantity · none
WBS aggregations33Committed · received · invoiced
Demo exceptions7Routed by rule, by owner
Why this mattered

Totals looked right. Line-level cost told a different story.

Header discounts and charges stayed on the header. Line-level WBS cost drifted silently — invisible to anyone not reading the allocation logic by hand.

Operational problem

Header deltas corrupted the line — and no one saw it until month-end.

  • Header-level discounts (rebates, volume breaks) never made it down to the line. PMs read WBS cost without the rebate reflected.
  • Header charges (freight, inspection, handling) were spread informally or ignored — same line items carried different cost depending on who ran the report.
  • Tax base was computed against the raw line, not the governed line — so tax reconciliation drifted.
  • Reconciliation happened only at export: Excel, VLOOKUP, a coffee break, and a guess.
System & data gap

No governed rule for header → line, no anchor back to the document.

  • Allocation basis was implicit — nowhere in the data model. Rebuilding it required reading PO headers and line totals simultaneously.
  • No audit trail: if a variance was questioned later, tracing it to a specific rule version was impossible.
  • 3-way matching stopped at quantity — no one was matching the allocated cost against receipt and invoice at the line level.
  • Exception routing was generic — "reconciliation owner" for every case, regardless of whether the problem was AP, procurement, or warehouse.
What I built

Three parts: the rule, the split, the anchor.

Allocation model · audit-safe Rule → split → tax base → WBS
01PO header
02Rule · versioned
03Line · allocated
04Tax base · mapped
05WBS · trusted cost
Every line stores its anchor
doc_id
line_no
rule_version
wbs_code
Logic & control

The rules that make allocation defensible.

Three control patterns turn a silent risk into a governed, auditable step.

Rule 01 · allocation basis

Value-proportional by default

Header discount splits by line value. High-value lines carry more of the rebate, low-value lines less — proportionally.

line_disc = header_disc × (line_value / Σ line_values)
Header-only
Line A · 1,000→ 1,000
Line B · 2,000→ 2,000
WBS carriespre-rebate
Allocated
Line A · 1,000→ 970
Line B · 2,000→ 1,940
WBS carriestrue net
Rule 02 · tax base

Tax follows the allocated line

Tax base = allocated line net (post-discount, plus allocated charges). Tax on the right number, every line, every time.

tax_base = line_value − disc_alloc + charge_alloc
Gross-based
Line taxon raw value
Driftmonth-end
Allocated-base
Line taxon allocated
Driftzero
Rule 03 · exception routing

Route by the rule that fired

Every exception carries its triggering rule ID. Tax mismatch → Finance Ops. Discount ceiling breached → Procurement. Receipt surplus → Warehouse.

owner = catalog[rule_id].owner
Generic
Owner"Reconciliation"
Fix timedays
Scoped
OwnerFinance Ops
Fix timesame-day
Traceability

A WBS cost line traces to a PO line, a rule version, and an allocation decision.

If leadership asks "why is A-2.3 reading 27,386 SAR?" — the answer walks back through five governed steps.

PO · 10421 · header Rule · R-02 v14 Discount allocated · -486 SAR Tax base · 23,814 SAR Tax · 3,572 SAR WBS A-2.3 · 27,386 SAR
Invoice · INV-2026-8824 Match · 3-way Variance · +0.4% Within tolerance Auto-approve · posted
Outcomes as signals

What shifted in how procurement cost is read.

WBS costTrustworthyno silent drift
Tax reconciliationMappednot gross, not later
Audit trailPer line · per rulerule_id + version stored
Exception routingScoped by ruleright owner, first time
Artifacts

Proof artifacts — live and planned.

Excel · live

Procurement Truth · demo workbook

20 POs · 79 lines across 4 projects · 33 WBS aggregations · 7 realistic exceptions. Shows allocation rule, tax base mapping, and 3-way reconciliation by WBS — with integrity checks listed in the README sheet.

Download Excel → Available · portfolio sample
Excel · live

Cost Control · WBS Workbook

Complementary view: the committed / received / invoiced / actual / forecast model that sits on top of procurement truth. Same 4 projects; activity-level roll-up.

Download Excel → Available · portfolio sample
Rule catalog · planned

Allocation rule dictionary

Full redacted rulebook for allocation, tax base, and exception routing — with owner, version, and activation window per rule.

Phase 5