Semata helps recruiters screen candidates against role-specific criteria. You start from a role brief, calibrate what “good” means for that role, pull in CVs from an upload or an ATS, run them through an AI evaluation pipeline, and come out the other side with scored, justified shortlists you can actually defend.
I was a founding engineer and the primary maintainer: product architecture, the frontend, the backend routes, the Supabase schema, the AI pipeline, the integrations, the admin tooling, and the tests and docs that kept it honest.
What I built
- The Next.js foundation: authenticated app structure, dashboard navigation, Supabase clients, API and validation helpers, UI primitives, and project tooling.
- The CV screening pipeline, which is the heart of the product: upload handling and extraction, role-specific scoring, competency evaluation, scorecard rendering, retry and reprocess flows, batch progress, usage limits, and an admin testbed for poking at it.
- Role and intake: job-description import, role metadata and calibration, the clarification questions, role notes and files, and brief regeneration.
- The candidate review workspace: tables, cards and drawers, scorecards, filtering and sorting, kanban views, ratings, comments and mentions, exports, Ask AI, and bulk operations.
- ATS and sourcing integrations across Workable, Pinpoint, and Greenhouse: credentials, imports, duplicate handling, stage tracking, and active-list syncing.
- The multi-tenant and admin layer: organisations and invites, member management and access control, MFA, prompt and eval tooling, cost views, stuck and failed job views, and the internal debugging surfaces.
- The operational glue: email automation, notifications, scheduled reports, Sentry, maintenance states, RLS coverage, and the unit, integration, and E2E tests.
Hard parts
The product sits where recruiting workflow, document ingestion, and AI evaluation meet. The useful work was never just asking a model to score a CV. It was making the pipeline auditable, rerunnable, bounded by tenant and usage rules, and explainable enough that a recruiter would trust the result instead of quietly re-reading every CV anyway.
A lot of the effort went into turning raw model output into a review workspace: scorecards that say why a candidate passed or failed, filters that cut a big list down to a real shortlist, and admin tools that make the prompt and pipeline behaviour visible the moment something looks off.
Stack
Next.js App Router, React, TypeScript, Tailwind and shadcn/ui, React Hook Form and Zod, SWR and Zustand; Supabase for auth, Postgres, storage, realtime and RLS; Anthropic’s Claude through the Vercel AI SDK; React Email and Resend; Sentry; Playwright, Vitest, Testing Library and MSW; deployed on Vercel.