An evidence-based assessment of structural exposure across the company's supplier, manufacturing and distribution network, built directly from NetSuite transaction data for the twelve months ending 31 August 2026.
The network is small, entirely domestic, and structurally concentrated. Two furniture suppliers in the San Francisco Bay Area are the sole source of 46% of product revenue, and the single Los Angeles distribution center ships 54% of it and performs 92% of manufacturing. Delivery performance has been excellent on paper, but the underlying data cannot yet support that conclusion.
TD3016323 is a US multi-channel retailer and light manufacturer operating three subsidiaries in a single currency. Product lines derived from the item master and sales history: furniture and mattresses (Estes Park, Ascend and Baja casegoods; Contour Rhapsody Breeze and Patriarch Luxury Firm mattresses), apparel and leather goods (jackets, satchels, watches, backpacks), beauty (hair care and cosmetics), and a small but growing assembled-goods line (bicycle sub-assemblies, keyboards and flex circuit boards) built at the Los Angeles distribution center since June 2026.
Distribution runs through two DCs (Los Angeles, Miami) serving a small number of large B2B customers (~$6K average order), and two stores (San Francisco, New York) serving many small transactions (~$170). A Chicago DC holds $43K of stock but recorded no sales in the period.
| Dimension | How it was measured | NetSuite source |
|---|---|---|
| Supplier spend | Vendor bills posted in the period, direct-material vendors only (vendors with item-vendor records or PO lines). | transaction VendBill |
| Sourcing structure | Item-vendor records plus vendors actually used on PO lines. Single-sourced = one vendor across both. | itemvendor, PurchOrd lines |
| Revenue exposure | Invoice and cash-sale item lines attributed to each item's preferred vendor; kit revenue split evenly across components. Subsidiary 4 (elimination) and 27 "TEST" service invoices excluded. | transactionline CustInvc, CashSale |
| Delivery performance | PO → item-receipt linkage; lead time = PO date to last receipt; on-time = last receipt ≤ PO due date; fill = qty received ÷ ordered. | nexttransactionlinelink, ItemRcpt |
| Buffer | Days of cover = 365 × on-hand ÷ 12-month sold quantity, aggregated by preferred vendor. | inventoryitemlocations |
| Manufacturing | Work orders by assembly and location; Advanced BOM revision components. | WorkOrd, bomrevisioncomponent |
The structural map below is built from actual inbound receipt lanes (vendor → site), transfer orders (site → site) and outbound sales (site → customer segment) in the period. Line weight follows receipt count; red marks the two sole-source suppliers whose loss cannot currently be covered.
| Node | Tier / role | Location | Spend share | Revenue share | Sites served |
|---|---|---|---|---|---|
| Generation N (1129) | T1 — leather & apparel | San Francisco, CA | 37.3% | 13.6% | 4 |
| Bedline (1133) | T1 — mattresses, box springs | Oakland, CA | 21.9% | 28.2% | 4 |
| Broyhill (1131) | T1 — casegoods | San Mateo, CA | 15.3% | 18.2% | 4 |
| The Apparel Co (1130) | T1 — apparel; highest PO frequency (105) | Bemidji, MN | 13.4% | 8.3% | 4 |
| Hestra (1127) | T1 — apparel alternate | San Mateo, CA | 0.6% | 10.6%† | 2 |
| Flexsteel (1132) | T1 — casegoods alternate | San Jose, CA | 0.2% | 6.1%† | 2 |
| Lotion Co · Mac Oca · H&B Supplies | T1 — beauty trio, fully cross-sourced | MN* · NY · TX | 7.4% | 10.0% | 4 each |
| Crown (357) · Johnson Supply (3867) · Core4 (356) | Component suppliers → assembly | OH* · NY · MN* | 3.1% | assembly line | LA, CHI, SF |
| China Manufacturer (3881) | T1 — only offshore vendor | Beijing, CN | 0.05% | 0 | 1 |
| 03 Los Angeles DC (loc 5) | Manufacturing + distribution hub | Los Angeles, CA | — | 54.0% | 3 outbound TO lanes |
| 05 Miami (loc 12) | Distribution center | Miami, FL | — | 34.0% | — |
| 01 SF Store · 02 NY Store (loc 1, 3) | Retail | CA · NY | — | 7.3% · 4.6% | — |
| 04 Chicago DC (loc 8) | Dormant DC; 1 work order | Chicago, IL | — | 0% | — |
† Revenue attributed by preferred-vendor flag. Hestra and Flexsteel are flagged preferred on items that Apparel Co and Broyhill actually fulfilled (Flexsteel received $3K of POs against $71K of attributed revenue) — they are alternates on paper, unproven at volume.
Criticality combines four lenses: single-source dependency, downstream blast radius (revenue and sites affected), concentration, and estimated time to recover or qualify a replacement. Inventory cover is shown as time-to-impact — the days before an outage reaches customers, assuming demand continues at the 12-month run rate.
| # | Node | Single-source exposure | Blast radius | Time-to-impact | Time-to-recover ‡ | Alternative |
|---|---|---|---|---|---|---|
| 1 | Bedline | 13 of 13 items (Contour Rhapsody Breeze ×8, Patriarch Luxury Firm ×4, Box Spring) | $326K revenue · 28% · all 4 sites · Box Spring alone $38K | 286 days | 6–9 months — custom matrix specs, flammability compliance | None |
| 2 | Broyhill | 9 of 10 Estes Park items | $210K · 18% · all 4 sites | 353 days | 6–9 months — casegoods tooling | Partial Flexsteel on Ascend/Baja only |
| 3 | SF Bay Area cluster | 5 vendors within ~40 miles | $693K revenue (60%) · $1.13M spend (75%) · $661K inventory (59%) | — | Regional event: months | Partial apparel via MN; furniture/mattress none |
| 4 | 03 Los Angeles DC | Only site running assembly (22 of 24 work orders) | 54% of revenue · $352K inventory · origin of all transfer lanes | — | Weeks–months to relocate manufacturing | Partial Miami distributes; Chicago dormant |
| 5 | Generation N | 11 of 16 items | $157K · 14% | 1,344 days | 3–6 months — leather goods | Buffered Apparel Co on 5 items; deep stock |
| 6 | Johnson Supply · Crown · Core4 | 24 of 24 purchased BOM components single-sourced (Johnson 14, Crown 7, Core4 3) | Entire assembly line (MBK001 ← WHL001 ← PHA0001, SAF001, Keyboard, Flex Circuit); 24 WOs since June | Johnson 6,197d · Crown 3,032d (low demand) | 2–3 months if components are standard | None recorded |
| 7 | The Apparel Co | 13 of 16 items | $96K · 8% · 105 POs/yr | 454 days | 3–6 months | Partial Hestra on jackets, Gen N on leather |
‡ Time-to-recover figures are industry-norm estimates, not measured. Time-to-impact is aggregated by vendor; individual SKUs will stock out earlier than the aggregate suggests.
Bedline and Broyhill are each other's only backup. The Estes Park Queen Poster Headboard ($27K revenue) is the single dual-sourced furniture SKU — and its two vendors are the two most critical nodes in the network, 15 miles apart.
The assembly chain is three deep. AS_MBK001 requires AS_WHL001 (×2), which requires AS_PHA0001, which requires BLT001, CAP001 (Crown) and NUT001, TYR001 (Johnson). A single late Johnson or Crown shipment stalls three assembly levels. All 24 purchased components have exactly one vendor.
The beauty trio is the healthy pattern. Lotion Co, Mac Oca and Health & Beauty Supplies cross-source every item between them: zero single-source SKUs, four sites each. This is the template the furniture lines should follow.
Chicago is the unused hedge. Location 8 holds $43K of stock, receives Crown components and transfers from LA, and has already built one SAF001 work order — but shipped nothing in twelve months.
Each supplier is scored 1 (low) to 5 (high) on three likelihood dimensions and one impact dimension. The likelihood dimensions are combined with explicit weights; impact is scored separately so the two are never conflated.
| Dimension | Weight | Rationale |
|---|---|---|
| Delivery performance | 40% | The only empirical signal — but in this account 373 of 378 receipts share their PO date, so the signal barely discriminates. Weight capped at 40% rather than the usual 50%+. |
| Geographic | 35% | Raised above the norm because physical clustering (seismic, wildfire, port) is the dominant real-world exposure. Scores use recorded billing city. |
| Geopolitical | 25% | Near-uniform: 15 of 16 vendors are US domestic. Set to 2 (not 1) for resellers of furniture, apparel and beauty on the assumption of Asian upstream manufacturing and tariff exposure — unverifiable from NetSuite. |
| Vendor | Geo 35% | Geopol 25% | Delivery 40% | Likelihood | Impact | Priority L×I | Delivery evidence (12 mo) |
|---|---|---|---|---|---|---|---|
| Bedline | 4 | 2 | 2 | 2.7 | 5 | 13.5 | 35 POs · 97.1% on-time (1 late) · 100% fill · one receipt dated 31 days before its PO |
| Broyhill | 4 | 2 | 2 | 2.7 | 5 | 13.5 | 36 POs · 100% on-time · 100% fill |
| Generation N | 4 | 2 | 3 | 3.1 | 4 | 12.4 | 44 POs · 2 partially received & past due · bills $563K vs POs $187K |
| Crown Equipment | 2 | 1 | 4 | 2.6 | 3 | 7.8 | 10 POs · 75% on-time (2 late of 8 judged) · 1 open PO past due |
| Johnson Supply | 3 | 1 | 3 | 2.5 | 3 | 7.5 | 8 POs · 85.5% fill · 1 past due · only vendor with non-zero recorded lead time (2 days) |
| The Apparel Co | 2 | 2 | 2 | 2.0 | 3 | 6.0 | 105 POs · 100% on-time · 100% fill |
| Hestra | 4 | 2 | 2 | 2.7 | 2 | 5.4 | 6 POs · 100% |
| Flexsteel | 4 | 2 | 2 | 2.7 | 2 | 5.4 | 7 POs · 100% · unproven at volume |
| Mac Oca & Co | 3 | 2 | 2 | 2.4 | 2 | 4.8 | 39 POs · 100% |
| China Manufacturer | 4 | 5 | 5 | 4.7 | 1 | 4.7 | 2 POs · 50% fill · open PO past due · only offshore vendor |
| Lotion Co | 2 | 2 | 2 | 2.0 | 2 | 4.0 | 36 POs · 100% |
| Health & Beauty Supplies | 2 | 2 | 2 | 2.0 | 2 | 4.0 | 30 POs · 100% |
| Core4Solutions | 2 | 2 | 2 | 2.0 | 2 | 4.0 | 4 POs · 100% · sole source PCB raw materials |
| Coleman | 4 | 1 | 2 | 2.5 | 1 | 2.5 | 3 POs · 100% · Gulf Coast hurricane exposure |
| Betty Black | 2 | 1 | 2 | 1.8 | 1 | 1.8 | 12 POs · 100% |
| Micro Shop | 2 | 1 | 2 | 1.8 | 1 | 1.8 | 1 PO |
Ten actions, ordered by risk reduction per unit of effort. Quick wins are data and configuration work that can start this month; the two strategic items address the only two risks that no amount of inventory can cover.
| # | Action | Risk addressed | Impact | Effort | Timeframe | KPI |
|---|---|---|---|---|---|---|
| 1 | Fix the instrumentation. Populate vendor lead times (itemvendor.predicteddays), make Expected Receipt Date mandatory on PO lines, date receipts on physical arrival, correct vendor addresses. | Delivery performance is unmeasurable; heatmap likelihood axis is uncertainty-weighted | High | Low | Quick win < 3 months | % PO lines with expected date → 100% % vendors with validated address → 100% |
| 2 | Vendor OTIF scorecard. Monthly PO-vs-receipt report (on-time, fill, past-due opens), reviewed with buyers; begin with Crown and Johnson. | Delivery slippage undetected on assembly-gating vendors | Medium | Low | Quick win | OTIF ≥ 95% per vendor Past-due open POs 4 → 0 |
| 3 | Reconcile Generation N. $563K billed against $187K of POs — determine whether this is non-PO buying, blanket orders or a data issue. | Hidden dependency; 37% of spend outside PO control | Medium | Low | Quick win | Non-PO bill share for direct vendors < 5% |
| 4 | Dual-source the BOM. Identify and qualify alternates for the 24 single-sourced components, prioritising the MBK001 → WHL001 → PHA0001 chain (Crown BLT001/CAP001, Johnson NUT001/TYR001/RIM001/SPK001). | Assembly line single points of failure | Medium | Low–Med | Quick win → medium | % BOM components with ≥ 2 vendors: 0% → 80% |
| 5 | Extend Flexsteel to Estes Park. Place trial POs on the 9 single-sourced Broyhill SKUs; Flexsteel already supplies Ascend/Baja tables but has received only $3K in 12 months. | Broyhill sole source — $210K, 18% | High | Medium | Medium term 3–9 months | Estes Park SKUs dual-sourced 1 → 10 Flexsteel PO share of casegoods ≥ 25% |
| 6 | Rebalance safety stock. Reduce Generation N cover from 1,344 days toward 180; redeploy the working capital into 90–120 days of A-SKU cover for Bedline and Broyhill items at Miami (12) and Chicago (8). | Bay Area regional event; Bedline/Broyhill outage; $661K of inventory co-located with the risk | High | Medium | Medium term | Days of cover per vendor within 60–180 band % A-SKUs stocked at ≥ 2 non-CA sites |
| 7 | Supplier BCP and contract terms. Require business-continuity plans and disaster-recovery disclosure from Bedline, Broyhill, Generation N; add capacity-reservation and allocation-priority clauses. | Bay Area cluster; Tier-2 opacity | Medium | Low–Med | Medium term | % of top-5 spend under contracts with BCP + allocation clauses → 100% |
| 8 | Qualify a second mattress source for Contour Rhapsody Breeze, Patriarch Luxury Firm and Box Spring — outside California. | Bedline sole source — $326K, 28%, no alternate | High | High | Strategic 12–18 months | % of Bedline revenue with a qualified alternate 0% → 100% |
| 9 | Activate Chicago DC (8) as second assembly site and East/Midwest stocking point; it already receives Crown components, LA transfers, and has built SAF001. | Los Angeles DC single-site manufacturing and hub | High | Med–High | Strategic | Share of work orders and shipments from Chicago 0% → ≥ 20% |
| 10 | Resolve China Manufacturer. Close or re-plan the past-due PO (50% fill); if the relationship grows, add tariff and lead-time monitoring. | Offshore geopolitical exposure (immaterial today) | Low | Low | Quick win | Past-due POs = 0; offshore spend tracked |
| Spend | Vendor bills (foreigntotal) in the period, direct-material vendors only. Indirect vendors (IT, facilities, tax agencies, intercompany) excluded. |
| Revenue | Invoice + cash-sale item lines, subsidiaries 1–3, attributed to the item's preferred vendor. Multi-source items therefore credit Hestra and Flexsteel even where Apparel Co and Broyhill fulfilled the POs. 27 invoices ($681,677) memo'd "TEST — Copper Software" with no location excluded; a further ~$36K of kit and unattributed revenue is not assigned to any vendor. |
| Recovery times | Industry norms, not measured: mattresses and casegoods 6–9 months; apparel and leather 3–6; beauty 2–4; standard components 2–3. |
| Geography | Recorded vendor billing city. Where city and state contradict (Lotion Co "Eden Prairie, AZ"; Core4 "Eden Prairie, AZ"; Crown "New Bremen, CO"), the score reflects the more plausible location. |
| Time-to-impact | 365 × on-hand ÷ 12-month sold units, aggregated by vendor. SKU-level cover varies widely; matrix children inherit their parent's vendor. |
| Gap | Effect on this assessment |
|---|---|
| No Tier-2 visibility | Country of manufacture, sub-suppliers, and tariff exposure of Bedline, Broyhill and Generation N goods are unknown. The geopolitical axis is assumption-driven. |
| Synthetic delivery timestamps | 373 of 378 received POs have identical PO and receipt dates; expectedreceiptdate is mostly null; item.leadtime is removed in this release; itemvendor.predicteddays is empty. The delivery axis is directional only. |
| Dormant sites | Only 5 of 15 locations hold stock. 3PL (14) and FBA (15) show no activity — either dormant or not transacted in NetSuite. |
| Vendor master quality | Contradictory city/state pairs on at least four vendors; no capacity, contract, financial-health or ownership data. |
| Bills ≠ POs | Generation N billed $563K against $187K of POs; The Apparel Co and Bedline reconcile within 2%. The gap is unexplained. |
| Demo-ledger artefacts | Monthly "Beg Balance" journals inflate GL revenue; this analysis uses transaction lines, not the GL, and is unaffected. |
itemvendor updates can be drafted with dry-runs for approval.All figures derive from the SuiteQL below, run against the production account on 16 September 2026. Period bounds: 2025-09-01 ≤ trandate < 2026-09-01. Queries follow the account's house style: tl.subsidiary <> 4 excludes the elimination subsidiary; mainline = 'F' AND taxline = 'F' isolates item lines; amounts are wrapped in ABS().
SELECT v.id, v.entityid, v.companyname, v.isinactive, BUILTIN.DF(v.category) AS category,
v.subsidiary, v.terms, ea.country, ea.state, ea.city
FROM vendor v
LEFT JOIN entityaddress ea ON ea.nkey = v.defaultbillingaddress
ORDER BY v.entityid
SELECT t.entity AS vendor_id, t.type, COUNT(DISTINCT t.id) AS txn_count,
ROUND(SUM(t.foreigntotal), 2) AS total
FROM transaction t
WHERE t.type IN ('VendBill', 'PurchOrd')
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY t.entity, t.type
ORDER BY t.type, SUM(t.foreigntotal) DESC
SELECT iv.item, i.itemid, i.itemtype, i.class, i.matrixtype, i.parent,
iv.vendor, v.entityid AS vendor_name, iv.preferredvendor, iv.subsidiary, iv.purchaseprice
FROM itemvendor iv
JOIN item i ON i.id = iv.item
JOIN vendor v ON v.id = iv.vendor
WHERE i.isinactive = 'F'
ORDER BY iv.item, iv.vendor
SELECT t.entity AS vendor_id, tl.item, i.itemid, i.itemtype, i.class,
COALESCE(i.parent, i.id) AS family,
COUNT(DISTINCT t.id) AS po_count, ROUND(SUM(ABS(tl.netamount)), 2) AS po_amount,
SUM(ABS(tl.quantity)) AS qty, COUNT(DISTINCT tl.location) AS n_locations
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F'
JOIN item i ON i.id = tl.item
WHERE t.type = 'PurchOrd'
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY t.entity, tl.item, i.itemid, i.itemtype, i.class, COALESCE(i.parent, i.id)
ORDER BY SUM(ABS(tl.netamount)) DESC
-- PO lines
SELECT t.id AS po_id, t.entity AS vendor_id, t.trandate AS po_date, t.duedate AS po_due, t.status,
tl.uniquekey AS lk, tl.item, ABS(tl.quantity) AS qty, tl.quantityshiprecv AS qty_recv,
tl.expectedreceiptdate AS exp_date, tl.location
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F'
WHERE t.type = 'PurchOrd' AND tl.item IS NOT NULL
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD');
-- PO → item receipt links (nexttransactionlink is empty in this account)
SELECT DISTINCT l.previousdoc AS po_id, l.nextdoc AS rcpt_id, r.trandate AS rcpt_date, r.entity AS vendor_id
FROM nexttransactionlinelink l
JOIN transaction r ON r.id = l.nextdoc
WHERE r.type = 'ItemRcpt' AND l.linktype IN ('ShipRcpt', 'PickPack', 'OrdBill');
-- Reducer: per vendor — lead time = PO date → last receipt; on-time = last receipt ≤ due date;
-- fill = Σ qty_recv ÷ Σ qty; open past-due = unlinked POs with due < today.
SELECT tl.item, i.itemid, i.itemtype, i.class, COALESCE(i.parent, i.id) AS family,
ROUND(SUM(ABS(tl.netamount)), 2) AS revenue, SUM(ABS(tl.quantity)) AS qty,
COUNT(DISTINCT t.entity) AS n_customers
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F'
JOIN item i ON i.id = tl.item
WHERE t.type IN ('CustInvc', 'CashSale') AND tl.subsidiary <> 4
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY tl.item, i.itemid, i.itemtype, i.class, COALESCE(i.parent, i.id)
-- joined in-worker to itemvendor (preferredvendor = 'T', subsidiary = 2), itemmember (kits) and A4
-- Revenue by fulfilment location
SELECT tl.location, loc.name AS loc_name, tl.subsidiary, t.type,
ROUND(SUM(ABS(tl.netamount)), 2) AS revenue, COUNT(DISTINCT t.id) AS txns,
COUNT(DISTINCT t.entity) AS customers
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F'
LEFT JOIN location loc ON loc.id = tl.location
WHERE t.type IN ('CustInvc', 'CashSale') AND tl.subsidiary <> 4 AND tl.item IS NOT NULL
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY tl.location, loc.name, tl.subsidiary, t.type;
-- On-hand by item × location (value column is onhandvaluemli in this account)
SELECT il.item, i.itemid, il.location, il.quantityonhand, il.quantityavailable,
il.onhandvaluemli, il.quantityonorder, il.reorderpoint, il.preferredstocklevel
FROM inventoryitemlocations il
JOIN item i ON i.id = il.item
WHERE il.quantityonhand > 0
SELECT v.entityid AS vendor, tl.location, loc.name AS loc_name,
COUNT(DISTINCT t.id) AS receipts, SUM(ABS(tl.quantity)) AS qty
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.item IS NOT NULL
JOIN vendor v ON v.id = t.entity
LEFT JOIN location loc ON loc.id = tl.location
WHERE t.type = 'ItemRcpt'
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY v.entityid, tl.location, loc.name
ORDER BY v.entityid, tl.location
SELECT tl.location AS from_loc, t.transferlocation AS to_loc,
COUNT(DISTINCT t.id) AS orders, SUM(ABS(tl.quantity)) AS qty
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.item IS NOT NULL
WHERE t.type = 'TrnfrOrd'
GROUP BY tl.location, t.transferlocation
ORDER BY COUNT(DISTINCT t.id) DESC
SELECT tl.item, i.itemid, tl.location, loc.name AS loc_name,
COUNT(DISTINCT t.id) AS work_orders, SUM(ABS(tl.quantity)) AS qty,
MIN(t.trandate) AS first_wo, MAX(t.trandate) AS last_wo
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'T'
JOIN item i ON i.id = tl.item
LEFT JOIN location loc ON loc.id = tl.location
WHERE t.type = 'WorkOrd'
GROUP BY tl.item, i.itemid, tl.location, loc.name
ORDER BY COUNT(DISTINCT t.id) DESC
SELECT b.id AS bom_id, b.name AS bom_name, brc.item AS component, c.itemid AS component_name,
c.itemtype, brc.quantity AS qty_per
FROM bom b
JOIN bomrevision br ON br.billofmaterials = b.id
JOIN bomrevisioncomponent brc ON brc.bomrevision = br.id
JOIN item c ON c.id = brc.item
ORDER BY b.name, c.itemid
SELECT c.id, c.itemid, c.itemtype,
(SELECT COUNT(DISTINCT iv.vendor) FROM itemvendor iv WHERE iv.item = c.id) AS n_vendors,
(SELECT MIN(v.entityid) FROM itemvendor iv JOIN vendor v ON v.id = iv.vendor WHERE iv.item = c.id) AS a_vendor
FROM item c
WHERE c.id IN (SELECT brc.item FROM bomrevisioncomponent brc)
ORDER BY n_vendors, c.itemid
SELECT v.entityid AS vendor, t.status, COUNT(DISTINCT t.id) AS pos,
ROUND(SUM(ABS(t.foreigntotal)), 2) AS value,
SUM(CASE WHEN t.duedate < TRUNC(SYSDATE) THEN 1 ELSE 0 END) AS past_due
FROM transaction t
JOIN vendor v ON v.id = t.entity
WHERE t.type = 'PurchOrd' AND t.status IN ('A', 'B', 'E')
GROUP BY v.entityid, t.status
ORDER BY SUM(ABS(t.foreigntotal)) DESC
SELECT t.type, i.itemtype, COUNT(DISTINCT t.id) AS txns, COUNT(*) AS lines,
ROUND(SUM(ABS(tl.netamount)), 2) AS revenue, MIN(t.tranid) AS sample_tranid, MIN(t.memo) AS sample_memo
FROM transaction t
JOIN transactionline tl ON tl.transaction = t.id AND tl.mainline = 'F' AND tl.taxline = 'F'
JOIN item i ON i.id = tl.item
WHERE t.type IN ('CustInvc', 'CashSale') AND tl.subsidiary <> 4 AND tl.location IS NULL
AND t.trandate >= TO_DATE('2025-09-01', 'YYYY-MM-DD')
AND t.trandate < TO_DATE('2026-09-01', 'YYYY-MM-DD')
GROUP BY t.type, i.itemtype
-- → 27 invoices, $681,677, memo "TEST — Copper Software" (Service items): excluded
| Figure | Value | Derivation |
|---|---|---|
| Direct-material spend | $1,506,176 | A2 — sum of VendBill totals for the 16 vendors with item-vendor records or PO lines |
| Bay Area share of spend | 75.3% | Generation N + Bedline + Broyhill + Hestra + Flexsteel = $1,134,859 |
| Product revenue | $1,155,877 | A7 total $1,837,554 − A14 test invoices $681,677 |
| Single-source revenue | $689,188 (59.6%) | A6 — 53 items with exactly one vendor across A3 and A4 |
| Revenue via LA DC | $623,882 (54.0%) | A7, location 5 |
| Inventory in California | $661,247 (59.2%) | A7 — locations 1 and 5 of $1,116,806 total |
| POs analysed / linked to receipts | 378 / 373 | A5 |
| Customer concentration | top 10 = 58.2% | A7 — 101 customers; top 1 = 8.3%, top 5 = 34.4%, top 20 = 84.8% |
Claims that were tested against the account after the initial analysis, and what changed.
| Initial claim | Verification (query A12) | Disposition |
|---|---|---|
| "Seven BOM components (SPK001, TYR001, ELC001, FRM100, HDW001/002, BHB001) have no vendor at all." | All 24 purchased components have exactly one vendor: Johnson Supply 14, Crown Equipment 7, Core4Solutions 3. The initial reading came from a truncated result set. | Corrected — exposure is 100% single-sourced, not unsourced |
| "FRM001 is supplied by Johnson Supply." | FRM001 is Crown Equipment; RIM001, NUT001, TYR001, SPK001 are Johnson Supply. | Corrected |
| "$683K of revenue has no fulfilment location." | 27 service invoices memo'd "TEST — Copper Software" plus one $1K item line. Not product flow. | Excluded from product revenue |
| Lead time is zero for nearly all vendors. | 373 of 378 received POs share PO and receipt dates; only Johnson Supply (2 days) and Core4 (1 day) differ. One Bedline receipt precedes its PO by 31 days. | Confirmed — treated as a data gap, not performance |