Datathon FME 2026 · RawTree challenge
Real-time recommendation for shoppers who won't wait
A shopper arrives every few seconds. You have 3 seconds to choose the 10 products they will see. A simulator with a hidden model of their preferences decides whether they click and buy.
The challenge
Sell more than the best sellers
On the home page and on every product page there is a row of ten recommended products. Right now it just shows the best sellers of the category the shopper is looking at. Build something that sells more, tested live on shoppers arriving in real time.
Read requests
Every request describes a shopper and what they just did in this session: device, region, page and the products they viewed.
Answer in 3 seconds
Write back an ordered list of 10 product IDs. Late or invalid answers are replaced by the best sellers.
Learn as you go
Private feedback on every answer (clicks, purchases, revenue) and a shared stream of everything happening in the store.
How it works
Your system is your submission
No files to upload: a loop that runs on its own, all weekend, against RawTree.
A shopper arrives
A new row lands in shop.requests, about 3 per second.
Your system reads it
Poll the table, compute features, rank the catalogue.
You answer
Insert 10 product IDs into team_NN.submissions within 3 s.
The shopper reacts
The simulator decides click and purchase and writes team_NN.feedback.
Read your feedback and the live shop.events stream, improve, redeploy. Every team gets the same shoppers at the same time.
The data
Everything lives in RawTree
One API key per team: read the shared shop database, read and write your own team_NN. JSON in, SQL out, no schema.
~5,000 products: category, subcategory, brand, price, a short description, active flag.
60 days of carousel impressions from the old system: what was shown, clicked and bought, plus propensities.
60 days of organic activity outside the carousel: views, add-to-cart, purchases.
One row per shopper arriving at the carousel. This is what you answer.
Organic activity in real time (spot the trends) and catalogue changes: new products, prices, stock-outs.
What happened with each of your answers, only visible to you. Plus a free table for your own features.
{
"request_id": "r_01JD8K3...",
"ts": "2026-11-14T16:02:11.482Z",
"user_id": "u_7f21c9",
"is_new_user": false,
"context": {"device": "ios", "region": "Catalunya", "page": "product"},
"recent_views": [
{"product_id": "p_5a1e", "ts": "2026-11-14T16:01:40Z"}
]
}{
"request_id": "r_01JD8K3...",
"shown": ["p_91aa", "p_5a1e", "..."],
"served_by": "team", // or "fallback"
"fallback_reason": "", // missing · late · invalid
"latency_ms": 840,
"clicked": "p_91aa",
"purchased": "p_91aa",
"revenue_eur": 34.99
}What you submit
One row per request
Insert into team_NN.submissions through the RawTree API.
[{
"request_id": "r_01JD8K3...",
"items": ["p_91aa", "p_5a1e", "p_c302", "p_77d0", "p_0e12",
"p_a4b8", "p_19f3", "p_6d2c", "p_e801", "p_3b5a"],
"model_version": "v3-mf-bandit"
}]- Exactly 10 distinct, active product IDs. Products go out of stock during the event.
- Within 3 seconds of the request
ts, measured by the organisers. The starter baseline answers in about 1 s. - One answer per request. Batch your inserts, e.g. every half second.
- Order matters. Shoppers look at the first slots much more than at the last ones.
Timeline
Practise on Saturday, count on Sunday
Times in Barcelona time.
Kick-off
Data, keys and starter kit released. Get your key at the RawTree stand.
Practice round
Live stream and public leaderboard, updated every 10 minutes. Iterate as much as you like.
Final round
New shoppers, new products, new trends. The leaderboard goes dark; only a status light per team.
Results
The stream stops and the final ranking appears on the leaderboard. Then, presentations.
Evaluation
70 points from the stream, 30 from the jury
Only the final round counts. The practice round is there for you to learn.
Two yardsticks
Baseline = best sellers of the session's category (the starter kit). Reference = a strong recommender built by the organisers. It can be beaten.
Tie-breaker: revenue per request in the final round.
The store moves
Teams that generalise beat teams that memorise
Get started
On the leaderboard in 30 minutes
The starter kit has a 50-line baseline, SQL examples and an offline evaluation notebook.
Get your key
At the RawTree stand when you register your team: a TEAM_ID like team_07 and a RAWTREE_API_KEY. One per team, keep it private.
Clone the repo
Copy .env.example to .env and fill in your credentials.
git clone <repo URL, published at the opening>Run the baseline
It polls new requests, answers with the best sellers of the shopper's category and inserts in batches.
pip install -r starter/requirements.txt && python starter/baseline.pyMeet RawTree, beat the baseline
RawTree is built for agents: point yours at the docs and let it find its way. Then explore the history, evaluate offline, deploy, read your feedback, repeat.
curl -fsSL https://rawtree.com/install.sh | bashFAQ
Questions teams ask
Can we use AI coding agents and LLMs?
Yes. Everything you present has to be yours to explain: anything a team cannot explain may be penalised.
What happens if my system is down or slow?
That shopper sees the best sellers (the fallback) and you lose reliability points. Your feedback tells you why: missing, late or invalid.
Does the practice round count?
No. Only Sunday 10:00–12:00 counts. Practice is for learning, and the public leaderboard shows the last 4 hours.
Can I keep changing my code during the final?
Yes, your system keeps answering while you work. You will not see the ranking until 12:00, so have your best version running by 10:00.
Do we need a server?
No, a laptop works if it stays awake and online all night. Requests not answered get the fallback.
"Illegal type Dynamic" in my SQL?
RawTree is schemaless: every column is Dynamic. Cast join keys and a few aggregates, e.g. a.product_id::String = b.product_id::String.
Is the data real?
No. Shoppers, sessions and outcomes come from a simulator with a secret seed. Finding a public dataset gives you nothing you do not already have.
Can we share keys or feedback with other teams?
No. Feedback is private to each team, and recommendations must be produced by your code.
Ready when the shoppers are
Get your key at the RawTree stand, run the baseline, and climb the leaderboard.