Retail [Chips] Strategy & Analytics

From Raw Data to a Real Client Recommendation - Here's Everything I Did
If you've been looking for a virtual internship that actually teaches you how analysts work in the real world - not just theory - the Quantium Data Analytics Virtual Experience on Forage is one of the best ones out there.
I recently completed all three tasks and want to walk you through exactly what I did, what I learned, and what the outputs looked like. Whether you're about to start it yourself or just curious about what data analytics work actually looks like day-to-day, this post covers it all.
What Is the Quantium Virtual Internship?
Quantium is one of Australia's leading data science and AI companies. Their virtual internship on Forage simulates working as a junior analyst on a real retail project - specifically, analysing chip purchasing behaviour for a supermarket client.
There are three tasks:
Task 1 - Customer Analytics (clean the data, find insights)
Task 2 - Experimentation & Uplift Testing (did the trial work?)
Task 3 - Present your findings to the client
It's open-ended, which means there's no single right answer. That's actually what makes it valuable - you have to make analytical decisions and justify them, just like a real job.
The Dataset
I was given two files:
Transaction data - every chip purchase made across 271 stores over a full year (July 2018 to June 2019)
Customer behaviour data - loyalty card holders mapped to their lifestage (Young Families, Retirees, etc.) and premium tier (Budget, Mainstream, Premium)
After cleaning and merging, I ended up with 246,739 transactions worth $1.8 million in total revenue.
Task 1 -- Customer Analytics
The Cleaning Part (Unglamorous but Critical)
Before I could find a single insight, I had to fix the data. Here's what I found:
Problem 1: The date column was broken. The transaction dates were stored as Excel serial numbers (like 43390) instead of actual dates. I fixed it like this:
df['DATE'] = pd.to_datetime(df['DATE'], unit='D', origin='1899-12-30')
Problem 2: Non-chip products were in the dataset. Products like salsa dip were mixed in. I filtered them out by scanning product names - removing anything that contained "salsa". That cut 18,094 rows.
Problem 3: A commercial buyer was inflating the data. One loyalty card (226000) had purchased 200 units of chips twice. That's clearly not a regular customer - it's a commercial buyer. I removed those two transactions to avoid skewing the averages.
Problem 4: One duplicate row - removed.
The Analysis Part (Where It Gets Interesting)
Once the data was clean, I extracted two new features from the product names:
df['PKT_SIZE'] = df['PROD_NAME'].str.extract(r'(\d+)').astype(int)
df['BRAND'] = df['PROD_NAME'].str.split(' ').str[0]
Then I merged the transaction data with the customer behaviour data so every transaction now had a lifestage and premium tier attached to it.
What I Found
Here are the headline numbers:
Sales & Volume
December was the peak month with 21,225 transactions - a pre-Christmas surge that peaks on December 24th at 865 transactions in a single day
February was the trough at 19,005 - expected, it's the shortest month
175g packs dominate - 66,389 transactions, nearly 27% of all chip purchases
Brands
Kettle leads by a mile - $390,240 in revenue, almost double Smiths in second place at $202,903
Top product overall: Dorito Corn Chip Supreme 380g at $39,052
Customer Segments This is where it got really interesting. I grouped customers by their lifestage and premium tier and calculated average units purchased per customer:
Mainstream Older Families buy the most chips per visit - 9.26 units on average
Mainstream Young Singles/Couples generate the most total revenue - $147,582 - not because they buy the most per visit, but because there are so many of them
Price Behaviour I calculated average price per unit for each tier:
Tier | Avg Price/Unit |
Budget | $3.80 |
Mainstream | $3.87 |
Premium | $3.81 |
Interesting - Premium doesn't pay the most! Mainstream actually pays more per unit than Premium. I ran independent t-tests to confirm all three differences are statistically significant (p < 0.05 for all pairs).
Task 2 - Experimentation & Uplift Testing
The Question
The client wanted to know: did the new store layout trial actually increase chip sales?
Trial stores were 77, 86, and 88. The trial ran from February to April 2019.
Step 1: Find Control Stores
To know if the trial worked, I needed to compare each trial store against a store that was as similar as possible beforethe trial started. I wrote a function that calculated the Pearson correlation between each trial store and every other store in the dataset, using monthly total sales and monthly unique customer counts from the pre-trial period.
The store with the highest correlation score became the control store.
Results:
Trial Store | Control Store | Correlation |
Store 77 | Store 233 | 0.970 |
Store 86 | Store 155 | 0.849 |
Store 88 | Store 14 | 0.723 |
Step 2: Assess the Trial
For each trial-control pair, I:
Scaled the control store's sales to match the trial store's pre-trial baseline
Calculated the percentage difference month by month
Compared trial period t-values against the 95th percentile of the t-distribution (7 degrees of freedom - based on 8 pre-trial months)
Results
Store 77 - ✅ Significant uplift Sales exceeded the control store's 95% confidence interval in 2 of 3 trial months. The trial worked.
Store 88 - ✅ Significant uplift Same result - clear, statistically confirmed increase in sales during the trial period.
Store 86 - ⚠️ Mixed outcome This one was the most interesting. Customer count increased significantly across all three trial months - but sales did not increase significantly.
More people came in, but they didn't spend more. My hypothesis: there may have been promotional pricing active during the trial at Store 86, which attracted more customers but compressed the basket value. I flagged this for the client to investigate before making a rollout decision.
Task 3 - The Client Presentation
The Framework: Pyramid Principles
Quantium specifically asks you to use the Pyramid Principles framework when presenting to clients. The idea is simple: lead with the answer, then support it with data - don't make the client sit through all your analysis before getting to the point.
So instead of:
"We looked at 246,739 transactions... we cleaned the data... we found December was the peak month... we then ran t-tests..."
You open with:
"Stores 77 and 88 showed statistically significant sales uplift. We recommend rolling out the new layout to both. Store 86 needs further investigation."
Then you back it up.
The Deliverable
I filled in the official Quantium brand template in PowerPoint - black sidebar, Quantium logo, Confidential footer, the works - and embedded all my actual charts from the analysis directly into the slides. No recreating charts from scratch.
The final deck covered:
Executive summary (Task 1 + Task 2 findings on one slide)
Monthly transaction trend
Customer segment analysis
Control store matching charts (one per store)
Trial performance assessment
Recommendations
The Cover Email
Along with the presentation, I wrote a short cover email to Julia (the Category Manager) summarising the three headline findings and pointing her to the recommendations slide. Short, professional, no jargon.
What I Built Beyond the Task Requirements
I went a bit further than just the three tasks:
Interactive HTML Dashboard I built a three-page interactive analytics dashboard in HTML and JavaScript using Chart.js - no Power BI required, opens in any browser. It covers Category Overview, Customer Segments, and Products & Stores with real data from the analysis.
Power BI Guide A step-by-step guide for building the same three dashboards in Power BI, including all DAX measures written out and ready to paste.
README.md A full project README for GitHub with dataset documentation, code explanations, key findings, all DAX measures, and file structure.
What I Learned
Technically:
How to handle real-world data quality issues (serial dates, outliers, duplicates, non-relevant rows)
How to use Pearson correlation for store matching in A/B test design
How to run and interpret independent t-tests for business questions
How to extract features from text columns (regex for pack size, string split for brand)
Commercially:
How to frame analytical findings for a non-technical client
Why the Pyramid Principles framework matters - clients need the answer first
That a statistically significant result is only the start - you still need to explain why it happened (see: Store 86)
How segment size and spend per customer tell very different stories
Final Thought
The thing that surprised me most about this internship was how much the communication side mattered. Getting the analysis right is only half the job. Translating it into something a Category Manager can act on - that's the other half. And honestly, that's the part most data courses don't teach you.
If you're working through this internship right now and have questions, drop them in the comments. Happy to help.





Comments