Automotive Supply-Chain Risk
Moetz et al. (2020) production-network instance: multi-hop BOM dependencies, supplier lanes, PageRank chokepoints, and Louvain product modules — curated subgraphs only; no live database at runtime.
Source: 28,049 products · 87,059 REQUIRES · 12 facilities · 11 SHIPS_TO · offline precompute from workbook
28049
Products
87059
BOM edges (REQUIRES)
12
Facilities
11
Supplier lanes (SHIPS_TO)
28000
Demand lines
zp8 / zp7
Top OEM chokepoint
Nodes by label
| Facility | 12 |
| Product | 28,049 |
| ProductGroup | 7 |
| Period | 14 |
| DemandFact | 28,000 |
| Customer | 1 |
Relationships by type
| REQUIRES | 87,059 |
| SHIPS_TO | 11 |
| BELONGS_TO | 28,049 |
| PRODUCES | 44 |
| HAS_DEMAND | 28,000 |
Graph model
Facilities ship components along SHIPS_TO lanes; products form a deep BOM via REQUIRES; demand facts wire customers to OEM nodes.
Exploratory analysis
Structural EDA from the notebook: entity layers, BOM width, lanes, capacity, and component spread.
Entity layers
Major node layers in the loaded automotive network.
MATCH (n) … RETURN layer, count(n)| layer | cnt |
|---|---|
| Facility | 12 |
| Product | 28049 |
| ProductGroup | 7 |
| Period | 14 |
| DemandFact | 28000 |
| Customer | 1 |
Relationship families
BOM-heavy graph with a compact facility lane network.
MATCH ()-[r]->() RETURN type(r), count(r) ORDER BY count DESC| relationshipType | cnt |
|---|---|
| REQUIRES | 87059 |
| SHIPS_TO | 11 |
| BELONGS_TO | 28049 |
| PRODUCES | 44 |
| HAS_DEMAND | 28000 |
BOM width by product group
Average and max direct REQUIRES children per ProductGroup.
MATCH (pg:ProductGroup)<-[:BELONGS_TO]-(p:Product) …| groupName | nProducts | avgRequiresChildren | maxRequiresChildren |
|---|---|---|---|
| car | 28000 | 3.11 | 4 |
| engine | 29 | 1 | 1 |
| gear | 8 | 1 | 1 |
| seat | 4 | 2 | 2 |
| seat_componment | 4 | 1 | 1 |
| battery_componment | 3 | 1 | 1 |
| battery | 1 | 4 | 4 |
Top products by tier-1 fan-out
Car SKUs with the widest direct BOM (4 components each in this extract).
MATCH (p:Product) … ORDER BY nDirectComponents DESC LIMIT 5| productId | groupName | nDirectComponents |
|---|---|---|
| 64002 | car | 4 |
| 64099 | car | 4 |
| 64184 | car | 4 |
| 64185 | car | 4 |
| 64354 | car | 4 |
Finished-car BOM by child group
Tier-1 component groups required across all car products.
MATCH (car:Product)-[:BELONGS_TO]->(:ProductGroup {groupName:'car'}) …| childGroup | nRequiresEdges |
|---|---|
| engine | 28000 |
| gear | 28000 |
| seat | 28000 |
| battery | 3003 |
Supplier lanes (SHIPS_TO)
Directed logistics arcs with lead time and product group.
MATCH (a:Facility)-[s:SHIPS_TO]->(b:Facility) … ORDER BY leadTime DESC| fromNode | toNode | arcKey | productGroup | leadTime |
|---|---|---|---|---|
| seat-supplier_trans | seat-supplier_prod | seat-supplier_trans|seat-supplier_prod | seat_componment | 23 |
| battery-supplier_trans | battery-supplier_prod | battery-supplier_trans|battery-supplier_prod | battery_componment | 20 |
| gear-supplier_inv | zp7 | gear-supplier_inv|zp7 | gear | 2 |
| gear-supplier_prod | gear-supplier_inv | gear-supplier_prod|gear-supplier_inv | gear | 2 |
| battery-supplier_inv | zp7 | battery-supplier_inv|zp7 | battery | 1 |
| battery-supplier_prod | battery-supplier_inv | battery-supplier_prod|battery-supplier_inv | battery | 1 |
| engine-supplier_inv | zp7 | engine-supplier_inv|zp7 | engine | 1 |
| engine-supplier_prod | engine-supplier_inv | engine-supplier_prod|engine-supplier_inv | engine | 1 |
| seat-supplier_inv | zp7 | seat-supplier_inv|zp7 | seat | 0 |
| seat-supplier_prod | seat-supplier_inv | seat-supplier_prod|seat-supplier_inv | seat | 0 |
Tightest lane capacity (period 61)
Lanes with the lowest positive capacity at the start of the demand horizon.
MATCH … WHERE c.periodId = 61 … ORDER BY capacity ASC| arcKey | fromNode | toNode | leadTime | shipsProductGroup | capacity |
|---|---|---|---|---|---|
| battery-supplier_inv|zp7 | battery-supplier_inv | zp7 | 1 | battery | 294 |
| battery-supplier_prod|battery-supplier_inv | battery-supplier_prod | battery-supplier_inv | 1 | battery | 294 |
| zp7|zp8 | zp7 | zp8 | 0 | car | 2000 |
| gear-supplier_inv|zp7 | gear-supplier_inv | zp7 | 2 | gear | 2100 |
| seat-supplier_inv|zp7 | seat-supplier_inv | zp7 | 0 | seat | 2100 |
| engine-supplier_inv|zp7 | engine-supplier_inv | zp7 | 1 | engine | 2100 |
| gear-supplier_prod|gear-supplier_inv | gear-supplier_prod | gear-supplier_inv | 2 | gear | 2100 |
| engine-supplier_prod|engine-supplier_inv | engine-supplier_prod | engine-supplier_inv | 1 | engine | 2100 |
| seat-supplier_prod|seat-supplier_inv | seat-supplier_prod | seat-supplier_inv | 0 | seat | 2100 |
Components spanning the car portfolio
Parts used by the largest share of finished car SKUs (blast-radius signal).
MATCH (car)-[:REQUIRES*1..]->(comp) … ORDER BY nCarProductsUsingComponent DESC LIMIT 10| componentId | componentGroup | nCarProductsUsingComponent | pctOfCarPortfolio | nDependencyPaths |
|---|---|---|---|---|
| Q4H | seat | 12038 | 42.99 | 12038 |
| componment_seat2 | seat_componment | 12038 | 42.99 | 12038 |
| componment_seat1 | seat_componment | 9726 | 34.74 | 9726 |
| Q2J | seat | 9726 | 34.74 | 9726 |
| G0K | gear | 8592 | 30.69 | 8592 |
| G1C | gear | 6664 | 23.8 | 6664 |
| G1D | gear | 4210 | 15.04 | 4210 |
| Q4P | seat | 3823 | 13.65 | 3823 |
| componment_seat3 | seat_componment | 3823 | 13.65 | 3823 |
| DN4 | engine | 3710 | 13.25 | 3710 |
Deeper analytics (Option 2)
Concentration risk, lane fragility, and risk-adjusted component priority — integrating BOM reach with logistics exposure.
Component concentration risk map
Components ranked by how many upstream products depend on them through the BOM.
MATCH (parent)-[:REQUIRES*1..]->(comp) … ORDER BY upstreamProductsDependingOnIt DESC LIMIT 10| componentId | componentGroup | upstreamProductsDependingOnIt | totalDependencyPaths |
|---|---|---|---|
| componment_seat2 | seat_componment | 12039 | 38552 |
| Q4H | seat | 12038 | 38550 |
| componment_seat1 | seat_componment | 9727 | 29747 |
| Q2J | seat | 9726 | 29745 |
| G0K | gear | 8592 | 25776 |
| G1C | gear | 6664 | 19992 |
| G1D | gear | 4210 | 12630 |
| componment_seat3 | seat_componment | 3824 | 11471 |
| Q4P | seat | 3823 | 11469 |
| DN4 | engine | 3710 | 11130 |
Arc structural fragility
Lanes scored by lead time, tight capacity, and destination opening inventory.
MATCH (a)-[s:SHIPS_TO]->(b) … structuralFragilityScore … LIMIT 25| arcKey | fromNode | toNode | shipsProductGroup | leadTime | minCapacity | avgCapacity | nCapacityPeriods | destOpeningInventory_t60 | structuralFragilityScore |
|---|---|---|---|---|---|---|---|---|---|
| seat-supplier_trans|seat-supplier_prod | seat-supplier_trans | seat-supplier_prod | seat_componment | 23 | 0 | 2100 | 14 | 6000 | 10.7286 |
| battery-supplier_trans|battery-supplier_prod | battery-supplier_trans | battery-supplier_prod | battery_componment | 20 | 0 | 294 | 14 | 1860 | 9.4199 |
| gear-supplier_prod|gear-supplier_inv | gear-supplier_prod | gear-supplier_inv | gear | 2 | 2100 | 2100 | 14 | 4000 | 1.0529 |
| gear-supplier_inv|zp7 | gear-supplier_inv | zp7 | gear | 2 | 2100 | 2100 | 14 | 6052 | 1.0413 |
| battery-supplier_prod|battery-supplier_inv | battery-supplier_prod | battery-supplier_inv | battery | 1 | 294 | 294 | 14 | 0 | 0.9205 |
| battery-supplier_inv|zp7 | battery-supplier_inv | zp7 | battery | 1 | 294 | 294 | 14 | 6052 | 0.7488 |
| engine-supplier_prod|engine-supplier_inv | engine-supplier_prod | engine-supplier_inv | engine | 1 | 2100 | 2100 | 14 | 6000 | 0.5915 |
| engine-supplier_inv|zp7 | engine-supplier_inv | zp7 | engine | 1 | 2100 | 2100 | 14 | 6052 | 0.5913 |
| zp7|zp8 | zp7 | zp8 | car | 0 | 2000 | 2000 | 14 | 0 | 0.3167 |
| seat-supplier_prod|seat-supplier_inv | seat-supplier_prod | seat-supplier_inv | seat | 0 | 2100 | 2100 | 14 | 0 | 0.3129 |
Supply risk-adjusted component priority
Integrates BOM reach, single-source exposure, and lane fragility.
MATCH (parent)-[:REQUIRES*1..]->(comp) … riskAdjustedPriorityScore … LIMIT 10| componentId | componentGroup | upstreamProductsDependingOnIt | supplierCount | maxSupplierArcFragility | riskAdjustedPriorityScore |
|---|---|---|---|---|---|
| componment_seat2 | seat_componment | 12039 | 1 | 14.2 | 4.6743 |
| componment_seat1 | seat_componment | 9727 | 1 | 14.2 | 4.6234 |
| componment_seat3 | seat_componment | 3824 | 1 | 14.2 | 4.4004 |
| componment_seat4 | seat_componment | 2414 | 1 | 14.2 | 4.2906 |
| componment_battery1 | battery_componment | 3004 | 1 | 12.4 | 4.0728 |
| componment_battery2 | battery_componment | 3004 | 1 | 12.4 | 4.0728 |
| componment_battery3 | battery_componment | 3004 | 1 | 12.4 | 4.0728 |
| G0K | gear | 8592 | 1 | 1.329 | 2.6631 |
| Q4H | seat | 12038 | 0 | 0 | 2.6043 |
| G1C | gear | 6664 | 1 | 1.329 | 2.6024 |
PageRank chokepoints
GDS PageRank on the projected automotive network (33,084 nodes). OEM sites zp7 and zp8 dominate facility influence; product-group hubs (car, engine, gear) lead node scores.
Top facilities
| Facility | Role | Score |
|---|---|---|
| zp7 | OEM | 0.000067 |
| zp8 | OEM | 0.000067 |
| battery-supplier_inv | SupplierSite, Inventory | 0.000022 |
| seat-supplier_inv | SupplierSite, Inventory | 0.000021 |
| battery-supplier_prod | SupplierSite, Production | 0.000013 |
| seat-supplier_prod | SupplierSite, Production | 0.000012 |
| gear-supplier_inv | SupplierSite, Inventory | 0.000012 |
| engine-supplier_inv | SupplierSite, Inventory | 0.000011 |
| seat-supplier_trans | SupplierSite | 0.000011 |
| battery-supplier_trans | SupplierSite | 0.000011 |
| gear-supplier_prod | SupplierSite, Production | 0.000011 |
| engine-supplier_prod | SupplierSite, Production | 0.000011 |
Top nodes (all types)
| Node | Type | Score |
|---|---|---|
| car | ProductGroup | 0.0667 |
| engine | ProductGroup | 0.0500 |
| gear | ProductGroup | 0.0498 |
| Q4H | Product | 0.0393 |
| G0K | Product | 0.0365 |
| Q2J | Product | 0.0328 |
| G1C | Product | 0.0283 |
| seat | ProductGroup | 0.0268 |
| componment_seat2 | Product | 0.0194 |
| seat_componment | ProductGroup | 0.0193 |
| G1D | Product | 0.0179 |
| componment_seat1 | Product | 0.0162 |
BOM modules (Louvain)
Louvain communities on the undirected Product–REQUIRES graph (weighted by BOM quantity) surface large, car-dominant dependency modules — module-level risk zones instead of one undifferentiated BOM.
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Largest car-dominant BOM module (100% car SKUs).
Graph explorer
The full BOM is not shipped. Explore the complete facility lane map (12 nodes) or a capped BOM neighborhood around a high-signal product.