Turning 4,184 messy orders into €25K+ actionable insights
A Barcelona restaurant was losing €40K annually to first-order churn (65% never returned) and wasting €11.7K on ineffective discounting—but didn't know it. Their delivery platform (Last App) only showed total sales, no customer behavior.
I built an end-to-end analytics pipeline to uncover the retention crisis, quantify margin erosion, and deliver 4 high-ROI recommendations estimated at €25-30K annual value.
| Finding | Business Impact | Recommended Fix |
|---|---|---|
| 65% first-order churn | €40K lost LTV annually | Milestone loyalty (50% off after 5 orders) |
| 17.6% discount rate | €11.7K margin erosion | Make SXGY promos permanent |
| 1,537 dormant customers | €147K inactive LTV | Email/SMS reactivation (5% = €7.4K) |
Skills demonstrated: SQL cohort analysis, Python regex parsing, Tableau dashboards, data storytelling
Want the headline? → 3-minute Executive Summary
Visual person? → Live Tableau Dashboard
Technical reviewer? → SQL queries + Python parser
Hiring manager? → Keep reading (2 more minutes)
|
Before: Messy Product Text
All items concatenated in one cell with modifiers and packs |
After: Clean Tabular Format
One product per row with quantities extracted |
The Mess:
- All products in one unstructured text field:
"1x PACK PARA 2: 1x Tikka*, 2x Coke..." - Customer PII exposed (phones, emails, addresses)
- 12.5% revenue reconciliation gap
The Fix:
- Python regex to parse 4,184 nested product strings
- Excel Flash Fill for ZIP extraction + PII anonymization
- SQL views with defensive NULL handling for KPIs
The Result:
orderstable (4,184 rows) with temporal, geographic, financial featurescustomers_kpitable (1,805 customers) with retention status, LTV, frequency- 87.5% revenue reconciliation (documented limitations)
The Investigation:
- 19 SQL queries exploring retention, discounting, operations
- Window functions for customer lifecycle cohorts
- Promotional ROI comparison across 7 discount types
The Findings:
- 🔴 65% first-order churn (vs 30-40% industry benchmark)
- 🔴 €11.7K annual margin erosion (17.6% discount rate vs 10-12% healthy)
- 🟢 SXGY promos outperform 3:1 (€44-47 AOV with 14-18% discount)
The Deliverable:
- 4 prioritized recommendations with estimated ROI
- Financial Impact Summary quantifying all opportunities
- Strategic implementation roadmap
The Need: Last App's native reporting = total sales + order count only. No trends, no segmentation, no retention metrics.
The Solution: Interactive dashboard with:
- Sales trends (monthly, day-part, promo performance)
- Customer health (retention rate, lifetime value, acquisition trends)
- Geographic analysis (Barcelona neighborhood heatmap)
- Dynamic filters (year, shift, discount usage, product category)
The Impact: Owner can now answer in 2 minutes:
- "Are sales growing or declining month-over-month?"
- "Which promos drive basket size vs just margin erosion?"
- "How many customers return after first order?"
SQL Skills:
- Window functions (
ROW_NUMBER,LEAD,LAG) for customer lifecycle - CTEs for retention cohort analysis
- Defensive programming (
NULLIF,COALESCE) for zero-division guards - 19+ exploratory queries documented with business logic
Python Skills:
- Regex text parsing for nested product strings
- Pandas for data transformation
- Handling edge cases (truncated cells, special characters)
Tableau Skills:
- LOD expressions for dynamic KPI calculations
- Parameters for metric switching (Sales → Orders → Avg Ticket)
- Dashboard actions for filtering across views
- Geographic visualization (Barcelona neighborhoods)
Data Quality:
- Revenue reconciliation validation (87.5% match)
- Documented limitations (product truncation, platform gaps)
- Transparent about what the data CAN'T answer
Vincenzo Di Sario | Data Analyst | Portfolio
📍 Barcelona, Spain
I specialize in: Turning messy business data into executive-ready insights
My approach:
- Clean ruthlessly – Bad data = bad decisions
- Question everything – Why does this metric matter to the business?
- Visualize clearly – If stakeholders squint, I failed
What I'm looking for:
- Data Analyst role in Barcelona (or remote EU)
- Companies that value curiosity, clear communication, and data storytelling
- Teams where I can learn from senior analysts while contributing immediately
Tech stack: SQL, Python (Pandas), Tableau, Power BI, Excel
Currently learning: Improve Python skills, Snowflake, advanced statistical modeling
💼 LinkedIn
📧 vin.disario@gmail.com
📊 Tableau Public Profile
Open to: Full-time data analyst roles, contract projects, portfolio feedback
Data Privacy: All customer data anonymized. Sample datasets for demonstration only.
Feedback welcome! If you spot analytical gaps, data quality issues, or have suggestions for improvement, please reach out. I'm always learning.
Last Updated: December 2024



