An AI co-pilot for the whole job hunt — not just a tracker. You paste the raw recruiter message from WhatsApp, email, Glints, or LinkedIn and an LLM pulls out the structure, the status, and the deadlines; it scores your CV against each posting; and when an interview lands it generates a tailored prep session and coaches you through it. Tracking becomes a side effect of forwarding, not a second job. Built as a Turborepo — Next.js 16 web, NestJS 11 API, Prisma 7 + Postgres, Supabase auth, Groq (Llama 3.3) for every AI step.
A single job-seeker juggling 15+ applications loses the one fact that matters — which company, and do I prep an interview or finish an assessment first? — by scrolling back through emails and job boards to dig it out. Existing trackers (spreadsheets, Notion, Teal, Huntr) make you do the data entry and the status updates by hand, so tracking is the work instead of a byproduct. And once you do land an interview, prep happens nowhere near where the application lives.
A Turborepo where Zod contracts are shared by both apps — the NestJS API validates requests with them and the Next.js web reuses them as form validators and types. Groq (Llama 3.3) reads messy pasted text into structured applications, status updates, CV profiles, and Q&A answers via structured-output schemas — but every AI draft is reviewed before it persists, never written silently. Per-user Kanban stages are modeled on how Indonesian recruiters actually phrase status ("Lamaran dilihat", "HRD ingin mewawancaraimu"), each status change captures an interview/deadline event into one Upcoming agenda, and an Interview Training Session turns the job + your CV + your gap skills into a coached prep loop. Multi-tenant by construction: a global Supabase-JWT guard scopes every Prisma query to the owner.
- 01AI extraction (Groq / Llama 3.3) of pasted recruiter messages into structured applications — review-before-save, never a silent write
- 02Interview Training Session: an AI-generated question set from the job + your CV + gap skills, with Practice coaching, a live conversational mock, and scored flashcard drills tracked to a 0–100 readiness
- 03Per-user dynamic Kanban stages modeled on real Indonesian recruiter language, with a status timeline that captures interview & deadline events into one Upcoming agenda
- 04CV upload (PDF/DOCX) → Supabase Storage → Groq extraction into a structured, editable profile; matched vs. gap skills computed against every posting
- 05Turborepo with shared Zod contracts both apps consume — the API validates with them, the web reuses them as TanStack Form validators and payload types
- 06Multi-tenant by construction: a global Supabase-JWT guard scopes every Prisma query to the user; cross-tenant reads return 404 to avoid leaking existence
- Next.js
- NestJS
- Turborepo
- Prisma
- PostgreSQL
- Groq AI
- Supabase
- Zod
- TypeScript
- Llama 3.3One Groq model drives extraction, skill matching, and interview coaching
- TurborepoNext.js 16 web + NestJS 11 API on Zod contracts both apps consume
- Multi-tenantGlobal Supabase-JWT guard; cross-tenant reads return 404, never 403