
Web Dev · 1200+ CVs · 98% satisfaction
DigiMyTech Talent Hub
PFE capstone: an AI-powered talent hub for CV prep, skill matching, and application tracking.
At a glance
97
Days
PFE capstone
5
Sprints
Scrum delivery
109
Tests
All passing
11
AI features
Embedded in UX
10
DB tables
PostgreSQL
<50ms
Matching
Deterministic score
Platform modules
Five modules, one candidate journey

AI-assisted writing, PDF/Word/OCR import, high-fidelity PDF export.

0–100 compatibility score with skills gap analysis and AI explanation.

Formations ranked by detected skill gaps from your profile.

Four-column tracker with timestamped status history.

8 AI-generated questions, voice or text mode, personalized debrief.
Delivery
Scrum: 5 sprints in 97 days
Initiation
Feb 15–28
Backlog & architecture
Auth & profile
Mar 2–13
Magic link + RLS dashboard
CV editor
Mar 16–27
Editor, PDF export, AI quality score
AI & matching
Mar 30 – Apr 10
Matching engine + formations
Kanban
Apr 13–24
Application tracking + admin
Interview AI
Apr 27 – May 8
Voice simulator + final QA
Market positioning
Built for Tunisia, not a US import
| Feature | DigiMyTech | Jobscan | Rezi.ai |
|---|---|---|---|
| French interface | · | ||
| 0–100 matching score | · | ||
| Training recommendations | · | · | |
| Application Kanban | · | Partial | |
| Tunisia market fit | · | · | |
| AI interview simulator | · | · | |
| Explainable matching algo | · | · | |
| Free for candidates | Partial |
Architecture
Presentation
Next.js 15 · React 19 · Tailwind
SSR/SSG hybrid UI
Business logic
Server Actions · Zod DTOs
Repository pattern
Data & AI
Supabase · OpenRouter · Vercel AI SDK
RLS + streaming LLM
DigiMyTech Talent Hub is my PFE capstone (Licence MDW, ISET Sousse): a full-stack, AI-powered talent platform built solo in 97 days at Digimytch SUARL, Ariana. It accompanies Tunisian job seekers from CV creation through interview simulation, with AI embedded at every step, not bolted on as a chat widget. Graduated with highest honors (Mention Très Bien).
Context & problem
At Q1 2026, graduate unemployment in Tunisia reached 24.2% (INS). Candidates often have strong skills but weak presentation: generic CVs, no objective way to gauge fit before applying, Excel-based tracking, and zero French-language interview prep tools adapted to the local market. International tools like Jobscan and Rezi.ai cover only fragments of this journey.
I conducted field analysis at Digimytch with the CTO, CEO (Product Owner), and mapped four broken steps: CV writing without feedback, subjective job browsing, unstructured application tracking, and no guided interview practice.
Five integrated modules
- Smart CV editor, Structured editor with streaming AI assistant, PDF/Word/OCR import, high-fidelity PDF export via @react-pdf/renderer, and AI quality scoring by category.
- Job matching engine, Deterministic 0–100 compatibility score (not LLM-generated) with NFD tokenization for accent-insensitive skill matching, plus AI-generated explanation in 3–5 sentences.
- Training catalog, 21 formations ranked by detected skill gaps from matching results, "Recommended for you" instead of a generic list.
- Application Kanban, Four columns (To do, Applied, Interview, Offer) with timestamped status history and soft-delete archiving.
- Interview simulator, 8 dynamically generated questions, voice mode (Web Speech API on Chrome/Edge) or full text fallback, personalized debrief per answer.






Architecture & stack
Three-tier architecture: Next.js 15 + React 19 + Tailwind (presentation), Server Actions + Zod DTOs (business logic with Repository pattern), Supabase PostgreSQL + Storage + JWT Auth (data with Row Level Security on every user table).
AI layer: Vercel AI SDK v4 streaming to OpenRouter Free models, Kimi K2.6 for CV, Gemma 4 26B for cover letters, Llama 3.3 70B for interviews. Each Server Action validates JWT before calling OpenRouter; responses stream directly to React without a REST middle layer.
Scrum delivery (5 sprints)
| Sprint | Focus | Key deliverable |
|---|---|---|
| Initiation | Backlog, UML, architecture | Product backlog + tech stack locked |
| Sprint 1 | Auth & profile | Magic link auth, RLS profiles, dashboard KPIs |
| Sprint 2 | CV editor | Auto-save editor, PDF export, AI quality score |
| Sprint 3 | AI & matching | Deterministic matching engine, formations catalog |
| Sprint 4 | Kanban & admin | Application tracker, formation import via AI |
| Sprint 5 | Interview AI | Voice simulator, debrief, 109 tests green |
21 user stories delivered out of 21 planned. Solo developer on every sprint, conception, code, tests, documentation.
The interesting technical challenge
The most significant design decision was building the matching score as a deterministic algorithm (src/lib/matching.ts) rather than an LLM call. Same profile + same offer = same score every time, tested explicitly in the test suite. Users can trust and audit the number; the AI only generates the natural-language explanation on top.
Other hard problems: token budget management on free OpenRouter models, Supabase SSR session sync (syncProfileToAuthSession), and a React state bug causing duplicate formation recommendations (fixed by resetting state between matching calls).
Quality & security
- 109 automated tests across 24 files (Node.js native test runner), all passing at defense
- Rate limiting (60s / 10 requests), CSP, HSTS, prompt injection sanitization via Zod
- RLS on all 10 PostgreSQL tables; admin access via JWT
app_metadata.is_admin
Measured performance
- Matching score calculation: < 50 ms for a 10-skill CV
- AI assistant first token: < 800 ms
- CV quality score (generateObject + Zod): 2–4 s
- Vercel deploy from GitHub push: < 90 s
What I'd do next
Vector search via pgvector to match "JavaScript engineer" with "React/Node developer" beyond lexical matching. Playwright E2E for critical flows. Auto-fill profile on signup from CV parser. Arabic-language models with RTL support.
Stack: Next.js 15 · React 19 · TypeScript · Supabase · OpenRouter · Vercel AI SDK · Tailwind · Framer Motion · Vercel
Live: digimytch-talent-hub.vercel.app · Code: GitHub
Building something similar?
Tell me about your product or site. I respond within 24 hours.
Let's talk →