Extraire les action items d'une réunion avec l'IA en 48h

Résumé

Extraire action items d'une réunion IA-powered n'est pas complexe : prend un transcript en texte brut, sort une liste {task, owner, due_date, confidence}. Pipeline minimal sur deux jours. Le vrai défi : trouver 20 utilisateurs pour ta version au lieu des 5 outils payants qui se battent déjà sur le créneau.

Bureau sombre la nuit avec un laptop code editor qui brille et la skyline de Southeast Asia floue par la fenêtre

22h, terminal clignotant, une vraie question : qu'est-ce qu'on construit ? Extraire action items réunion IA n'est pas un fantasme. C'est un extracteur d'action items à base d'IA, c'est un projet faisable un weekend. Un transcript, une pile de notes en vrac, et la machine rend une liste propre : qui fait quoi, avant quand. Le code c'est quelques heures de glue API. La question plus dure : tu trouves 20 utilisateurs pour ta version contre les cinq outils payants déjà sur le créneau ?

Ce qu'on entend vraiment par « action items », comme cible de build

Oublie le buzzword. La tâche est étroite : prends du texte non structuré (un transcript, une note vocale passée en texte, des messages Slack en vrac) et sors une liste de {task, owner, due_date, confidence}. Point. Pas de résumé automag, pas d'analyse de sentiment, pas de dashboard. De l'extraction pure dans une forme que ta TODO app peut avaler.

Ce qui change la scope : une « solution d'IA pour réunions » c'est six mois de travail avec transcription en temps réel, sync calendrier, une équipe UI qui va se battre. Extraire des action items c'est une prompt, un schéma JSON, et un endroit où mettre le résultat. Livrable avant que ton café refroidisse.

L'input n'a pas besoin d'être une réunion. Le même schéma sort les engagements d'une thread standup Slack, d'une file de tickets support, d'une note vocale du client qui raconte sa vie. Les réunions c'est la cible évidente parce que les transcripts existent déjà. Ça m'empêche qu'il y ait d'autres marchés.

Le stack qui te met de transcript à liste de tâches en 48h

Voilà le pipeline complet pour une v0 :

1. Input : copie-colle de transcript ou upload .txt / .vtt (pas d'audio live pour v0)
2. LLM : structured output, JSON schema forcé
3. Stockage : table Supabase ou même fichier JSON en v0
4. Output : checklist markdown + webhook optionnel vers Linear/Notion

La prompt d'extraction c'est la seule partie qui exige vraiment de l'itération. Quelque chose comme ça te met à 80% :

Extrais les action items du transcript ci-dessous.
Retourne un array JSON : [{task, owner, due_date, confidence}]
Règles :
- owner = nom mentionné, ou "à assigner"
- due_date = date explicite seulement, sinon null
- écarte les affirmations molles ("on devrait réfléchir à X")
- confidence : 0-1, selon le degré d'engagement réel

Wei-Chen Liao, qui bosse sur les systèmes de recommandation chez Appier à Taipei, le dit bien après un side project similaire : « la qualité d'extraction plafonne à la qualité du transcript, pas celle du model. Passe ton premier weekend à nettoyer l'input, pas à swapper de models ».

Le coût à l'échelle indie frôle zéro. Un transcript d'une heure traverse entre 8 000 et 12 000 tokens pour un appel structured-output. Aux tarifs actuels c'est une fraction de centime par réunion. Le vrai coût c'est la transcription si tu ne pars pas d'un texte déjà exporté.

Résiste à l'envie d'utiliser le model le plus gros. Un model petit, rapide, avec un JSON schema forcé et quelques exemples few-shot sort une extraction qui approche la précision d'un flagship model, avec une fraction de la latence et du coût. Garde le budget du plus gros model pour les cas où confidence revient faible et tu veux une deuxième passe, pas pour chaque appel.

Où le marché vit réellement, et ce n'est pas désert

Avant de coder, sais ce qui t'attend. Une teardown des outils d'extraction d'action items met les tarifs par personne entre 4 et environ 40 euros par mois, clivés en deux camps : extraction seule (notes propres, zéro routing) et full-loop (ticket créé dans Jira, Linear ou Asana avant que l'appel finisse).

Ce clivage c'est la partie utile. Le milieu engorgé c'est extraction-only : notes propres, pas de routing. Les outils qui automat le dernier kilomètre (créer le ticket) sont rares et affichent un prix plus élevé. Si tu scopes une v1, c'est ton coin : personne ne veut un résumé de plus. Ils veulent que le task existe quelque part quand l'appel ferme.

