You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DailyGrind is a boutique coffee shop based in Cape Town, South Africa, recognised for its artisanal coffee offerings and personalised in-store experience. Serving a broad mix of professionals, students, and everyday coffee consumers, the business focuses on consistency, quality, and convenience through high-frequency, low-basket transactions.
Founded in 2024, DailyGrind has steadily expanded its operations while facing increasing competition from comparable cafés and changing consumer demand patterns. As transaction volume has grown, the business has placed greater emphasis on using point-of-sale (POS) data to support operational efficiency, product optimisation, and evidence-based decision-making.
The available dataset covers March 2024 to March 2025 and consists of 3,636 completed transactions, generating over R115,000 in sales revenue. The data captures transaction-level information across sales values, product types, and multiple time granularities (daily, hourly, and monthly). There is no customer-level identification, and each transaction represents a single completed customer order.
Reporting to the Head of Operations, this analysis evaluates sales trends, temporal performance, and product behavior to uncover actionable insights related to peak trading periods, product mix dynamics, and operational alignment. The findings are intended to support staffing optimisation, menu planning, and revenue stability rather than customer-level behavioural analysis. The key insights and recommendations focus on the following areas:
Northstar Metrics
Sales performance - Sales revenue, volume of transaction placed, and average order value (AOV).
Time-based performance - Daily, weekly, and monthly trading patterns
Product performance - Revenue contribution and product mix dynamics across the menu
Executive Summary
Sales Revenue Analysis (2024 - 2025)
Revenue Growth and Peak Performance:
DailyGrind experienced sustained revenue growth from July to October 2024, with October 2024 emerging as the strongest trading month, materially exceeding the R9K average monthly revenue benchmark.
The period recorded multiple positive MoM gains, including a +R3.9K increase, indicating strong customer demand, effective product mix, and consistent transaction volume during peak café trading months.
Short-Term Slowdown & Demand Softening
January 2025 recorded the weakest performance, with a MoM decline of -R1.8K, reflecting a post-peak seasonal common in coffee retail following the festive period.
This contraction suggests lower foot traffic and reduced transaction frequency, rather than structural revenue decline.
Strong Recovery & Sales Momentum
February 2025 delivered the strongest recovery, posting the highest MoM growth (+25%) and a +R6.8K revenue increase, signaling a rapid return of customer demand.
March 2025 sustained revenue above the historical average, confirming stabilization and improved sales momentum rather than a temporary spike.
Key Takeaways & Recommendations
Investigate the causes of the steep drop and continuing decline (e.g., market changes, competition, internal factors) from November 2024 to January 2025.
Replicate Q3–Q4 trading strategies (pricing, promotions, product bundles) to maximize revenue during high-demand periods.
Capitalize on high-demand periods high-traffic months by aligning staffing levels, operating hours, and inventory planning with historically strong sales months to prevent stockouts and service bottlenecks.
early-year revenue softness through tactical pricing, limited-time menu offerings, and seasonal drink promotions to increase Transactions and AOV during slower trading months.
Use monthly Sales, Transactions, and AOV as North Star Metrics to guide decisions on product mix, pricing adjustments, and peak-hour scheduling. Monitor MoM revenue shifts to proactively respond to demand changes, enabling faster operational adjustments rather than reactive decision-making.
Dataset Structure and ERD (Entity relationship diagram)
The database structure as seen below consists of merely one table: fact_sales, with a total row count of 3636 records.
Insights Deep-Dive
Sales Trend
Sales Revenue
Mid-Year Revenue Acceleration with a Clear Peak
DailyGrind’s sales revenue shows a steady upward trajectory from early 2024, culminating in a pronounced peak around August 2024, where monthly revenue reached approximately R14K, materially above the R9K monthly average.
This period likely reflects increased foot traffic during mid-year trading months, supported by stable demand for core coffee offerings.
Late-Year Softening and Short-Term Dip
Following the August peak, revenue declined sharply toward the end of 2024, reaching a low of approximately R6K, indicating a short-term contraction in trading performance.
This dip is more indicative of reduced transaction volume rather than pricing pressure, suggesting seasonal or operational factors rather than structural demand loss.
Early 2025 Recovery Signals
Revenue rebounds strongly in early 2025, returning to levels above the historical average.
This recovery suggests resilient baseline demand and confirms that the late-2024 decline was temporary rather than indicative of sustained underperformance.
Average Order Value
Stable AOV with Limited Volatility
AOV remains relatively stable throughout the reporting period, averaging R31.91, with a narrow range between approximately R28 and .
This stability aligns with the dataset structure, where each transaction represents a single customer order, resulting in limited variability in order value.
AOV experienced a temporary dip around mid-2024, reaching a low of R27.99, before recovering and stabilising closer to the long-term average. This fluctuation likely reflects shifts in product mix (e.g. higher share of standard coffees versus premium drinks) rather than pricing changes.
Mid-Year Dip and Normalization
AOV experienced a temporary dip around mid-2024, reaching a low of R27.99, before recovering and stabilising closer to the long-term average.
This fluctuation likely reflects shifts in product mix (e.g. higher share of standard coffees versus premium drinks) rather than pricing changes.
Interpretation of AOV Trends
Given the one-transaction-per-order structure, AOV should be interpreted as an indicator of menu pricing and item selection, not increased customer spend per visit.
Changes in AOV primarily reflect the balance between premium and standard beverage purchases over time.
Transaction Volume
Transaction Volume as the Primary Revenue Driver
Transaction counts closely mirror revenue trends, confirming that changes in total sales are driven mainly by order volume rather than AOV.
The strongest transaction spike occurs around August 2024, peaking at approximately 426 transactions, well above the average of 280.
Late-Year Decline in Orders
Transaction volume declines significantly toward the end of 2024, reaching a low of approximately 196 transactions, which directly explains the observed revenue dip during the same period.
This suggests lower foot traffic or reduced visit frequency rather than changes in customer spend per order.
Rebound in Early 2025
A sharp recovery in transaction volume is observed in early 2025, driving the parallel rebound in sales revenue.
This reinforces the conclusion that DailyGrind’s performance is volume-led, with consistent pricing and stable order values.
Time Granularity Performance
Midday Trading Hours Drive Sales, While Evening Demand Softens
Hourly Sales Dynamics
Hourly sales patterns reveal a classic commuter-driven café demand curve, with revenue accelerating sharply from early morning and peaking during mid-morning to early afternoon.
Peak trading hours occur between 08:00 and 11:00, with the strongest single-hour performance reaching approximately R11K, materially above the hourly average of ~R7K.
This window likely reflects pre-work coffee runs, mid-morning breaks, and takeaway demand, making it the most operationally critical period of the day.
Post-midday hours (12:00–15:00) remain relatively stable but slightly below peak, indicating sustained demand rather than a sharp drop-off.
Evening and night trading hours show a gradual decline, with late-night hours falling well below the daily average. This suggests reduced foot traffic and more discretionary purchases rather than routine consumption.
Operational implication: Revenue is highly sensitive to execution during the morning rush. Small disruptions (understaffing, slower service, stockouts) during this window likely have an outsized impact on daily sales performance.
Daily vs Weekly Sales Behaviour
When viewed across the week, sales patterns demonstrate predictable weekday stability with mild volatility, rather than extreme spikes or collapses.
Morning Performance
Morning sales average ~R5.33K per day, with noticeable strength early in the week.
Demand softens slightly toward mid-week before recovering on Fridays, suggesting routine weekday commuting behaviour.
Expresso has a relatively low price point (R21.00). Its stable but do not significantly impact AOV.
Weekend mornings underperform relative to weekdays, indicating fewer early starts and a shift in customer routines.
Afternoon Performance
Afternoon sales are the most stable time segment, averaging ~R5.56K.
Minor mid-week dips are followed by a gradual build-up toward the end of the week.
This consistency suggests afternoon traffic is driven by habitual repeat visits, such as lunch breaks or study/work sessions.
Weekend mornings underperform relative to weekdays, indicating fewer early starts and a shift in customer routines.
Afternoon Performance
Night sales average ~R5.57K, but exhibit higher volatility than other periods.
Mid-week nights outperform weekends, likely reflecting weekday social or post-work consumption.
Weekend nights show a pronounced decline, implying reduced relevance of late trading hours for DailyGrind’s core customer base.
Operational implication: Afternoon demand provides revenue stability, while night trading carries higher variability and risk. Staffing and operating hours should reflect this asymmetry.
Time of Day Contribution to Revenue and Transactions
Despite similar total revenue contributions across time-of-day segments, transaction behavior reveals important nuances.
Afternoon generates the highest total sales (R39K) and the highest transaction count (1,228 transactions), confirming it as the volume anchor of the business.
Morning sales (R37K) occur across slightly fewer transactions (1,219), implying marginally higher per-transaction value driven by premium coffee choices or add-ons.
Night sales (R39K) match afternoon revenue but are supported by the lowest transaction count (1,183), indicating higher variability and potentially longer dwell times or bundled purchases.
Operational implication:
Afternoon periods are critical for throughput and service efficiency.
Morning periods are critical for speed and consistency.
Night periods should be evaluated for cost-effectiveness rather than pure revenue contribution.
Strategic Interpretation of Time-Based Demand
DailyGrind’s performance is front-loaded, with a disproportionate share of value created before midday.
Weekly demand patterns are structurally predictable, making them well-suited for rule-based scheduling and inventory planning.
Revenue softness during late hours suggests diminishing returns from extended operating hours without targeted interventions.
Latte consistently outperformed all other menu items, generating approximately R27,000 in total sales and maintaining strong month-over-month performance.
Americano with Milk (R25,000) and Cappuccino (R18,000) followed as the second and third highest revenue-generating products, indicating stable demand for core espresso-based drinks.
In contrast, Espresso recorded significantly lower total sales (R3,000) despite its typical popularity in café environments.
Cortado also underperformed relative to the rest of the menu, with total sales of R8,000, suggesting limited customer uptake or weaker positioning.
AOV Over Time
Average Order Value remained largely stable throughout the reporting period, reflecting the structural constraint that each transaction represents a single order.
AOV measured R31.87 in early 2024, declining slightly to R31.40, with a peak of R34.30 in April and a low of R28.00 in August.
Higher-priced beverages such as Hot Chocolate (R36.07), Cappuccino (R36.00), and Cocoa (R35.71) contributed disproportionately to AOV. Espresso, priced at R21.00, remained stable but had minimal influence on overall AOV trends.
The gradual downward trend in AOV aligns more closely with declining product sales volume than with pricing changes.
Transaction Volume Over Time
Transaction volumes were highly volatile over the period and closely tracked sales revenue, indicating that order volume was the primary driver of overall revenue performance, rather than price effects alone.
Top-performing products by transaction volume were Americano with Milk (825), Latte (782), and Americano (578), making them the core contributors to both volume and revenue across daily, weekly, and monthly views.
Underperforming products were Espresso (134) and Cocoa (243), which contributed marginally to total transactions and revenue, suggesting limited demand relative to the rest of the menu.
The consistency of top products across time granularities (daily, weekly, monthly) indicates a stable preference structure, while overall volatility reflects fluctuations in customer traffic rather than shifts in product mix.
Recommendations
Sales Revenue
Prioritize operational readiness (staffing, stock, prep capacity) during historically strong trading months and peak hours.
Actively monitor month-over-month revenue changes and adjust operating intensity (hours, staffing, stock depth) rather than reacting to daily fluctuations.
Focus revenue growth efforts on capturing existing demand efficiently, particularly during peak trading hours, before introducing additional promotions.
AOV
Maintain AOV stability by actively managing product mix, ensuring higher-priced drinks are consistently visible and available.
Introduce or rotate premium beverages during slower periods to support revenue without increasing order complexity.
Use sustained AOV changes as a trigger to review pricing or menu composition, not customer behavior.
Transaction Volume
Increase transaction count by targeting low-traffic time windows with time-based initiatives that encourage incremental visits.
Protect transaction throughput during peak hours by eliminating service bottlenecks, ensuring adequate staffing and prep capacity.
Track transaction trends by hour and time of day to identify emerging demand shifts and adjust operations accordingly.
Clarifying Questions, Assumptions, and Caveats
Questions for Stakeholders Prior to Project Advancement
Sales Value per Transaction (`sales`)
Does this value represent gross revenue per completed transaction?
Are refunds, voids, or discounts ever applied outside this dataset?
Should future reporting reflect net sales instead of gross sales?
Does each sales value correspond to one complete order placed by a single customer?
Product Identification and Pricing (`coffee_name`)
Are product names consistent and stable across the full reporting period?
Were there any price changes, recipe changes, or menu removals/additions during the timeframe?
Does the same product name always correspond to the same price point?
Transaction Timing and Operating Hours (`datetimes`, `dates`, `hour_of_day`, `time_of_day`)
Does each timestamp correspond to one individual customer order event, rather than batch or end-of-day posting?
Do timestamps reflect the actual moment of customer purchase?
Do timestamps reflect the actual moment of customer purchase?
Were there any periods of offline POS usage or delayed transaction syncing?
Are store operating hours consistent across all days represented?
Assumptions and Caveats
Business Context DailyGrind is a fictional boutique coffee shop used for analytical and portfolio demonstration purposes.
The dataset reflects realistic café-style transactional behavior.
Data Assumptions
Category
Assumption
Business Context
DailyGrind is a fictional boutique cafe; the dataset reflects realistic cafe transactions.
Transaction Granularity
Each row = one completed customer order; transactions are anonymous.
Sales Value
Represent gross revenue per transaction; refunds, voids, or discounts are negligible.
Timestamps
Reflect actual purchase time; operating hours assumed consistent; no delayed syncing.
Product Data
Reflect actual purchase time; operating hours assumed consistent; no delayed syncing.
Data Constraints
No customer identifiers → cannot track repeat visits or lifetime value.
Contextual drivers (promotions, marketing, intent) are not captured.
Product add-ons/modifiers missing → higher-value orders may be underestimated.
Analysis Caveats
Revenue & AOV
AOV reflects pricing and product mix, not customer spend intensity.
Revenue changes driven by transaction count and item composition.
Time Granularity
Daily trends are sensitive to operational/environmental factors (weather, staffing, load shedding, university recess).
Weekly/monthly aggregation smooths volatility; dataset only covers one year.
Peak periods indicate transaction concentration, not service efficiency.
Product Performance
Revenue shifts can reflect mix changes more than demand volume.
Assumes consistent product availability; stockouts/supplier issues not captured.
Category comparisons should consider differences in frequency and price.
Git Repository: Set up a GitHub account and repository to manage, version, and collaborate on your code efficiently.
Visual Studio Code: Write, debug and test SQL scripts and analytics code.
DrawIO: Design data architecture, models, flows, and diagrams.
Notion: All-in-one tool for project management and organization.
Next Steps
Automate the analytics pipeline using Python to orchestrate scheduled data ingestion, data quality checks, feature engineering (e.g. time-based features, product groupings), and automated dashboard refreshes for consistent, reproducible reporting.
Extend the analytical data model to support basket-level and modifier-level analysis, enabling deeper exploration of product mix, true basket value, price sensitivity, and time-based purchasing patterns.
See my SQL queries for data exploration and advanced analysis in the Scripts Folder.
See the notebook for data cleaning, visualization, and analysis in the Python Notebook.
Daily Grind Coffee Shop Sales Analysis (2024–2025) with Tableau dashboards, Python EDA, and SQL-based data processing. Features North Star metrics tracking (Total Sales, Transaction Volume, AOV), time-granular sales and product analysis, and a comprehensive README including, insights, and actionable recommendations and caveats.