Aller au contenu
En ligne 2026 Projet personnel SEO Full-stack SaaS

Profilia

Dix tests de personnalité en cinq langues, et un outil de mesure pour savoir ce qui marche vraiment.

Aperçu de Profilia

Le contexte

Profilia est un projet personnel que j’ai lancé pour éprouver une hypothèse simple à formuler, beaucoup plus difficile à exécuter : est-ce qu’en empilant dix tests de personnalité reconnus, plusieurs langues, et plusieurs dizaines d’articles de fond par thème, on peut construire un actif SEO qui se capitalise tout seul, mois après mois ?

La réponse est oui, mais elle n’est pas arrivée par le chemin que j’avais prévu. Le trafic monte, il accélère même, sauf qu’il ne vient pas de Google. Google explore le site, l’indexe, et le laisse en cinquième page de résultats. Ce sont Bing, DuckDuckGo, Ecosia et les assistants IA qui l’ont trouvé et qui le classent en première page.

Je ne l’ai pas su en le devinant. Je l’ai su parce que j’ai construit l’outil de mesure qui me le disait.

Le défi

Plusieurs contraintes à tenir en même temps :

  • Multilinguisme réel : français, anglais, portugais brésilien, portugais européen et espagnol, sur les tests, les profils, le blog et l’interface, sans duplication de contenu ni pénalité de référencement.
  • Volume de contenu maîtrisé : environ 85 articles publiés par langue, soit plus de 400 au total, rédigés avec un véritable angle éditorial et pas du texte automatisé à faible valeur.
  • Parcours de quiz fluide : dix tests de 15 à 30 questions, chargement rapide, résultat consultable sans avoir à créer de compte.
  • Profil ADN synthétique : croiser les résultats de plusieurs tests pour générer un méta-profil, sans jamais faire sortir du navigateur des données de personnalité que l’utilisateur n’a pas explicitement choisi de partager.
  • Une mesure à laquelle je peux me fier : un quart du trafic entrant est robotique. Sans un moyen de séparer les humains des machines, tous les taux affichés sont faux et les décisions produit qui en découlent le sont aussi.

Ce que j’ai fait

Produit

  • Conception des dix tests : DISC, RIASEC, Jung, Tempéraments, Chronotype, VARK, Langages de l’amour, Quatre Tendances, Styles de leadership, Animal totem.
  • Système de profils par test (de 4 à 16 profils selon le test), chacun avec sa fiche dédiée, son image de partage générée dynamiquement et son maillage vers les articles pertinents.
  • ADN personnalité : méta-profil qui se débloque à partir de trois tests complétés et s’enrichit à chaque nouveau test. Il est calculé et affiché directement dans le navigateur ; il n’est enregistré sur le serveur que si l’utilisateur demande à le partager, et il est purgé au bout de trente jours.
  • Comparaison à deux : deux personnes passent le même test et confrontent leurs résultats via un lien partagé.
  • Mode anonyme par défaut pour abaisser la barrière à l’entrée, avec une connexion Google optionnelle proposée après le résultat pour qui veut conserver ses tests.

Tech

  • Pile technique Laravel 13, PHP 8.4, Blade et Alpine.js, base PostgreSQL 16, rendu côté serveur natif : chaque page de résultat ou d’article arrive indexable, sans conteneur Node intermédiaire.
  • Les dix tests sont décrits dans des fichiers de configuration PHP, pas en base de données : questions, scoring, profils, SEO et FAQ au même endroit, versionnés avec le code. Le calcul du score, lui, tourne côté navigateur pour que le résultat s’affiche instantanément. Pour éviter que les deux versions divergent en silence, l’intégration continue régénère les cas de test JavaScript depuis les configurations PHP et casse le build si le moindre écart apparaît.
  • Internationalisation paramétrique : ajouter une langue, c’est déposer les fichiers de contenu et ajouter une ligne de configuration. Aucune structure à modifier. C’est ce qui a permis de passer d’une langue à cinq en quatre mois.
  • 937 tests Pest côté serveur avec une couverture minimale de 80 % imposée à chaque pull request, environ 187 tests unitaires côté navigateur, et une suite Playwright qui rejoue les parcours réels (passer un test, comparer, se connecter) sur Chrome et sur mobile.
  • Image Docker multi-étapes construite par l’intégration continue et publiée sur un registre privé ; le serveur ne compile plus rien. Un seul make deploy enchaîne récupération de l’image, sauvegarde de la base, redémarrage, vérification de santé, purge du cache Cloudflare et notification aux moteurs via IndexNow.
  • Sentry côté serveur et côté navigateur, pour détecter les régressions en production avant qu’elles ne remontent dans les chiffres.

