Home  /  Cases  /  AI Hiring · Marketplace
AI Hiring · Marketplace

JAAI — AI-powered hiring platform built to production quality

We partnered on JAAI (Job Agent AI): a dual-sided hiring platform where candidates and recruiters connect through intelligent matching, not keyword filters — full web app, deployed API on Google Cloud, and integrations for UK SaaS handling personal data. Engineering completed successfully; the product did not proceed to a public market launch.

Production-ready
Delivery
Candidate + recruiter
Sides
Match · CV · coach
AI surface
The challenge

Traditional hiring stacks optimise for volume: more listings, more applicants, more inbox noise. Candidates rewrite the same CV for every role; recruiters reconcile spreadsheets and ATS exports before anyone agrees who is actually qualified. Our partner understood the hiring problem deeply; they needed software that survives real PDFs and DOCX files, match scores that explain themselves, coach conversations grounded in a specific CV and job, and recruiter workflows that mirror how teams actually hire.

Our approach

We shaped architecture and delivery rhythm together: profiles, resumes, vacancies, and external listings flow through validation, AI analysis, caching, and into dashboards for both roles. Candidates get onboarding, CV intelligence, unified job search, tailored documents, salary insight, and interview coaching. Recruiters get organisations, job management, AI match scores, applicant funnels, scheduling, and messaging — as one product. Next.js on Vercel, Prisma-backed PostgreSQL, FastAPI on Cloud Run, and Cloud Functions via Pub/Sub for long-running CV jobs.

The outcome

A complete, deployable platform: profile and resume management, AI CV analysis, unified discovery across internal postings and Adzuna and CV Library feeds, compatibility scoring, application tracking, recruiter–candidate chat, interview preparation, and Stripe subscriptions — validated in staging and production-like environments. The build succeeded and the architecture is production-grade; commercial launch remained the client’s decision.

Product

For candidates & recruiters

  • Fast onboarding, CV upload, and guided profiles with ATS-oriented analysis after upload.
  • One job search across internal postings and external aggregators — filters, favourites, AI match scores with explanations.
  • Application pipeline, cover letters, interview coach grounded in CV and job, salary insight before you apply.
  • Recruiter orgs, job CRUD, applicant funnels, AI matching modals, scheduling, and WebSocket chat with read receipts.
Platform

For clients evaluating a dev partner

  • Two-sided marketplace: distinct CANDIDATE and RECRUITER journeys, shared data model, role-aware middleware.
  • OpenAI match, CV analysis, and coach with rate limits, AIMatchCache, and assistive — not authoritative — UX.
  • CV analysis on Cloud Functions via Pub/Sub; unified jobs API merging Postgres with Adzuna and CV Library.
  • Stripe subscriptions, field-level encryption patterns, Vercel + Cloud Run + Secret Manager operability.

Cooperating applications,
not a monolith.

Each layer scales and evolves independently — interactive Next.js UX, API control plane, and event-driven workers for LLM-heavy work whether or not the product opens to the public.

01 · Client

Web (Next.js 15)

Marketing site, auth, candidate and recruiter dashboards, CV editor (Tiptap), charts, and API routes that proxy domain logic. Supabase auth in the browser; JWT on calls to Python. Deployed on Vercel with Blob for assets.

  • React 19 · Feature-Sliced Design
  • Prisma → PostgreSQL · TanStack Query
  • Stripe · role-based middleware
02 · Control plane

API (Python · FastAPI)

REST under /api/v1 for CV upload and analysis triggers, unified jobs, salary analytics, AI match, coach, and chat metadata. Pydantic schemas, SlowAPI rate limits on sensitive AI routes, OpenAPI at /docs. Cloud Run with Secret Manager.

  • Supabase JWT on protected routes
  • UnifiedJobsService — internal + external feeds
  • WebSockets for messaging and typing
03 · Workers

CV intelligence (Cloud Functions)

Pub/Sub-driven workers for PDF/DOCX ingestion and OpenAI CV analysis — status rows the UI polls so HTTP threads stay responsive. Pipeline: upload → job row → message → parse + LLM → structured results on the dashboard.

  • Async analysis off the request path
  • AIMatchCache for predictable LLM cost
  • Adzuna · CV Library · Resend integrations
Engineering summary

We delivered a full-stack AI hiring platform to production-ready standard: Next.js and Supabase on the front, Prisma-backed PostgreSQL as the system of record, and FastAPI on Google Cloud Run for jobs, analytics, matching, coaching, and WebSockets — with Cloud Functions handling CV intelligence asynchronously. The architecture separates interactive UX from LLM-heavy work, unifies disparate job feeds behind one API, and exposes clean boundaries so recruiters, candidates, and future clients could share the same backend whether the product launches publicly or not.

Have a workflow that
looks like this one?

Schedule a free consultation