TicNote c'est un bon point de repère ici, pas parce que tu devrais le recommander à la place de coder, mais parce qu'il montre ce que « assez bon pour facturer » ressemble quand c'est petit : ça génère de vrais fichiers, pas juste un résumé balancé dans une fenêtre chat. C'est la barre.

Valide avant de polir la prompt au-delà de ce que quelqu'un demande vraiment. Balance ta v0 sur deux ou trois communautés de freelances ou indie hackers, offre de la lancer sur un vrai appel gratuitement, et regarde ce qu'ils font du résultat. Si personne ne t'envoie un transcript dans la semaine qui suit ta demande, c'est le signal pour changer de niche, pas de model.

Oublie le bot de réunion temps réel. Code la version async d'abord

Chaque tutoriel que tu vas trouver assume que tu codes un bot qui rentre dans l'appel live, écoute, et post sur Slack en direct. Passe ton chemin. Temps réel c'est du streaming audio, de la diarisation (pouvoir dire qui parle), un bot qui reste dans l'appel sans lag. Ça n'est pas un weekend. C'est le truc qui tue les side projects à la semaine trois.

La version async c'est la même logique moins les trucs durs : quelqu'un copie-colle un transcript (issu du built-in Zoom, d'Otter, d'un run Whisper sur un enregistrement) et récupère une liste de tâches en 30 secondes. C'est moins flash en démo vidéo. C'est aussi la version que tu peux réellement finir.

Il existe déjà un template n8n qui combine AssemblyAI et GPT-4 vers Google Sheets pour exactement ça. Ça vaut le coup d'étudier avant de toucher du code, et ça vaut le coup d'ignorer comme produit final : tout va dans un tableur, qui s'effondre au-delà de quelques douzaines de lignes et ne te donne rien sur quoi facturer.

Flat lay of a laptop, iced coffee, and a handwritten task list notebook on a Bangkok co-working desk

Ce qu'un freelance à Bangkok veut que Jira n'offre pas

La version générique du truc c'est fait pour les équipes dans Jira ou Linear déjà. C'est un couloir engorgé et bien financé. La tranche mal servie c'est les consultants solo et les freelances, le type de personne que Napat Charoenwong écrit en tournant son studio à Bangkok, qui prend cinq appels client par semaine et n'a pas ou ne veut pas d'outil de PM du tout.

Pour cette personne, le win ce n'est pas le routing de ticket. C'est une liste de tâches qui débarque dans WhatsApp ou email après l'appel, étiquetée par client, avec zéro config à faire. Trois appels client bruts par semaine ça vaut mille sièges enterprise que tu fermeras jamais comme solo dev sans équipe sales.