Growth & SEO

  • Module d’analyses maison : une commande unique qui sort en JSON l’entonnoir complet, les tendances, les profils, les canaux d’acquisition, la viralité des partages et douze règles d’alerte automatiques. C’est l’outil que j’interroge pour piloter le projet, et c’est de là que sortent tous les chiffres de cette page.
  • Séparation des humains et des robots : les visiteurs bruts sont gonflés d’un facteur quatre par des robots de centres de données. J’ai ajouté un filtrage au niveau du pare-feu Cloudflare et une notion de « démarrage qualifié » dans mes indicateurs. C’est moins flatteur en volume, et c’est la seule façon de savoir où j’en suis.
  • Contenu lisible par les IA : un fichier llms.txt par langue, un robots.txt qui adresse nommément une quinzaine de robots d’indexation IA, et des données structurées sur toutes les pages de profil. Les assistants représentent aujourd’hui 3 % des démarrages de test, avec des complétions réelles derrière.
  • Images de partage générées automatiquement pour les articles et les profils, produites par une seule commande.
  • Maillage interne dense entre blog, tests et profils, pensé autour des intentions de recherche et non des catégories internes.
  • Tableau de bord graphique sur l’administration pour suivre l’entonnoir : trafic organique, démarrage d’un test, complétion, création de compte.
Landing du test DISC avec 4 couleurs
Première question du test DISC
Page ADN personnalité : radar d'identité sur cinq dimensions, 6 tests sur 10 complétés
Listing du blog français, 85 articles
Article long format : RIASEC et recrutement

Stack et choix techniques

J’ai hésité à partir sur Next.js, puis j’ai choisi Laravel pour itérer rapidement sur l’administration, les files d’attente et les migrations, sans réinventer une API.

La première version du front tournait sur Inertia.js et React 19, avec un conteneur Node dédié pour le rendu côté serveur. C’était confortable à écrire, mais pour un site dont 95 % du trafic atterrit sur des pages de contenu statique (blog, profils, landings de tests), c’était surdimensionné : environ 190 Ko de JavaScript compressé à charger pour afficher un article.

Je suis donc revenu à Blade et Alpine.js : le serveur rend directement, Alpine ne prend la main que là où c’est nécessaire, c’est-à-dire le déroulé du quiz, le partage et l’ADN. Le poids du JavaScript a été divisé par trois à quatre selon les pages, il n’y a plus de conteneur Node en production, et il ne reste qu’un seul paradigme à maintenir.

PostgreSQL plutôt que MySQL pour les requêtes analytiques de l’administration, qui manipulent beaucoup de regroupements et de séries temporelles.

Le choix dont je suis le plus content n’est pas dans la pile technique, c’est d’avoir traité la mesure comme une fonctionnalité du produit et pas comme un tableau de bord qu’on regarde de temps en temps. Sans ça, je serais encore en train de croire que je fais du SEO pour Google.

Résultats

×15
Complétions en 4 mois
22 en mars, 335 en juin
93,6%
Taux de complétion
Hors robots. Standard du secteur : 30 à 50%
5
Langues en production
FR, EN, PT-BR, PT-PT, ES
762
Mots-clés positionnés
Sur Bing, en 1re page en moyenne

Les complétions de tests ont été multipliées par quinze entre mars et juin : 22, puis 44, puis 95, puis 335. Juillet est déjà au-dessus du rythme de juin. Chaque palier correspond à l’ouverture d’une nouvelle langue, ce qui est la validation la plus nette de l’hypothèse de départ.

Les personnes qui commencent un test le terminent : 93,6 % de complétion une fois les robots écartés, contre un standard du secteur situé entre 30 et 50 %. Elles passent en moyenne plus de sept minutes sur le site, et cette durée a augmenté à mesure que le trafic grossissait, alors qu’elle baisse d’ordinaire quand l’audience se dilue.

Côté acquisition, le constat est celui que je n’attendais pas. Sur les trois derniers mois, Bing a envoyé 295 visites pour 10 000 affichages, avec 762 mots-clés positionnés autour de la cinquième place. Sur la même période, Google en a envoyé 19, à une position moyenne de 52. Le site est jeune et n’a pas encore l’autorité de liens que Google exige ; les autres moteurs, eux, le classent déjà. Le trafic vient donc de Bing, de DuckDuckGo, d’Ecosia, de Yahoo, et des assistants IA. C’est un enseignement que je n’aurais jamais eu en me contentant de regarder la Search Console.

Enfin, les Core Web Vitals sont au vert sur des mesures réelles et pas sur un score de laboratoire : 1,46 s d’affichage du contenu principal, 168 ms de réactivité, 0,004 de stabilité visuelle, mesurés sur plus de deux mille visites.

Si la stratégie SEO à grande échelle vous intéresse et que vous voulez en discuter, écrivez-moi.