Alexandre Petit

Créer un générateur de recommandations LinkedIn

Temps de lecture : 12 min.

Hello !

Aujourd'hui, je vous partage mon aventure dans le développement d'un générateur de recommandation LinkedIn.

ça ressemble à ça à la fin ! ☝️

Au programme de cette édition :

C'est parti !

Introduction

Quoi !? Pourquoi ?

Début 2023, je reçois le message d'un ancien collègue. Il est en plein recrutement et me demande si je peux lui écrire une recommandation LinkedIn pour le supporter dans ce processus.

Je réponds : oui, pas de soucis !

J'y pense.

Je prends quelques notes.

Je veux que la recommandation soit top.

J'hésite.

Je laisse maturer.

Bref, ça traine ...

Mais déjà, c'est quoi une recommandation LinkedIn ?

Les recommandations LinkedIn sont une version moderne des lettres de recommandation, sauf qu'elles sont affichées en public sur ton profil LinkedIn.

Pourquoi écrire une recommandation LinkedIn ?

Pour la personne qui reçoit la recommandation

Pour la personne qui écrit, cela permet de

Pour l'analogie, c'est comme laisser un avis positif sur un lieu sur Maps : cela permet de supporter la personne et de lui donner de la crédibilité.

La difficulté

Écrire une recommandation présente de nombreux intérêts. Mais, écrire une recommandation pertinente est un exercice délicat, qui peut facilement prendre beaucoup de temps.

Au cours des 10 dernières années j'en ai écris deux.

C'est peu.

Pourtant, Je pense qu'elle sont plutôt réussies. Les personnes pour qui je les ai écrites en étaient très contentes, et cela m'a fait plaisir qu'elles soient touchées. Cependant, chacune m'a demandé plusieurs jours de maturation et j'ai procédé à plusieurs essais avant de trouver la forme qui me convenait. À chaque fois, cela m'a demandé beaucoup d'énergie.

C'est là que ChatGPT entre en jeu !

Le concept

Proposer un outil facilite la génération de recommandation LinkedIn

Exécution

Quelques recherches en amont

Comment écrire une bonne recommandation LinkedIn ?

En recoupant plusieurs articles sur le web et en ajoutant mon expérience personnelle, je dirais qu'une bonne recommandation LinkedIn :

Existe-t-il déjà des générateurs ?

En écumant le web, j'ai pu trouver les générateurs de recommandation LinkedIn suivants :

- Gener-IA-teur de Swile

- Social Recommendator : le générateur indie

- LinkedJetPack : alambiqué

- EasyPeasy

- Vanling : le générateur old school

- LogicBalls

- LazyApply

J'en ai tiré plusieurs observations :

Construire le produit

Mon objectif est d'aider les personnes à générer une recommandation LinkedIn.

La version la plus élémentaire de cet outil serait de partager le prompt que j'ai conçu. L'avantage est que cela permet de lancer très rapidement et de toucher un premier public. L'inconvénient, c'est qu'une fois le prompt partagé, il m'est difficile de suivre sa vie et de collecter du feedback utilisateur.

Une approche possible serait d'utiliser des outils NoCode ou de programmation visuelle comme Retool, Noodl ou encore Wized.

Ce projet étant aussi un prétexte pour que je déploie une application web, j'ai décidé d'aller directement vers un outil plus abouti et de créer un site dédié à cet unique fonctionnalité.

Le service que j'ai en tête présente la forme suivante :

1. Poser des questions à la personne

2. Construire un prompt à partir des réponses

3. Générer une recommandation avec GPT

4. Présenter la recommandation à l'utilisateur

Choisir la stack

De quoi ai-je besoin ?

Bon, quelles sont les options ?

Il existe une quantité étourdissante de langages front, back, de frameworks, de solution d'hébergement et de combinaison de tout cela. Pour simplifier ma décision, je vais me concentrer sur les langages JavaScript, Python et .NET que je connais déjà bien. Encore une fois, une bonne façon de procéder ici est de commencer par la fin : où est-ce qu'on va héberger tout ça ?

L'hébergement

Du plus bas niveau au plus haut, on en gros trouver les approches suivantes :

Parmis les PaaS, les 4 solutions suivantes me paraissent intéressantes :

Partons sur Firebase.

Langage et frameworks

Le fait de partir sur du "pur" Firebase va fortement orienter la suite.

Firebase a récemment introduit des templates dédiés à certains framework front-end. Cela facilite par exemple le setup d'applications basés sur Angular ou Next.js (React). J'ai déjà une expérience positive de React. Go pour ce framework.

De la même façon, Cloud Functions supporte trois langages : Javascript, Python ou TypeScript (Beta). J'ai d'abord pensé à utiliser TypeScript pour bénéficier du typage, mais la documentation pour TypeScript est bien moins détaillée. Finalement, je suis parti sur Python.

Il y a plusieurs intérêts à utiliser python pour le backend :

OK, on a notre stack !

Développer

Je ne vas pas entrer dans le détail pas à pas de comment créer une application avec Firebase — mais si c'est quelque chose qui t'intéresse, fais le moi savoir !

Un truc amusant à raconter ici c'est que, si, après coup, la fonction et le périmètre de chaque service me parait clair, j'étais dans le brouillard en abordant les services de Firebase. La première approche que j'ai eu a été d'avancer pas à pas, de faire avec les zones de flou et de suivre la documentation.

