SD · Sagar Devaraju, home

Case study by Sagar Devaraju · 2026

GeoSupply Copilot

Policy-aware geopolitical supply-chain control tower with a retrieval-grounded copilot guarded by validation and a deterministic fallback.

1 / 3Control-tower overview with executive briefs on China trade-policy and Middle East logistics, plus an open-orders KPI strip
Control-tower overview with executive briefs on China trade-policy and Middle East logistics, plus an open-orders KPI strip

1 / 3Control-tower overview with executive briefs on China trade-policy and Middle East logistics, plus an open-orders KPI strip

What it is
Northwestern capstone, publication in progress
Year
2026
Stack
Python / FlaskSQLitescikit-learn (TF-IDF)OpenAI-compatible LLMRSS / feedparserReproducible JSON scenarios

Context

In my Supply Chain Management course at Northwestern, the same pattern kept coming up in case studies and in conversations with practitioners. Teams dealt with supplier disruptions after they happened, even when the warning signs were already on record. Geopolitical news, open orders, supplier records and delivery history sat in separate tools, and the connection between them lived in an analyst's memo.

My aim was one screen for planners that pulls those signals together and explains every number on it, including which numbers are measured and which are assumptions.

Action

  • A score a planner can read: Each open order gets a risk score from 0 to 1, built from eight factors that include geopolitics, transit delays, supplier reliability, inventory buffer and lead-time variability. The weights are policy settings rather than learned coefficients, so an analyst can adjust them in a meeting without retraining anything.
  • A label on every number: Each metric is marked as observed, derived, policy or scenario. A target such as a service level can never pass for a measured fact.
  • Risk that follows the supply chain: When a supplier sources from another country, half of that country's risk carries over to the supplier. A portfolio that looks diversified on paper cannot hide a shared upstream input.
  • The LLM as a helper, with a fallback: The assistant answers from data it retrieves from the order book. I check every supplier and shipment it cites against the database, and a rule engine answers when the model is down or fails that check. The dashboard runs end to end with no model at all.
  • Scenarios anyone can rerun: Three scenarios, anchored in U.S. Census M3 and FRED retail sales data, ship with the project along with exportable evaluation snapshots.

Result

  • Every expected high-risk order flagged: In all three scenarios, the system ranked both of the orders the scenario expected to be most exposed at the top (2 of 2 each time).
  • Breaches and stockouts caught only where they existed: The high-pressure scenario triggered both expected service breaches and its one expected stockout. The buffered and softening scenarios, which expected none, triggered none.
  • Risk that moves with conditions: The most exposed order scored 0.627 under trade pressure, 0.580 with stronger inventory buffers and 0.543 as demand softened.
  • Recommendations with a price on them: Each alternate supplier shows the change in landed cost per unit, including duty and freight. Suppliers in blocked countries are removed before ranking.
  • Written up as a systems paper, with publication in progress.

Learnings

Planners override scores they cannot explain, which is why I chose eight visible factors with adjustable weights over a learned model. Putting a label on every number mattered just as much. Once an assumption is marked as policy, nobody mistakes it for a measurement.

Keeping the LLM optional changed how I tested. I could switch it off and check that the analysis still held up on its own, which kept the model from hiding weak logic underneath it.

I also had to be honest about the data. The order book is synthetic and the scenario labels are curated, so I evaluated GeoSupply as a working system and did not claim predictive accuracy. The test that matters next is running the score against a planning team's own warehouse or transport data.

And I learned how to pull in live news from UN, BBC and Reuters feeds and weight each kind of event by how much it should move the risk score.

← Back to selected work

Let's talk about this work