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.
    Open Shadow — AI-Native Talent Directory