Inspiration

Supply chains can fail quietly before people notice the impact. This impact can be severe in war scenarios, where a small supply chain failure can result in many lives being lost. Inspired to do our bit in helping solve this problem, we built SupplyShield to help teams catch shortages, suspicious shipments, and delayed deliveries before they turn into mission failures.

What it does

SupplyShield is a secure supply-chain command center. It monitors inventory levels, detects suspicious shipments, ranks emergency delivery requests, and visualizes risky routes on a map.

The app helps answer three important questions:

Which supplies are closest to unsafe levels? Which shipments look suspicious or delayed? Which delivery should be handled first?

It also includes a cyber manipulation simulator that shows how changing a shipment record can increase operational risk.

How we built it

We built SupplyShield with Python and Streamlit for the dashboard. We used Pandas to load and analyze CSV data for inventory, shipments, and delivery requests. We used a priority queue with heapq to rank emergency deliveries by urgency, mission importance, people affected, and delayed incoming shipments.

For shipment risk, we created a scoring system based on delays, unusual quantities, route changes, and destination mismatches. For inventory risk, we calculated how many days remain before each location falls below its minimum safe stock.

The core inventory formula is:

[ \text{days until unsafe} = \frac{\text{current stock} - \text{minimum safe stock}}{\text{daily usage}} ]

We also added secure login, an approved email list, CSV upload validation, file size limits, downloadable Excel reports, and a route intelligence map.

Challenges we ran into

One challenge was turning raw CSV files into useful decisions. The data had to be validated before it could be trusted. We added checks for missing columns, blank values, duplicate records, invalid numbers, unsafe file sizes, and unknown location or item pairs.

Another challenge was making the risk scores easy to understand. A score alone is not enough, so we added explanations for each flagged shipment. This helps users see why a record was marked as risky.

We also had to make the app safer for deployment. At first, anyone with the link could access the dashboard. We fixed this by adding password protection and an email allowlist before any data loads.

Accomplishments that we're proud of

We are proud that SupplyShield feels like a real command center, not just a static dashboard. It does more than display data. It detects problems, explains them, ranks actions, maps routes, and creates an alert report that teams can download.

We are also proud of the security improvements. The app now protects access, validates uploaded files, and avoids loading sensitive dashboard data before login.

Most importantly, the project connects technical work to a real-world problem: helping teams make faster decisions when supply disruptions matter.

What we learned

We learned how important data quality is in decision-making systems. Even a small issue, like a missing value or a zero in the wrong column, can break the logic or create a misleading recommendation.

We also learned how to build a full workflow around a problem. SupplyShield starts with raw data, validates it, scores the risks, explains the results, and recommends the next action.

Finally, we learned that security cannot be added at the very end. If a dashboard shows operational data, access control has to be part of the design.

What's next for SupplyShield

Next, we want to make SupplyShield more real-time. Instead of relying only on CSV uploads, we would connect it to live inventory and shipment APIs. We also want to add role-based access so different users can have different permissions.

Future versions could include automatic alerts, stronger anomaly detection, predictive supplier reliability, and historical trend forecasting. Our goal is to make SupplyShield a tool that helps teams move from reacting to problems to preventing them.

Built With

Share this project:

Updates

Submission history