AI career assistant / HR tech
JobXentral
Designed & built full-stack by Farivar Zarvandeh
A calm, guided AI co-pilot for every job application.
- Job
- Résumé
- Cover
- Fit
- Submit
- Web page routes
- 53
- Admin routes
- 21
- Journey steps
- 5
- Specified LLM chains
- 11
- Planned DB tables
- 125
- Mobile PWA routes
- 26
Figures counted from the repository; maturity note: Feature-rich frontend prototype: 53 web routes and a 26-route mobile PWA running on mock data and localStorage. Two real server routes handle parsing and fetching. Backend, database (full SQL DDL) and infrastructure are specified but not yet built, and there is no automated test suite.
01
Product introduction
JobXentral turns a job search into structured, per-role journeys: tailor your resume, draft the cover letter, check fit and gaps, then rehearse the interview by voice. Around them sit an ops back-office and an AI-trainer workspace for the agents behind the product.
02
The problem
Job seekers juggle dozens of applications with generic resumes that are not tailored to each posting or to ATS keyword scanning. Interview answers often lack structure and evidence, and LinkedIn presence stays inconsistent. On the operator side, running a multi-region product with AI agents behind it needs ops tooling and agent evaluation from day one, not as an afterthought.
03
The solution
JobXentral makes every application a 5-step journey: review the job description (pasted, uploaded or fetched from a URL), accept or reject proposed resume bullets, write a cover letter in a chosen tone, review strengths and gaps, then submit. Interview practice runs in Learning, Q&A and timed Trial modes. Answers are scored on structure, specificity, clarity and confidence, and a browser voice interviewer is available. A streak-based daily dashboard, resume ATS analysis and a social planner keep momentum. A region-scoped admin back-office and a 'Gym' workspace for agent versions, evals and LangGraph traces complete the platform.
04
Core features
Apply Pilot journeys
ImplementedEach application is a persisted 5-step wizard: JD review, resume tailoring, cover letter, fit & gaps, submit. Drafts survive reloads.
JD import from URL
ImplementedA server route fetches public job postings and converts them to clean text. It blocks private and loopback hosts and enforces size and time limits.
Resume PDF parsing
ImplementedUploaded resumes are parsed server-side into text for analysis, with clear errors for image-only PDFs.
Interview prep with rubric scoring
PartialLearning, Q&A and timed Trial modes grade answers on structure, specificity, clarity and confidence, then suggest a rewrite. The grader is a deterministic heuristic standing in for an LLM.
Voice mock interview
ImplementedThe interviewer speaks the questions and listens to the answers through the browser's speech synthesis and recognition APIs.
Resume Engineer
PartialShows an animated ATS score ring, six category scores and keyword-gap insights next to a resume builder. The analysis currently uses mock data.
Daily dashboard and streaks
ImplementedA home view combining journeys in motion, a 7-day streak, a badge ladder and the weekly LinkedIn plan.
Admin back-office
Implemented21 admin routes cover KPIs, users, CRM, campaigns, plans, audit, feature flags and CSV reports. Persona-based RBAC scopes every page to a region.
Gym AI-trainer workspace
PartialAgent versions, eval suites, run logs and a multimodal sandbox with LangGraph trace and tool-call inspection. These screens run on mock data.
Mobile PWA
PartialA mobile-first, installable port of the seeker portal with a service-worker app shell and an offline page.
LLM chain backend
PlannedEleven specified chains (extraction, role matching, resume generation, cover letters, voice rubric and more) to run behind a Python FastAPI model gateway.
05
System architecture
Today JobXentral is a Next.js 16 / React 19 frontend prototype with three portals: Seeker, Admin and Gym. It runs on typed mock data and localStorage, and two real server routes handle PDF parsing and JD fetching. A separate Next.js PWA serves mobile. The planned production backend is fully specified: Python FastAPI services behind a model gateway, PostgreSQL with region-level row security across four schemas, Redis, and pgvector for matching and RAG.
Hover or focus a component to trace its real connections.
11 components · 10 connections, as found in the repository.
06
Technology stack
- frontend
- Next.js 16React 19React CompilerTypeScriptTailwind CSS v4lucide-react
- backend
- Next.js Route Handlerspdf-parseFastAPI (planned)SQLAlchemy / Alembic (planned)ARQ (planned)
- data
- localStorage (prototype)PostgreSQL 16 with RLS (planned)pgvector (planned)Redis (planned)
- ai
- Web Speech API (TTS/STT)Heuristic answer graderLLM chain catalog (planned)LangGraph agent tracing (Gym UI)
- infra
- Docker (multi-stage, non-root)GitHub ActionsPWA service workerHetzner + Coolify (planned)
- integrations
- Public job posting URLsCurated job-board directoryOAuth providers (planned)Paddle (planned)
07
Product experience

Apply to a role
- 1Paste a job URL or text, or upload a file
- 2Confirm the parsed job description
- 3Accept or edit proposed resume bullets
- 4Pick a cover-letter tone
- 5Review strengths and gaps
- 6Download materials and apply
Rehearse the interview
- 1Study model answers in Learning mode
- 2Answer questions in Q&A and get rubric feedback
- 3Run a timed Trial, optionally by voice
- 4Review the overall score and top improvements
Operate a region
- 1Switch persona or region scope
- 2Review KPIs and cohorts
- 3Manage users, campaigns and plans
- 4Build a report and export CSV
07b
AI capabilities
Interview answer coaching
Answers are scored 1 to 5 for structure (STAR), specificity (metrics), clarity and confidence (hedging detection). The feature returns strengths, improvements and a suggested rewrite, and aggregates trials into a weighted 0–100 score.
Voice interviewer
A speak-listen-think loop built on browser speech synthesis and recognition lets candidates rehearse out loud.
Agent operations Gym
Models AI agents with versions, few-shot examples, MCP/API/RAG tool bindings, canary/staging status, eval suites and LangGraph traces for multiple model providers.
Planned LLM chains
Eleven specified chains: resume extraction, discovery interview, top-5 role matching, tailored resumes, JD fit analysis, cover letters, interview FAQ, voice rubric and social content.
08
Engineering challenges
- 01
Safe server-side URL fetching
The JD importer fetches arbitrary user URLs. It rejects non-HTTP schemes and private, loopback and link-local hosts, caps responses at 2 MB, aborts after 12 s and strips scripts and styles before returning text.
- 02
Region isolation designed from day one
Every admin page filters by an effective region derived from a persona-based RBAC context. This mirrors the planned PostgreSQL Row-Level Security that confines regional admins to their own data.
- 03
Deterministic mock data as an API contract
A seeded PRNG generates stable admin datasets, and typed mock modules define the exact shapes the future backend must return. That allows a clean frontend-first cutover.
- 04
Cross-browser voice capture
The voice hook feature-detects standard and WebKit-prefixed speech recognition and manages the speaking, listening and thinking phases with graceful fallback to typed answers.
09
Technical differentiators
Journey-first application model
Applications are not rows in a tracker. Each one is a guided, resumable workflow that ends with ready-to-send materials.
Built-in AI-ops workspace
A dedicated Gym portal for agent versions, evals and trace inspection treats AI quality as a product surface.
Three portals, one schema
The Seeker, Admin and Gym portals are specified together, down to a 125-table PostgreSQL schema tracing every UI field.
EU-first and privacy-aware
Plans target EU hosting and EU AI providers, with GDPR and AI-Act checklists and privacy rules embedded in prompts.
10
Explore further
The source repository is private. A live walkthrough is available on request.