Il y a de nombreuses façons de monter une app.

Premier jet

En première approche, je suis parti de `npm create-next-app` et ai intégré Firebase à posteriori. J'ai utilisé TypeScript pour le backend et ai setup des tests automatisés avec jest ainsi qu'un système de formattage automatique avec Prettier.

Je me suis retrouvé avec une véritable usine à gaz.

L'organisation imbriquée du code source était source de confusion. Avec la transpilation, je n'étais pas bien sûr de quel code était exécuté où et à quel moment. Aussi, je rencontrais des problèmes avec la version déployée que je ne parvenais pas à comprendre.

Remise au propre et simplification

J'ai finalement remis de l'ordre en recréant l'architecture du projet de zéro. Cette fois-ci, j'ai utilisé uniquement les client firebase. Aussi, j'ai décidé de ne pas mettre en place de tests automatisés et ni de formatage automatique du code à ce stade.

Pour se faire, rien de plus simple.

1. Installer Node.js en utilisant nvm (Node Version Manager)

2. Installer le client Firebase à l'aide de npm (gestionnaire de paquets installé avec Node.js)

   npm install -g firebase-tools

3. Connecter sa machine à Firebase

   firebase login

4. Créer un dossier pour le projet et se placer à la racine du projet

mkdir writing-a-linkedin-reco
cd writing-a-linkedin-reco 

5. Utiliser le client Firebase pour créer l'architecture du projet et se laisser guider

   firebase init hosting
   firebase init functions

La question du formatage

Les outils de formatage automatique sont précieux lorsque la codebase est maintenue par de nombreuses personnes. Ils permettent d'uniformiser le style et donc de réduire la charge cognitive qu'implique de lire le code existant. Dans notre cas, je suis seul, il y a peu de code, et mon style est cohérent avec moi même. J'ai donc jugé qu'un formatter n'était pas nécessaire.

De plus, pour que ce type d'outil soit vraiment à ton service (et non l'inverse ...) il est indispensable d'aller au bout de la configuration. Configurer un hook de pre-commit par exemple permet de lancer le formatage de façon automatique avant chaque commit, ce qui assure que l'outil est exécuté à intervalle régulière sans que l'on ai à y penser. Lorsque l'outil est installé mais configuré à moitié, il représente finalement davantage une charge mentale puisqu'il faut penser à le lancer manuellement.

Designer le produit

Afin de designer l'application, j'ai utilisé les techniques suivantes :

Diffuser le produit

Les pistes de diffusions identifiées :

Exact match domain

En SEO, on parle d'"exact match domain" lorsque l'adresse de site web contient les mots clés des requêtes ciblées. Un vecteur sur lequel j'ai parié est qu'en choisissant le nom de domaine `ecrire-une-recommandation-linkedin.fr`, le site ressortirait naturellement des recherches google "Comment écrire une recommandation LinkedIn".

A posteriori, il s'avère cependant que "écrire une recommandation linkedin" correspond à un volume de recherche extrêmement faible :

Recherche de mots clés surSemrush- les volumes sont faibles !

🥴

Bilan

Leçons

Mobile first !

J'ai développé l'application sur desktop. Lorsque je demandais à mon entourage de tester pour faire des retours, il se produisait systématiquement la même chose : ils testaient sur mobile et des bugs d'affichages se présentaient.

De fait, en France, 65% du trafic provient des mobiles. Il semble donc logique d'optimiser l'affichage en premier lieu pour les mobiles.

Par ailleurs, il est plus simple d'adapter un design mobile vers un design desktop que l'inverse.

Donc, mobile first !

Just in time

Je réalise à quel points certains outils qui me paraissent indispensable lorsque l'on travaille en équipe ne le sont pas lorsque l'on travaille seul et sur un prototype. Ici, ma priorité est de délivrer le plus rapidement possible. Mettre en place proprement des outils de formatage automatique et de test automatisé demande un investissement que je n'ai pas trouvé nécessaire ici.

Side-project vs side-business

Je suis allé trop loin dans le développement du produit et dans le design de l'interface utilisateur pour un minimum viable product (MVP). Le fait de mélanger un objectif de création de valeur et de génération de revenus (business) avec un objectif d’apprentissage (project) me conduit à prendre des décisions qui n’ont pas de sens d’un point de vue économique.

D’un point de vue technique, j’ai pu mettre en pratique et apprendre. Mais d’un point de vue business, j’ai gâché énormément de ressources car j’aurais pu tester mes hypothèses plus rapidement.

Pour les prochains produits, je serai davantage focus sur la démarche économique.

Monétisation

Je ne pense pas que les gens soient prêt à payer pour accéder à ce service seul. Les coûts d'exploitation sont cependant relativement faible. S'il y a un product market fit, la piste du sponsoring me paraît la plus prometteuse.

Conclusion

Les premiers designs de prompt étaient catastrophiques, j'ai hésité un moment à laisser tomber. Mais je suis content du résultat final.

Écrire une recommandation permet de réaliser ce qu'il y a de bon chez l'autre. C'est comme une lettre d'amour. Alors écrivez des recommandations de vos anciens collègues, le liens est 👉 ici 👈 !

Merci de m’avoir lu jusqu’ici et à la prochaine !

🙂

Alexandre

Publié le

Une remarque ? Dis-moi 💙