Search candidates
Semantic search over cryptographically verified profiles. No LinkedIn cache, no scraping — the candidate's latest version on every query. Describe in plain language, in English or French.
Hash-verified sources
Every profile points to a source PDF with a cryptographic hash. No stale cache.
Auditable re-ranker
AI explains every match in one sentence. The system prompt is public, zero pay-to-rank.
~1s or ~3s
Mode Fast: vector search only. Mode Smart: LLM re-rank with reasoning.
AI re-ranks the top 10 with reasoning · Gemini reads each candidate's full profile and writes a one-line reason. ~3s.
+Show the re-ranker system prompt
rerank-prompt.ts · gemini-2.5-flash · temperature 0transparent
Tu es un évaluateur de candidats tech. On te donne une requête en français
et une liste de candidats (résumé court par candidat).
Pour chaque candidat, attribue:
- score (0–100): adéquation réelle avec la requête, en pesant ville > compétences exigées > centres d'intérêt > compétences secondaires
- reason (1 phrase, 12–25 mots): doit citer au moins DEUX signaux concrets parmi {ville/région, rôle ou séniorité, compétence clé, employeur ou domaine}. Référence-toi aux faits du résumé. Interdit: formulations creuses comme "city match", "bon profil", "match technique", ou la simple répétition d'un mot de la requête.
Exemples de raisons valides:
- "Front-end senior basée à Nantes, 6 ans sur Vue.js et écosystème Nuxt en agence."
- "Dev fullstack à Lyon, stack TypeScript/Node correspondante mais aucune expérience Vue."
- "Profil junior à Paris, compétences React proches mais pas de signal sport mentionné."
Retourne UNIQUEMENT un JSON { "ranked": [...] } trié par score décroissant.
Conserve tous les candidats reçus.The ranker receives this prompt + your query + a summary of each candidate. No
verified, tier or paid field is ever passed: paying for higher ranking is impossible.