C'est une vraie décision de scope, pas un nice-to-have : choisis un canal de livraison (digeste email c'est le moins cher à coder) et une seule persona étroite (freelances, coachs, consultants, quiconque facture à l'appel) avant de toucher à une deuxième intégration.

L'économie marche différemment selon les régions aussi. Un outil à 9 euros par mois ça semble trivial du point de vue US et ça ressemble à une facture réelle à Manille ou Bangkok, où le même freelance gagne assez par heure pour que le temps admin perdu c'est vraiment quelque chose. Fixe le prix sur la valeur de l'heure que tu économises, pas sur ce qu'une SaaS de la Silicon Valley affiche.

Close-up of hands typing on a laptop during a video call with sticky notes covered in handwritten task scribbles nearby

Pourquoi la version no-code plafonne avant la version payante

La route n8n-et-spreadsheet c'est le bon point de départ, mais elle a un plafond : des rate limits sur l'API transcription, un spreadsheet qui devient illisible au-delà de quelques douzaines de lignes, et aucun endroit pour mettre une login ou un abonnement. C'est un prototype, pas un produit.

Le move une fois que tu valides la demande : remplace le spreadsheet par une vraie table (Supabase ça marche bien à cette échelle), ajoute une auth, et mets un prix dessus. Tu n'as pas besoin de réécrire la logique d'extraction. Tu as besoin de ne plus stocker l'état dans un endroit où personne ne peut te payer.

Vaut de noter avant de s'enfoncer dans le pipeline : une audio de merde produit un transcript de merde, et un transcript de merde produit des action items de merde peu importe combien bien ta prompt est. Si tes utilisateurs cibles sont sur des appels pourris (mauvais wifi, bruit de fond, anglais avec accent à travers une team distribuée), une étape de cleanup audio genre Krisp en amont de la transcription te fera gagner plus de debug que de tuner la prompt d'extraction.

Tu factorises ou tu intègres ailleurs ?

Passe si tu espères que ça devient une SaaS standalone avec des chiffres venture. La catégorie affiche des prix bas (4 à 10 euros par personne c'est le plancher réaliste une fois que tu concurrence sur prix) et les géants ont déjà calendrier sync, apps mobiles, équipes sales. Un solo dev ne gagne pas ça de front.

Ça vaut le coup de coder si tu le traites comme une feature, pas comme une boîte : colle-le à une pratique de consulting comme valeur ajoutée, ship-le à 9 euros par mois pour une seule niche étroite que tu comprends déjà, ou utilise-le comme le cœur technique d'une portfolio piece qui te branche du freelance LLM integration work. Les trois sont des résultats réalistes pour un build weekend. « Battre Otter.ai » ce n'est pas le cas.

Si l'outil d'extraction c'est une pièce d'un toolkit plus gros que tu assembles pour tes clients, quelque chose comme Skywork ça vaut le coup de checker pour les livrables autour : le doc résumé client ou le one-pager que tu construirais d'habitude à la main autour de la liste brute de tâches.

Over-the-shoulder view of a developer at night looking at a terminal with log output and a blurred task list app on a second monitor

Ce qu'on shippe réellement en premier

Une single page app : copie-colle un transcript, reçois une checklist, exporte en email ou copie en markdown. Pas de login en v0. Pas d'intégrations. Teste-le sur tes propres appels deux semaines avant de le montrer à quelqu'un, parce que la prompt d'extraction a besoin de vrais transcripts pour se casser dessus, pas de données test que tu as écrit toi-même.

Si ça survit tes propres appels sans louper un engagement évident, mets-le devant cinq freelances ou consultants que tu connais vraiment. Pas un post Reddit, pas un Product Hunt launch. Cinq personnes dont tu peux regarder les appels quand le résultat foire. C'est le programme complet du premier mois.

Que besoindraient tes dix premiers transcripts que le truc ne couvre pas encore ?

Questions fréquentes

Par où je commence si j'ai jamais codé d'extracteur de données avant ?
Commence par la version la plus simple : cale ta logique dans une fonction qui prend une string et sort du JSON. Utilise une bibliothèque comme Pydantic (Python) ou Zod (TypeScript) pour forcer la structure. Une fois que ça marche sur trois transcripts manuels, ajoute l'UI web. Ne fais pas le contraire.
Combien ça coûte vraiment en tokens API pour 100 réunions par mois ?
À ~10 000 tokens par heure, 100 réunions de 1h = 1 million de tokens. Avec GPT-4 mini ou Claude 3 Haiku c'est environ 20 à 40 euros par mois. Le coût de transcription (si tu n'utilises pas Zoom export) peut être 2 ou 3 fois plus élevé.
Et si mon utilisateur me donne un audio pourri avec plein de bruit ?
C'est la limite hard du projet : une extraction IA sort ce qu'elle voit dans le texte. Un transcript de merde sort des action items de merde peu importe la prompt. Ajoute Krisp ou un autre noise gate AVANT transcription. Ça coûte ~3 euros par heure.
Dois-je vraiment éviter la transcription temps réel pour v0 ?
Oui. Temps réel = websocket, diarisation, buffer circulaire, gestion des lag réseau. C'est cinq fois plus de code. Async (quelqu'un passe un transcript) = une API endpoint. Grave la async d'abord, swap après si la demande existe.
Comment je sachève que mon extracteur ne hallucine pas des action items qui n'existent pas ?
Demande à l'LLM une confiance score pour chaque item et affiche-le. Les items avec confidence < 0.6 ? Montre-les mais marque-les en gris. L'utilisateur peut les valider. Zéro hallucination n'existe pas, mais 'hallucination basse confiance' c'est transparent pour l'utilisateur.
Peut-je intégrer ça directement dans Slack ou Notion sans que ça devienne un projet d'un mois ?
Slack API c'est une fonction webhook simple. Notion API aussi. Mais codé à la main ça casse au premier changement d'API. Utilise n8n ou Zapier pour la v1, on-premise seulement si tu as 100+ utilisateurs.
Quel prix je dois afficher pour ça si c'est mon seul feature ?
Regarde ce qu'économise une heure de travail admin, non ce que la concurrence affiche. Un freelance à 50 euros/h qui gagne 30 min par semaine, c'est 65 euros/mois d'économie. Facture 12 euros/mois, tu as une affaire. Facture 49, tu es juste un outil commodity de plus.
Comment je trouve mon premier utilisateur payant si ça part de zero ?
Pas de Product Hunt. Pas de Twitter thread. Une DM à un freelance ou un consultant que tu connais : 'j'ai construit un truc, ça prend un transcript et sort une liste de tâches, t'es intéressé pour le tester ?'. Zéro marketing, zéro pitch. Juste du vrai.