Design philosophy
The product is a tool, not an application. A tool does one thing, asks for nothing, and disappears into the task. You don't log into a knife. The concrete rules this produces:
- No login, no landing, no dashboard. Drop a CSV and you are in the queue.
- The keyboard is the interface. The mouse is optional, never required.
- One screen, one case. The reviewer never navigates through different pages.
- No state you can't export. Your work product is the returned CSV.
- Installation on local network. Meant for IT to install tool on local network for employees.
If we had another week
Unfortunately we could not finish on time, we overemphasized architectural decisions over coding. We would redesign the front end in canvas to emphasize a keyboard less experience, make the docker container easy to install on a local network, and implement further detection algorithms.
User
| Who | Why |
|---|---|
| Who | James, a trust & safety reviewer at a payments company |
| Job | Manually triage transactions the system has flagged: confirm, clear, or escalate |
| Context | Long sessions of repetitive review; throughput and low strain matter more than power features. |
| Technical level | Non-technical, must be productive cold, with zero instructions. |
| What he needs | To trust each flag's reasoning at a glance and move to the next case in seconds |
What the tool detects
Detects deviations from baseline values; the card's own normal, patterns visible across all cards. The dataset carries device_id, ip_address, merchant_name, card_id these are used to make correlations. Can detect:
- Amount anomaly — transaction vs. the card's own median and spread
- Category / geography novelty — a merchant category or country this card has never used
- New device or IP — first appearance of a
device_id/ip_addresson this card - Cross-card reuse — one
device_idorip_addressspanning multiple cards (invisible without aggregating across cards) - Velocity — a burst of transactions in a short window
Every flag carries at least one human-readable reason in a fixed format:
<SIGNAL> — <evidence>. Baseline <x> → observed <y> (<factor>).
Amount anomaly — $750 vs card median $52 (14×).Cross-card device reuse — device_4f2a on 6 cards. Baseline 1 → 6.New geography — merchant_country RO; cardholder CA; no prior RO activity.
A case shows its 1–3 reasons and score up front; the full raw transactions logs are visually separated to prevent a wall of fields.
Reviewer experience
- Queue, not a table. Cases appear one at a time, ranked by score, with full context.
- Keyboard-first. Confirm / Clear / Escalate / Next on single keys; the next case auto-loads. Visible focus, no keyboard traps.
- Undo. Any disposition is reversible.
- One filter. A single keyboard-invoked fuzzy filter (by card, merchant, device) and no filter panel.
- Lightweight in-session feedback. Dismissing a flag suppresses similar flags for the rest of the session and records the dismissal.
- Readable by default. High-contrast, comfortable text size and spacing for sustained sessions accessibility as table-stakes, not a feature.
Export contract
The returned CSV is the deliverable. Original columns preserved, review columns appended. It reloads cleanly (round-trip safe).
| Column | Source |
|---|---|
| (original columns) | Input, verbatim |
flag_score |
Detector |
flag_reasons |
Detector (the formatted reason strings) |
review_status |
Reviewed / Pending |
disposition |
Confirmed fraud / Cleared / Escalated |
reviewer + reviewed_at |
Lightweight audit trail |
Success looks like
- Detection — F1 ≥ 0.85 against the hidden key, precision protected (no over-flagging).
- Speed — a flag dispositioned in seconds, hands never leaving the keyboard.
- Cold start — a non-technical reviewer dispositions their first case with no instructions.
- Explainability — every flag carries at least one reason in the locked format.
- Handoff — the export reloads cleanly and carries status, risk, reasons, reviewer, and timestamp.
Not building
- Graph/network ML, real-time streaming, model training
- Enterprise scale, multi-user collaboration, accounts
- Integrations or connectors. The contract is CSV in, CSV out.
- Full compliance reporting (lightweight audit trail only).
- Any dashboard, landing page, or onboarding flow, excluded by philosophy, not by time

Log in or sign up for Devpost to join the conversation.