We are a subscription-based snack box company that sends monthly boxes with snacks from different countries. In this project scenario, the company is experiencing growth and needs to ensure inventory levels are sufficient to meet demand for upcoming months.
The company has three subscription tiers:
- SUBSMALL - Small box
- SUBMEDIUM - Medium box
- SUBLARGE - Large box
Each month features a default box from a specific country:
- June 2025: Taiwan (TWN25)
- July 2025: Czech Republic (CZE25)
- August 2025: Indonesia (IDN25)
- September 2025: Mexico (MEX25)
Customers can either receive the default box for the month or select custom boxes from other series (KORAA, ITAA, GRCAA) when they start their subscription.
Your task is to build a tool that analyzes subscription and inventory data to identify potential shortages for the upcoming months. The tool should:
- Ingest subscription and inventory data from provided CSV files
- Calculate expected demand for each box type and size for the next 3-4 months
- Compare demand against available and incoming inventory
- Display shortages by box type, size, and month
- Provide a visual representation of the shortages
The repository contains the following CSV files:
-
subscriptions.csv - Contains 1,000 subscription records with fields:
subscription_id
: Unique identifier (integer)customer_id
: Customer identifier (integer)subscription_type
: SUBSMALL, SUBMEDIUM, or SUBLARGEstart_date
: When the subscription started (YYYY-MM-DD)status
: Subscription status (all "active" for this exercise)selected_boxes
: JSON array of box selections in order [June, July, August, September]
-
current_inventory.csv - Contains current inventory levels:
box_type
: Box identifier (TWN25, CZE25, etc.)size
: SMALL, MEDIUM, or LARGEquantity
: Current quantity in stock
-
incoming_inventory.csv - Contains expected inventory arrivals:
box_type
: Box identifiersize
: SMALL, MEDIUM, or LARGEquantity
: Quantity arrivingarrival_date
: Date when inventory will arrive (YYYY-MM-DD)
- Subscription renewals occur on the 1st of each month
- Churn rates vary by subscription type:
- SUBSMALL: 8% monthly
- SUBMEDIUM: 10% monthly
- SUBLARGE: 12% monthly
- The company adds approximately 100 new subscriptions per month
- About 50% of subscribers receive the default box each month
- For inventory planning, consider June 2025 as the current month
-
Create a web application with:
- Backend: Python (Flask or FastAPI)
- Frontend: JavaScript/React
- Data processing: Python (pandas or similar libraries)
-
Your solution should include:
- Data ingestion and processing
- Business logic to calculate expected demand
- A frontend dashboard displaying the shortages
-
The code should be well-organized and include:
- Clear documentation
- Appropriate error handling
- Reasonable test coverage
- Source code for the full-stack application
- Documentation explaining your approach and any assumptions
- Instructions for running the application locally
Your solution will be evaluated based on:
- Accuracy: Correctly identifying shortages based on the data
- Assumptions: Ability to describe any assumptions you made in your calculations
- Technical implementation: Code quality, organization, and performance
- Full-stack skills: Effectiveness of both backend and frontend components
- Data handling: Appropriate processing and analysis of the CSV data
- Visualization: Clear and informative presentation of shortage information
- Business understanding: Incorporating the business rules correctly
- Clone this repository
- Set up your development environment
- Explore the data files to understand their structure
- Develop your solution
- Document your approach and any assumptions
Good luck!