Jobs vs entities
CRUD mirrors the database. Operators mirror their day. Design for the second.
| Entity-first | Job-first | Why it matters |
|---|---|---|
| Users list + edit form | Onboard venue / approve seller | Matches how work is assigned |
| Orders table dump | Resolve failed payout | Cuts time-to-action |
| Generic status field | Review flagged lead + reason | Creates an audit trail |
Design for jobs, not entities
“Resolve failed payout,” “onboard venue,” and “review flagged lead” beat generic CRUD. Group screens around those flows.
- Interview operators on their last messy Tuesday—not on the ERD.
- Put the next action on the same screen as the context they need.
- Hide rare fields behind progressive disclosure.
Make exceptions first-class
Queues, filters, and reason codes matter more than pretty charts. Log who changed what for support and compliance.
Performance is a feature
Slow tables kill adoption. Index the paths operators hit hourly; paginate; avoid loading the whole world into a React table.
- List the top five screens by daily opens.
- Measure p95 load with realistic data volume.
- Index filters and default sorts those screens use.
- Paginate hard; defer secondary panels until opened.




