← Back to projects

Automated Daily Sales Report

Overview

Collects sales data from all active channels (POS, online shop, phone orders), processes it with pandas, generates a full PDF report with charts and KPIs, and automatically emails it to the owner every evening at 20:00.

report-vendite.py · live data
Automated Daily Sales Report
Collects data · builds charts · emails report at end of day
284047 orders
Revenue by hour (€)
08
09
10
11
12
13
14
15
16
17
18
19
Sales by channel
POS / In-store52%
Online shop31%
Phone orders17%
Recent orders
Espresso x6
18
Pastry box
42
Gift set
65
Report ready — 0 sent automatically today
Charts, KPIs, top products and channel breakdown included

Details

The problem
Many small business owners don't have a clear view of their daily sales because data is spread across multiple systems: the shop POS, the online store, the phone order management system. Consolidating this data manually every evening requires time and technical knowledge that is often lacking.
The solution
A Python script scheduled at 19:45 that connects via API to all configured sales channels, collects the day's transactions with pandas, calculates key KPIs (total revenue, orders, average ticket, best-selling product, top-performing channel) and generates a PDF report with bar and pie charts via matplotlib and ReportLab. The report is automatically emailed at 20:00.
How it works
1. API connection to POS, e-commerce, order management 2. Download and normalise data with pandas 3. Calculate KPIs: revenue, orders, average ticket, top products 4. Generate charts with matplotlib 5. Compose PDF with ReportLab 6. Automatic send via email (smtplib) 7. Historical report archive for monthly trend analysis
Typical results
Instant access to sales data every evening without opening any system. Saving of 30–60 minutes of manual processing per day. Faster decisions on restocking, promotions and peak hours thanks to always up-to-date data.