Tracking grocery inflation through real weekly price collection.
BC-Basket is a student-built grocery inflation tracker focused on identifying price trends over time through consistent weekly observations, structured data collection, monthly averages, and a website that makes the results easier to explore.
Price Collection
Weekly grocery prices are collected from selected stores using consistent item definitions and substitution rules.
Google Sheets
Collected prices are organized into shared sheets, reviewed, averaged, and documented for consistency.
Supabase/PostgreSQL Database
Structured records are stored in Supabase using PostgreSQL so the data can scale beyond static documents and support future queries.
Website Display
The website presents the project, explains the methodology, and serves as the public-facing layer for trend exploration.
Detailed Methodology
Data Collection
Prices are collected once per week from selected grocery stores. The goal is to record prices as they appear in-store so the data reflects what consumers actually see on the shelf.
For each item, we aim to keep product selection consistent by matching the same brand, size, and type across all stores whenever possible. If an exact match is not available, the closest equivalent product is selected and documented.
Loyalty-card-only prices are not included in the official data because they are not available to all customers. However, temporary sale prices may be recorded separately for context.
Data Consistency
To ensure fair comparisons between stores, all prices are recorded as unit prices when necessary, for example price per ounce or per item. This allows items of slightly different sizes to still be compared accurately.
Any substitutions or inconsistencies are noted to maintain transparency in the dataset.
The final tracker table is produced from a reverse-pivot-style spreadsheet process: raw store-level prices are organized by item, averaged across stores, and displayed as one row per item with month columns across the page.
Average Calculation
Weekly prices are recorded for each item, and a monthly average is calculated using those values.
The monthly average is computed by adding all weekly prices for an item and dividing by the number of weeks recorded.
If a price is missing for a given week, only the available weeks are used in the calculation.
Output and Continuation
The main output of this project is an average price per item across the selected stores. These averages are used to compare grocery price trends over time. Weeks 1โ2 were partially recorded because one store had not been added yet. Weeks 3โ14 contain the complete five-store dataset, and missing values are shown transparently rather than estimated.
This project is designed to be continued by future groups. The standardized data collection process allows new data to be added consistently, making it possible to track long-term price trends.
Inflation Tracker (Spreadsheet)
If the embed is blank on your network or browser, use the button above to open the sheet directly.
Credits
Contributors
Gabriel Krishtul (Project Manager, Database Architect):
gabrielkrishtul1@gmail.com
Andrew Castillo-Fajardo (Backend Developer):
ANDREW.CASTILLOFAJARDO35@bcmail.cuny.edu
Yuan Ruan (Frontend Developer):
yuan.ruan65@bcmail.cuny.edu
Nicholas Cai (Data Collection, QA):
nicholascai123@gmail.com
Mohamed Massoud (Data Collection, QA):
mohamedadam.massoud07@bcmail.cuny.edu
Sources
Aldi
Fresh Direct
Key Food
Stop & Shop
Trader Joe's
Tools / Technologies
Frontend: HTML, CSS
Backend/Database: Supabase, PostgreSQL
Tools: Supabase, GitHub, GitHub Pages, Google Sheets
Optional Tools: draw.io (for diagrams)
Project Repository
Future groups can find all files, documentation, source code, and project information in our GitHub repository: github.com/bc-cisc4900/inflation-tracker