Inspiration Damm's UK account managers walk into customer calls with a target, a forecast, and a gut feeling — and very little that connects the three. We wanted the moment before the call, when an AM is asking "what should I push, and what should I defend?", to be powered by the same data the brewer already has sitting in parquet files. RAMP is built around Sarah, a fictional AM whose Monday morning we tried to make 30 minutes shorter.
What it does RAMP forecasts UK beer demand 9 months out for every SKU × sub-channel, flags which conversations each customer needs that week, and recommends a sized commercial action — multi-buy, brand push, channel focus — that will actually close the gap. Every recommendation is grounded in a visible data source: historical promo ROI, the calendar, or the target shortfall itself. A what-if simulator lets the AM stress-test the play before committing, with honest £ ROI math instead of vanity uplift.
How we built it The backend is FastAPI + Polars driving a four-model ensemble — LightGBM quantile, AutoARIMA, Amazon's Chronos zero-shot, and a hand-rolled CMBC carve-out — blended per channel because grocery and on-trade behave nothing alike. A post-forecast layer applies per-SKU seasonality and event boosts (World Cup, Bonfire Night, etc.) calibrated against actuals, and SHAP surfaces why each forecast moved. The frontend is Next.js 16 + React 19 + Tailwind, with an LLM brief layer that falls back to deterministic prose so the page never breaks on a credit-out.
Challenges we ran into Our biggest fight was forecast flatness — the ensemble was right on average but visually dull, which made every demo screenshot look broken. We also burned a day on a simulator that gleefully showed "+£200k uplift" with no discount cost; the fix was modeling a 55% promo participation rate so the £ math stopped lying. And the gap-closer recommendation initially solved for the cumulative shortfall, which let it claim "promo done" while half the months still missed target — we rewrote it to solve for the worst month.
Accomplishments that we're proud of The Decision page reads like a one-pager a real AM could walk into a Trolley King meeting with — chart, plays, ROI, external context, all in one screen with the customer name in the chip so the scope is never ambiguous. The "Close the gap" play is genuinely useful: it inverts the simulator's lift curve to size the cheapest discount that clears every at-risk month's target, and tells you honestly when it can't. And the whole product degrades gracefully — LLM down, no problem; missing externals, no problem; the demo still runs.
What we learned Forecasting accuracy alone doesn't sell — surfacing why the model said what it said (SHAP, weather, search trends, events) is what turns a number into a decision. Honest negative cases ("4 of 7 months still short") build more trust than aspirational positive ones, especially with a commercial audience who's been burned by every dashboard before. And shipping behind a feature flag pattern — measure MAPE, ship if better, roll back if worse — saved us at least twice from "improvements" that quietly regressed the model.
What's next for RAMP Weekly granularity for promo planning, since most UK trade calendars run W-by-W not month-by-month. A "what closed last quarter" loop so realised lift feeds back into the historical-ROI table the gap-closer reads from. And a multi-AM view for regional managers — RAMP today is one persona deep, but the same data model already supports rolling it up.
Built With
- fastapi
- huggingface
- next.js
- python
Log in or sign up for Devpost to join the conversation.