Weights sum shown below
Signals are scaled 0–1 before weighting. A signal whose inputs are missing is not scored; its weight is redistributed across the others and the gap is shown, never filled with a zero.
Rules thresholds behind the actions
Every recommended action is one of these thresholds being crossed. Change a rule and the action list updates, so the team can agree the rules once and argue about numbers, not opinions.
Holding-group roll-up
Data
CSV columns: partner, market, group, manager, quarter, target, actual, advertisers, formats, pilots, qbr (yes/no), pipeline, as_of (date), source. One row per partner per quarter. Amounts in USD thousands. Leave a cell empty when the figure is unknown. Nothing leaves your browser; the state is saved locally.
Change log
Partners, ranked
| Partner | Score | Trend | Signals | Data confidence | Recommended actions |
|---|
Why this score pick a partner
The narrative below is drafted from the numbers above only. The prompt gives a model the same facts and tells it not to add any; the model writes the words, never the figures.
Edit inputs
| Partner | Market | Group | Manager | Target | Actual | Advs | Formats | Pilots | QBR | Pipeline | As of | Source |
|---|
Shaded cells are empty on purpose: the figure is unknown for this quarter and will not be scored. Growth compares this quarter with the same partner's previous quarter only; a partner with no previous quarter has no growth signal.
Method, and what was learnt building it
No invented figures. A missing input leaves the signal unscored and visibly blank. A zero is a real zero. This is the rule that kept Keyva's property data trustworthy, and it is the rule here.
Thin data is flagged, not averaged away. Growth on a base under the floor (see rules) is unreliable and is marked low confidence. A partner with fewer than two quarters is scored but shown as "new", and figures older than the staleness limit are flagged for a refresh before the QBR.
Like with like. Scores compare one quarter with the same partner's previous quarter. The ranking never mixes quarters, and holding-group totals only add partners that have a figure for the review quarter.
Every number explains itself. "Why this score" shows the raw inputs, the scaled signal, the weight and the threshold behind each action, so a QBR starts from evidence rather than a label.
Actions are tracked, not just recommended. Each action has an owner (the partner manager) and a checkbox; the open count sits in the headline figures. Changes to inputs, weights and rules are logged.
Next, with real data: nightly CRM and ad-server pull with a source stamp per field, market and holding-group roll-ups for the leadership review, score deltas quarter on quarter, and an LLM for the narrative only.
Built by Ravi Singhal for Careem Ads' AI challenge 1. Static files, no backend, no tracking. The JBPs, Pipeline and QBRs tabs extend it into Partner Desk; see Method. Code at github.com/sravinp2026/partner-performance-scorer.