The source file as a ruler: 541,909 rows, of which 522,568 are clean sale lines. The 19,341 rows set aside are magnified: 5,268 exact duplicates, 9,251 cancellations netted, 2,327 postage and fees, 2,495 zero or negative.
01
You already have the data. Nobody has the time.
A customer tells you how they found you, and it never reaches the system.
Two reports, two different totals for the same month.
Three channels, and only a guess at which one carries the other two.
Who we’re not for
You have an analyst in-house.
Give them the time instead.
You haven’t launched yet.
Come back after a few months of real activity.
You need pipelines built.
That’s engineering, and a different team.
You’ve decided, and want numbers to back it.
Sometimes the data says the plan isn’t working.
02
Three ways in.
01
Cleaning up messy data
The data you already hold, made usable before anyone analyses it.
From$30price
4days
2revisions
A clean dataset in Excel, CSV or Google Sheets.
A log of what we found and did. Outliers flagged, never quietly deleted.
Repeatable work that you keep.
Pick this when you know what to do with the data, and its state is in the way.
02
Dashboards and performance tracking
One place to look each week, updated without anyone rebuilding it.
To be setprice and timeline
A Power BI or Tableau dashboard, connected to your data.
A written definition of every number on it.
A handover session for whoever uses it.
Pick this when the same report is rebuilt every month, or the team works from different numbers.
03
Testing whether it’s real
A real effect, or a coincidence you’re about to spend money on?
1–2weeks
Per projectprice
What we tested, what we found, and how confident to be.
Charts of the pattern.
What the result supports, and what it doesn’t.
Pick this when a decision is expensive. Did the change work, or was that the season?
03
Five stages. Each one stops the next being guesswork.
1
Observe
How the business really runs, and where the data comes from.
2
Measure
What’s captured, missing or inconsistent. This sets the ceiling.
3
Understand
What the numbers say, checked against how you operate.
4
Identify
The few things worth acting on now.
5
Decide
Clear options, with what each would take. The decision stays yours.
What we need to start
Access to the data.
One person who knows how the business really works.
About two hours of their time, up front.
04
What a year of e‑commerce sales shows.
A UK retailer’s transactions, cleaned as shown at the top. Public data: check us.
September to November: a quarter of the calendar, over a third of the money.
Of the 522,568 clean sale lines, 24,754 fall in December 2011, a partial month, and are left out: 497,814 are in the chart’s window.
Dec to AugSep to NovOutlier: robust z > 7 on log line value
n = 497,814 sale lines, Dec 2010 – Nov 2011, 8,321 cancellations netted.
December 2011 (partial) left out · Online Retail, UCI ML Repository · computed 28 Sep 2026
Every value, as a table
Net revenue by month, December 2010 to November 2011, with each month’s share of the year. The ringed month holds the flagged line.
Month
Net, £
Share
Dec 2010
£758,167
8.1%
Jan 2011
£578,914
6.2%
Feb 2011
£499,531
5.4%
Mar 2011
£679,338
7.3%
Apr 2011
£482,154
5.2%
May 2011
£731,088
7.8%
Jun 2011, 1 flagged line, £38,970, kept
£723,970
7.8%
Jul 2011
£676,845
7.3%
Aug 2011
£701,382
7.5%
Sep 2011
£1,011,365
10.8%
Oct 2011
£1,061,718
11.4%
Nov 2011
£1,427,125
15.3%
Twelve months
£9,331,596
100.0%
The flagged June line: 60 × £649.50, re-ordered as one set five minutes later. Kept: the retailer’s question, not ours to delete.
Two other lines pass the test: one cancelled in January, one outside the window.
Same twelve months
234
customers, about 1 in 18, brought half of identified customers’ revenue.
£77,184
The largest order: 74,215 storage jars, cancelled 16 minutes later. Left in, January reads 13% high.
15.0%
of net revenue has no customer ID (123,628 sale lines). Flagged, not deleted.
From a real conversation
Reporting gaps and missing history were the symptom, not the thing to fix.
We expected dashboard work. The problems sat a level below, in how information was captured. Shared with permission.
05
We are a new practice.
1exploratory session
1proposal written
0completed commercial projects
So: a worked example on public data, not a client list. We price accordingly.
06
The name is the method.
.describe(
In Python, .describe() is the first thing you run on an unfamiliar dataset:
rows, averages, extremes, gaps. You look first. The bracket stays open: what goes inside is your business.
I’m Wafa’a Al-Hayek, and I run .describe( from Gaza.
I studied business administration, joined a software bootcamp in 2022, and moved to data analytics in 2023:
analytics, monitoring and evaluation, reporting. Most data work goes wrong on the question, not the technique.
The team is me, for now; a software engineer and a data analyst join as work grows. You’ll always know who’s on your project.
A number doesn’t have to be wrong to mislead you.
We show our method, name what we excluded, and say when a finding is weaker than you hoped. You should be able to check us.
07
Before you write.
We don’t have anyone who works with data. Is that a problem?
No, that’s who this is for. We need one person who knows how the business runs. Usually that’s you.
We’re not sure what we need. Can we still talk?
Yes. Bring the decision you’re stuck on, not a specification. Finding the right question is part of the job.
What happens to our data?
A read-only connection or a recent export, so we can’t change anything. Used only for your project, never shared, deleted on request. We’ll sign an NDA first if you prefer.
How do we know the work will be any good?
You don’t yet. Judge the worked example, then a small scoped first piece, before anything larger. The first conversation costs nothing.