Supplier scorecard comparison
Top 8 by spend · four normalised metrics per supplier, with the composite score overlaid · every bar is derived from a posted GRN, and the tier follows the score rather than the other way round
16 active · 6 countries · AED 5.48M spend over 90 days · every column on this page is produced by a goods receipt, so a supplier is graded on what receiving actually measured rather than on an opinion someone typed
On-time is NULL, never 100, for a supplier with no completed PO in the window. Two suppliers sort last on that column and the header says so, rather than presenting a perfect score for having done nothing.
Top 8 by spend · four normalised metrics per supplier, with the composite score overlaid · every bar is derived from a posted GRN, and the tier follows the score rather than the other way round
Outstanding to suppliers, by age of the invoice · segment width is share of AED
AED 1.28M outstanding. The two oldest buckets are entirely disputes, not late payments: three price-variance claims where the invoice unit price does not equal the PO price, and one unresolved short-ship. An aging bar that cannot distinguish a dispute from a slow payment sends the wrong person to chase it.
90 days · the ghost bar is contracted, the solid bar is measured from PO submit to first receipt
16 suppliers · 4 currencies · 90d window · FX USD 3.67, EUR 4.01, GBP 4.60, TRY 0.11, synced 29-07-2026 06:00 Dubai · every AED figure stores the rate and the date that produced it
| Supplier | Country | Category | Terms | Ccy | Spend AED | Spend local | Lead prom | Lead act | On-time (NULL last) | Short% | Defect% | Claims | Sole | Score | Tier |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LC Straps LC_STRAPS |
UAE | Straps | 30d DAP | AED | 1,284,000 | 1,284,000 | 21 | 19 | 96% | 0.4 | 1.6 | 0 | 3 | 91 | A |
| CIC CIC |
China | Leather goods | 90d FOB | USD | 1,046,000 | $285,000 | 45 | 56 | 68% | 8.8 | 3.3 | 3 | 11 | 66 | B |
| ORO Leather ORO_LEATHER |
Italy | Premium leather | 30d DAP | EUR | 842,000 | €210,000 | 30 | 28 | 91% | 1.1 | 4.9 | 2 | 6 | 85 | A |
| VJ Jewels VJ_JEWELS |
India | Jewellery | 45d FOB | USD | 596,000 | $162,400 | 36 | 42 | 71% | 5.4 | 5.2 | 1 | 4 | 68 | B |
| Ceramica MEA CERAMICA_MEA |
UAE | Ceramics | 30d DAP | AED | 412,000 | 412,000 | 18 | 17 | 94% | 0.8 | 6.2 | 1 | 2 | 82 | A |
| Bursa Textiles BURSA_TEX |
Turkey | Textiles | 45d FOB | USD | 368,000 | $100,270 | 40 | 44 | 82% | 3.2 | 7.9 | 1 | 5 | 67 | B |
| Sharq Metalworks SHARQ_METAL |
UAE | Hardware | 30d DAP | AED | 284,000 | 284,000 | 14 | 14 | 89% | 2.6 | 6.8 | 1 | 3 | 73 | B |
| Milano Pelle MILANO_PELLE |
Italy | Premium leather | 30d DAP | EUR | 246,000 | €61,350 | 32 | 30 | 95% | 0.6 | 1.2 | 0 | 2 | 92 | A |
| Jaipur Brass JAIPUR_BRASS |
India | Hardware | 60d FOB | USD | 184,000 | $50,140 | 42 | 41 | 90% | 1.8 | 2.4 | 0 | 1 | 84 | A |
| Venezia Vetro VENEZIA_VETRO |
Italy | Glass | 30d DAP | EUR | 162,000 | €40,400 | 38 | 36 | 93% | 0.9 | 8.4 | 1 | 2 | 78 | A |
| Yiwu Home YIWU_HOME |
China | Packaging | 90d FOB | USD | 148,000 | $40,330 | 52 | 68 | 42% | 12.4 | 11.4 | 2 | 1 | 37 | C |
| Shenzhen Fittings SHENZHEN_FIT |
China | Hardware | 90d FOB | USD | 126,000 | $34,330 | 48 | 54 | 78% | 6.1 | 9.8 | 1 | 4 | 48 | C |
| Izmir Bath IZMIR_BATH |
Turkey | Textiles | 45d FOB | USD | 98,000 | $26,700 | 31 | 32 | 88% | 2.1 | 3.6 | 0 | 1 | 80 | A |
| Al Quoz Packaging ALQUOZ_PACK |
UAE | Packaging | 30d DAP | AED | 72,000 | 72,000 | 7 | 6 | 99% | 0.0 | 0.3 | 0 | 0 | 95 | A |
| Sharjah Woodcraft SHJ_WOOD |
UAE | Display fixtures | 45d DAP | AED | 48,000 | 48,000 | 28 | - | NULL | - | - | 0 | 0 | - | new |
| Antalya Ceramics ANTALYA_CER |
Turkey | Ceramics | 60d FOB | USD | 0 | $0 | 44 | - | NULL | - | - | 0 | 0 | - | dormant |
Three named criteria, each with the evidence that triggered it · a supplier appears here because a number crossed a threshold, not because someone felt uneasy
Revenue at risk
Sole source is derived nightly, never stored on the SKU: a SKU is sole-source when exactly one supplier mapping is active and approved. Qualifying a second supplier changes the answer the next morning with no data migration.
Weights are data, so they can be argued with
Tier follows the score: A at 80 and above, B from 55 to 79, C below 55. A tier cannot be typed. A supplier the business wants to favour gets an is_preferred flag instead, which is an opinion and is labelled as one.
The estate currently holds four disagreeing risk vocabularies: i2's standard / strategic / at_risk, the v2 mockup's typed A / B / C, a "Preferred" badge, and ops2's is_discontinued. INV1 has none at all, because its POs store the supplier as a free-text string with no table behind it.
Scorecards are materialised nightly, never computed in a page request, so this is a table read rather than a recomputation.
The registry is seeded from three incumbent registers plus every free-text spelling INV1 ever stored. Run the alias absorption to populate it.
The nightly job failed at 04:10. These numbers are from 28-07 and are labelled as such rather than hidden, because a 24-hour-old scorecard is still useful and a blank page is not.
job supplier-scorecard · exit 1 · 29-07 04:10
Names, spend and performance are visible to any i3 viewer. Payment terms, bank details and claim values need role >= manager plus the supplier_commercial feature.
6 columns masked
3 filters hide all 16 suppliers.
The terms table is being reindexed. A new terms version cannot be written, and existing versions still resolve correctly for every PO and invoice.
21:00 to 21:25 GST
Defect rate and short-ship rate need 7 clean days of receipt posting behind them. The numbers are computed and are marked not yet authoritative, so nobody re-tiers a supplier on 4 days of data.
GATE 3 day 4 of 7
Recomputing any closed period from the ledger and the GRN tables alone must reproduce the stored row exactly. That assertion runs nightly and it is what makes a supplier conversation defensible.