The brief
You have joined UrbanNest, a direct-to-consumer home goods retailer, as an analyst.
Your manager forwards a thread from the monthly business review:
"September net revenue came in around 15% below August on the dashboard. The assumption on the call was that demand has softened and competitors are discounting. Marketing has proposed cutting the paid social budget by 40% next quarter. Before we sign that off, can someone check the numbers properly?"
Nobody has verified the assumption — or the 15%. You have eleven months of order-level data.
What you are asked to do: establish what actually changed, and give a recommendation on the paid social cut that your manager can take back to that meeting.
All timestamps in the data are UTC. Report by UTC calendar month; there is no other timezone to reconcile.
Two notes from the team, worth reading before you start:
A payment gateway change went live in late August. Engineering mentioned something about retry behaviour; it was not followed up.
Refunds are recorded as separate rows, not as adjustments to the original order.
Treat this as you would any first week on a new dataset: check the shape of the data before you trust a number, and be ready to show how you got every figure you report.
What to submit
- 1Executive summary, one page — what happened, why it happened, and what you would do. Put it in your repo README.
- 2Analysis covering the revenue trend, customer behaviour, channel mix, and the refund and payment data. Show your SQL (or Python/R).
- 3A dashboard or chart — Tableau, Power BI, Looker Studio, or even Excel. Any tool, as long as the link is public.
- 4A recommendation on the question asked: should UrbanNest cut the paid social budget? Five slides maximum, or the equivalent in your README.
- 5Your five verified answers, entered on the submission form.
- 6Optional: a three-minute Loom walking through your reasoning.
How it is scored
40% auto-graded answers60% reviewed analysis
| Area | Weight |
|---|---|
Data accuracyauto-graded The five verified answers. Graded automatically against the dataset, so this half of your score is arithmetic, not opinion. | 40 |
Problem framingreviewed Did you test the assumption you were handed rather than confirm it? Restating the brief scores low. | 15 |
Analysis and methodreviewed Did you handle the duplicate gateway rows and the separate refund rows — and show how? Correct numbers with no visible method score low. | 20 |
Insight qualityreviewed Naming the symptom is not the finding. The cause, with evidence, is. | 15 |
Recommendationreviewed A clear answer on the paid social cut, argued from your own numbers. Hedging scores low. | 10 |
The data
Three files, ~2 MB total.
orders.csv — one row per order line. Columns: order_id, customer_id, order_ts_utc, sku, category, quantity, unit_price, discount_code, discount_amount, revenue, channel, device, is_refund.
customers.csv — customer_id, signup_date, region.
products.csv — sku, product_name, category, list_price.
The data covers December 2025 through October 2026. It is synthetic, generated for this challenge, and contains the kind of mess real order tables contain. No customer in it is a real person.
Results
All 3 submissions, scored on diagnosis, rigour, judgment and communication.
- Rank 1Lasni G. Fanyati S.WinnerPerfect Objective Score83/100
- Rank 2Rid T.Top 368/100
- Rank 3HaleemaTop 331/100
Scores are 40% verified answers, graded automatically, and 60% written analysis against the published rubric. All-time leaderboard
Recognition
Free to enter. Everyone is scored and ranked.
Every entrant is graded against the same rubric, ranked on the public leaderboard, and gets written feedback on their analysis. No fee, no prize, just the credential.
- The full brief and dataset
- Your score on the verified answers
- Written feedback on your analysis
- Ranked on the public leaderboard
- A certificate and badges you can add to your CV
Rules
- Scoring follows the published rubric below: 40% verified answers, graded automatically, and 60% your analysis, scored against the rubric
- Scoring is automated. The top 10 submissions and any disputed score are reviewed by a human before results are finalized
- Your repository must be public and its commit history must show the work happening before the deadline
- Work individually. You may use any tool, including AI assistants — but you must be able to explain every number you submit
- One submission per person. You can update it any time before the deadline
- Your repo has to be public for us to read it — but do not promote your solution on LinkedIn, X or Discord until judging closes, so others can still attempt it
