Case study · Own product
Sebenza
A national talent-intelligence platform for South Africa.

- Year
- 2026
- Timeline
- About 3 months
- Role
- Design · Engineering · Infrastructure
- Status
- See it live
The brief
Our own product, built while watching what was actually happening in South Africa: a labour market full of talent that nobody could see clearly. Job seekers were invisible to employers, and government was making policy from stale spreadsheets. Nothing trustworthy sat in the middle.
Sebenza is that middle layer. It matches people to work by skill and where they actually live, and it gives government a real-time, honest picture of the labour market. Four kinds of users (seekers, employers, admins, and government) on one consent-gated data spine.
What we built
A national talent register with search that tells the truth. Every profile carries a freshness signal: statuses confirmed recently rank higher, and anything older than 90 days is down-ranked and marked as such, never silently presented as current. A skill shows "Verified" only when a verified provider says so; everything else reads exactly what it is.

For government, the platform aggregates the same data into employment insights, with a k-anonymity engine in front of every number so no aggregate can be traced back to a person. The ranking formula behind the labour-market index is published openly on the platform itself, so anyone can audit how the numbers are made.

The hard part
The POPIA consent architecture. Consent isn't a checkbox here: it's a state machine. Each of the nine purposes tracks which version of the consent text the person actually saw, and when. Several purposes are default-off and deliberately "non-degrading": declining them cannot weaken your job search in any way, because consent that costs you something isn't consent.
Every server action checks consent at the boundary. Bulk operations skip non-consented people and record the real reason only in the audit log never in the interface, so nobody can infer someone else's consent state from what they see. Eighteen of these guarantees are written as runnable compliance assertions that execute against the live system.
Outcome
Live at sebenzasa.com in four languages (English, isiZulu, isiXhosa, and Afrikaans) with 363 automated tests behind it. National ID numbers are encrypted at the field level and never displayed back, not even to admins. A hire only counts as a hire when it's confirmed through the platform. Honest data, all the way down.
- 0
- Consent purposes, each versioned
- 0
- Languages
- 0
- Runnable compliance assertions
- 0
- Automated tests
Stack
- Next.js 16
- React 19
- TypeScript
- PostgreSQL
- Drizzle ORM
- Better Auth
- Tailwind v4
- next-intl