← Tous les travaux
Icône Envolio
Projet personnel · SaaS recherche d'emploi

Un CV, une lettre, une vraie recherche d'emploi — et une IA tenue en laisse.

Envolio construit un CV et une lettre de motivation optimisés ATS, cherche de vraies offres sur deux sources officielles (France Travail, La Bonne Alternance), et note chaque offre par rapport au profil de l'utilisateur.
Chaque fonctionnalité IA — réécriture ciblée, analyse d'écart, mots-clés de recherche plus pertinents — est posée derrière un quota explicite par forfait, vérifié côté serveur, jamais une surprise silencieuse sur la facture.

RôleConception produit & développement solo
StackNext.js 16 / Supabase (Postgres, Auth, RLS) / TypeScript
StatutEn développement actif — éditeur, recherche d'emploi et fonctionnalités IA fonctionnels de bout en bout
PériodeSeptembre 2026
Voir la démo en ligne →
7
templates de CV ATS-safe, personnalisables en profondeur
2
sources d'offres officielles fusionnées en une recherche (France Travail, La Bonne Alternance)
4
règles appliquées au niveau base de données, pas juste cachées dans l'interface
0
filigrane sur l'export PDF gratuit, aucun piège d'abonnement caché
Le constat

La plupart des générateurs de CV grand public verrouillent le document fini derrière un abonnement, imposent un filigrane sur l'export gratuit, ou attirent avec un essai à 2€ qui se transforme silencieusement en abonnement mensuel.
Envolio part de l'inverse : un export PDF réellement gratuit et sans filigrane, et un choix paiement unique ou abonnement clairement affiché dès le départ — sans dark pattern.

Quatre briques
01

Éditeur CV & lettre

Sept templates ATS-safe, personnalisation totale (police, couleurs, espacements, ordre des sections en glisser-déposer), position de la photo et de la signature ajustable au pixel près — stockée en ratio portable, pas en coordonnées écran brutes, pour un rendu identique à l'écran et dans le PDF exporté.

02

Recherche d'emploi multi-sources

France Travail et La Bonne Alternance fusionnés en une seule recherche, dédoublonnés côté serveur. Trois vues (Kanban, liste, swipe), un score de compatibilité local par rapport au profil, favoris et une corbeille qui ne supprime jamais une offre en silence.

03

IA sous garde-fous

Chaque fonctionnalité IA est mesurée par un quota strict par forfait — fenêtre glissante heure/semaine pour le forfait par abonnement, une seule utilisation à vie par fonctionnalité pour le forfait à paiement unique. Jamais un pipeline sans limite qui transformerait un prix fixe en facture API incontrôlée.

04

Sécurité posée en base de données

Verrouillage de document, droit de suppression, changement de forfait : chaque règle est vérifiée par les règles de sécurité au niveau ligne (RLS) de Postgres, pas juste cachée dans l'interface. Une vraie faille d'auto-passage en forfait payant a été trouvée et corrigée de cette façon, en cours de route.

Le moteur IA

Deux fournisseurs au choix (Anthropic Claude, Google Gemini), et une règle stricte sur tous les prompts : ne jamais inventer un fait absent de la source. Chaque texte écrit par l'IA — une lettre de motivation, une accroche de CV, une ligne d'expérience reformulée — est accompagné d'un encart « Pourquoi ces phrases ? » qui cite précisément sa source — l'offre ciblée, ou le propre profil de l'utilisateur.

Le résultat

Un PDF propre (react-pdf), une position libre de la photo et de la signature qui survit du prévisualisation à l'écran jusqu'à l'export final, et un lien public en lecture seule pour partager un CV sans que le destinataire ait besoin d'un compte.

Détail d'exécution

Connexion par code à usage unique envoyé par email plutôt qu'un mot de passe — un seul écran gère connexion et inscription. La consommation IA est suivie par fonctionnalité et réaffichée à l'utilisateur (X/Y cette heure, cette semaine, ou ce crédit à vie selon le forfait) plutôt que de rester invisible jusqu'à une erreur sèche.

Ce que je documente aussi
OUVERTPaiement réel pas encore branché — les changements de forfait passent par une demande email manuelle en attendant Stripe (ou équivalent).
OUVERTLa couverture "Stage" est faible sur les deux API sources — aucune n'a de code de contrat dédié, la recherche se replie donc sur un mot-clé avec un avertissement visible plutôt qu'une fausse précision.