An AI tool that turns a messy pile of user feedback into a prioritised, decision-ready fix list. Bring feedback in four ways — paste it, pull it from an app-store/Reddit URL, drop in a screenshot, or upload an interview recording — and get back clustered themes, Nielsen severity ratings, the heuristic each issue breaks, a concrete fix, and improved microcopy in English + Arabic (RTL). Then push it straight to a whiteboard or ticket.
Built as a submission for the Careem Senior Product Designer AI Challenge (Challenge #1 — Design Companion).
🔗 Live demo: https://careem-design-companion-ochre.vercel.app
📊 Dataset: 328 real Google Play reviews of the Careem app — see data/
Every designer drowns in feedback scattered across reviews, tests, tickets and calls. Turning that noise into "here's what to fix first, and why" is hours of manual affinity-mapping and severity-rating. This tool does the first pass in seconds so a human can spend their time on judgement, not sorting.
It leans on skills from my case studies — usability-testing synthesis (severity + heuristics) and turning intimidating raw data into plain-language, decision-ready output — applied to a Careem-shaped, mobile-first, bilingual context.
Four inputs → one triage report.
| Input | How it works |
|---|---|
| Paste | Any mix of test notes, reviews, tickets. |
| From URL | Paste a Google Play, Apple App Store, or Reddit link → it pulls real reviews/comments automatically. |
| Screen | Drop a screenshot → a Gemini vision model runs a heuristic critique of what's on screen. |
| Interview | Upload audio → Whisper transcribes it, then it's synthesised like any other feedback. |
Every path returns the same report: a one-line verdict, severity counts, themes, and issue cards sorted worst-first — each with verbatim evidence, a concrete fix, and EN/AR microcopy.
Then hand it off: Copy as Markdown, Copy for FigJam/Miro (pasting creates one sticky per issue — a real, no-auth whiteboard export), or download a CSV for Jira/Linear/Sheets.
- Affinity mapping into 3–6 themes, merging duplicates across sources.
- Nielsen severity (1 cosmetic → 4 catastrophe), weighing frequency, impact and persistence.
- Heuristic evaluation — each issue mapped to one of Nielsen's 10 heuristics.
- Actionable fix + bilingual microcopy (English + Modern Standard Arabic).
- Anti-hallucination — every finding must quote verbatim evidence, or it isn't raised.
The role asks to show where AI made the work better and where I overruled it. Both happened:
- AI made it faster: drafting the synthesis logic, generating Arabic microcopy, and triaging 300+ reviews in seconds.
- I overruled severity inflation. Left alone, the model marks half the issues "Critical". I kept the rubric strict and added a dedup pass so the live output stays prioritised, not flattened.
- I kept the report English, microcopy bilingual. The model offered to translate whole findings into Arabic; I decided a researcher's report stays in English while only the deliverable copy is bilingual (flagged for a native reviewer) — that mirrors real handoffs and avoids shipping low-confidence machine Arabic as analysis.
- I forced evidence. Early drafts invented plausible issues, so no finding survives now without a verbatim quote.
- I chose the models per job, honestly. Groq (Llama 3.3 70B) for synthesis, Whisper for audio, Gemini for vision — because Groq has no vision model. Picking the right tool, and saying so, is the point.
- Next.js 16 (App Router) · React 19 · Tailwind v4
- Groq
llama-3.3-70b-versatile(synthesis) ·whisper-large-v3-turbo(transcription) - Google Gemini
gemini-flash-latest(screenshot critique) - Light/dark themes, full RTL/Arabic toggle, keyboard-accessible, reduced-motion aware
- Zero-setup demo: a hand-verified analysis of the real reviews ships in the app, so it always shows a full result even without a key.
npm install
cp .env.example .env.local # add GROQ_API_KEY (free: console.groq.com) and, for screen critique, GEMINI_API_KEY (free: aistudio.google.com)
npm run dev # http://localhost:3000Without keys, Load sample still shows the full demo.
node scripts/fetch-reviews.mjs # re-pulls public reviews into data/A concept by Syed Mubarak. Not affiliated with or endorsed by Careem; the Careem name and public reviews are used only as research material for this exercise.