Blog › Construire avec l'IA

Construire avec l'IA

Trigger.dev avec Claude Code : un agent qui tourne seul

Trigger.dev est une solution open source qui exécute votre code en tâche de fond : selon un horaire défini ou lors d’un événement, avec des relances automatisées et un journal pour chaque lancement. Couplée à Claude Code, elle vous permet de fournir à un client un agent IA qui travaille chaque matin en votre absence, sans que vous ayez écrit la moindre ligne de code. Dans cette vidéo, je construis un agent de ce genre pour un courtier en assurance qui triait à la main ses appels d’offres publics, depuis la rédaction du premier prompt jusqu’au déploiement en production.

Trigger.dev, c’est quoi

Trigger.dev fait tourner des tâches écrites en TypeScript sur ses propres serveurs. Vous décrivez une tâche dans votre projet, vous la déployez, et Trigger.dev s’occupe du reste :

  • le déclenchement : un horaire (un cron, par exemple tous les jours à 7 h), un webhook ou un appel depuis votre application ;
  • les relances : si une exécution échoue, la tâche est relancée selon la règle que vous avez fixée, sans intervention ;
  • le suivi : chaque exécution (un « run ») apparaît dans le tableau de bord, étape par étape, avec ses logs ;
  • deux environnements : le développement sur votre machine, la production sur leurs serveurs. Une fois en production, votre ordinateur peut rester éteint.

Le projet est open source (licence Apache 2.0). Vous pouvez donc l’installer sur le serveur d’un client qui ne veut pas d’abonnement chez Trigger.dev. Au 27 octobre 2026, la version en cours est la v4 (4.8.1, publiée le 23 octobre).

Pourquoi Trigger.dev plutôt que n8n pour ce type d’agent

n8n reste le plus rapide pour une première automatisation : glisser-déposer, des centaines d’intégrations, un workflow qui tourne en moins d’une heure. Je l’explique dans le guide n8n et dans la comparaison Make vs n8n.

Quand le workflow grossit, je bute sur trois limites :

  1. La lisibilité. Trois semaines plus tard, vous rouvrez un workflow plein de branches et de cas particuliers, et vous ne comprenez plus ce que vous voyez.
  2. Le volume. Les performances baissent quand le nombre d’exécutions monte.
  3. La licence. n8n est sous licence « fair-code ». Construire et maintenir un workflow pour un client est libre. Revendre l’accès à une instance n8n hébergée chez vous et partagée par plusieurs clients demande une licence Embed, qui démarrait à 50 000 dollars par an au moment de la vidéo. Le contournement légal : installer n8n chez le client, sur son infrastructure.

Avec du code orchestré par Trigger.dev, le projet encaisse la complexité sans devenir illisible, et il se duplique client par client sans question de licence. Reste l’objection habituelle : il faut coder. Sauf que Claude Code écrit le code, et Composio gère les connexions à Gmail ou Slack.

Le cas client : la veille d’appels d’offres d’un courtier en assurance

Le besoin vient d’un de mes clients, un courtier en assurance. Chaque matin, son équipe reçoit des alertes d’appels d’offres publics, notamment de francemarches.com, déjà filtrées par mot-clé (« assurance ») et par région.

Le filtre ne suffit pas. Un appel d’offres pour l’aménagement paysager d’un carrefour remonte parce que le mot « assurance » apparaît quelque part dans le cahier des charges. Le jour où je filme, la recherche « assurance » en Île-de-France sur les avis de la veille donne 7 résultats : le premier est ce chantier paysager, le deuxième une souscription de contrat dommages-ouvrage pour un complexe sportif, le seul type d’avis qui intéresse le courtier. Lors d’un test de préparation, sur Paris seul, une autre journée avait remonté 14 avis : 3 relevaient vraiment de l’assurance.

Résultat : plusieurs heures de tri par semaine pour l’équipe, sur un travail qu’un agent IA sait faire.

Cartographier le workflow avant de toucher un outil

Avant d’ouvrir Claude Code, une question : que doit faire l’agent, étape par étape ? Trois sous-questions suffisent, et elles valent pour n’importe quel besoin client.

ÉtapeQuestionIciOutil
EntréeQuelles données arrivent ?Les appels d’offres publiés la veille sur francemarches.com, avec les bons filtresFirecrawl (scraping)
TransformationQue fait l’agent avec ?Il garde ceux qui correspondent à une vraie demande d’assuranceUn modèle via OpenRouter, dans une tâche Trigger.dev
SortieQui reçoit quoi, et quand ?Un e-mail et un message Slack récapitulatifs, chaque matin à 7 hComposio (Gmail, Slack)

Le déclencheur, un cron à 7 h, revient à Trigger.dev, qui orchestre l’ensemble.

Pourquoi Firecrawl : francemarches.com n’a pas d’API publique et se protège des robots. Un outil de scraping dédié passe cette protection et rend la page en Markdown, un format qu’un agent lit facilement. Pourquoi Composio : il stocke de façon sécurisée vos connexions à Gmail ou à Slack, et plus tard celles de vos clients.

Avec ce tableau, Claude Code sait ce qu’il doit construire. Je cartographie toujours avant de choisir un outil.

Préparer Claude Code : 5 installations

Sans cette préparation, Claude Code avance à l’aveugle et produit un résultat médiocre.

  1. Un terminal lisible. J’utilise Warp, gratuit. Votre terminal habituel fonctionne aussi.
  2. Claude Code en ligne de commande.
  3. Mon plugin Claude Mastery, gratuit sur GitHub, avec six skills dont /interroge, installé au niveau global pour être disponible dans tous vos dossiers.
  4. Context7, en mode CLI et skills. Il donne à Claude Code la documentation à jour de Trigger.dev, Composio, Firecrawl et OpenRouter. Sans lui, Claude Code travaille avec des informations datées et produit du code qui ne fonctionne pas. Je préfère un CLI à un MCP quand les deux existent : un MCP consomme beaucoup de contexte.
  5. Le MCP Trigger.dev. Ici, j’utilise le MCP, parce que le CLI de Trigger.dev donne moins de possibilités. C’est la connexion directe entre Claude Code et votre compte : il peut lancer une tâche, lire un run et déployer.

Le MCP s’installe depuis le dossier du projet :

bash
mkdir ao-assur && cd ao-assur
npx trigger.dev@latest install-mcp --client claude-code

Dans la vidéo, je l’autorise sur les environnements de développement et de production, et je l’installe en mode local, pour ce seul projet.

Ensuite, deux comptes gratuits :

  • Trigger.dev : l’offre gratuite donne 5 dollars de crédit d’usage par mois, 10 tâches planifiées et 20 exécutions simultanées (vérifié le 27 octobre 2026). Créez un projet, vide pour l’instant.
  • Composio : prenez l’espace « Platform », celui qui sert à construire une application (« For You » sert à brancher votre propre Claude Code à des outils). L’offre gratuite donne 100 000 appels d’outils par mois au 27 octobre 2026. Créez un projet.

Construire l’agent avec Claude Code

Le prompt, puis /interroge, puis le plan

Lancez claude dans le dossier, puis /mcp pour vérifier que Trigger.dev est connecté. À la première connexion, il apparaît déconnecté : sélectionnez-le, choisissez « Connect » et validez dans le navigateur.

Le prompt reprend la cartographie, en mots simples :

text
Je veux construire un agent autonome pour mon client, un courtier en assurance.
1. Récupère les appels d'offres publiés la veille sur francemarches.com
   (mot-clé assurance, Île-de-France, avis en cours). Exemple d'URL de recherche : <URL>
2. Analyse-les et garde uniquement ceux qui correspondent à une vraie demande d'assurance.
3. Envoie un récapitulatif par e-mail et sur Slack.
Lancement tous les jours à 7 h. Trigger.dev pour faire tourner l'agent,
Composio pour l'e-mail et Slack, Firecrawl pour le scraping.

Si vous avez la transcription du rendez-vous avec votre client ou un document qui décrit son besoin, donnez-les aussi. Plus Claude Code a d’éléments, mieux c’est.

Deux réglages avant d’envoyer :

  • Appelez /interroge. Le skill force Claude Code à vous poser ses questions une par une, avec sa recommandation pour chacune. Comptez 10 minutes de plus. En échange, vous êtes sûr à 80 ou 90 % qu’il part dans la bonne direction.
  • Passez en mode plan (Maj + Tab jusqu’à voir « plan mode »). Claude Code se contente de chercher et de lire, puis écrit un plan détaillé avant de toucher un fichier.

Les questions qui changent le résultat

Avant même la première question, Claude Code a testé le site, vu la protection anti-robots et confirmé que Firecrawl passerait mieux qu’un scraping direct. Puis il demande :

  • Sur quelle donnée juger un avis ? Je choisis la fiche détaillée de chaque appel d’offres : la page de résultats ne suffit pas pour distinguer une demande d’assurance d’un marché de travaux qui exige seulement une assurance décennale.
  • La veille ou le jour même ? La veille (J-1). Il propose aussi un rattrapage du week-end le lundi.
  • Que faire d’un avis où le modèle hésite ? Deux listes dans le rapport : les appels d’offres confirmés et ceux à vérifier.
  • Que faire un jour sans aucun avis retenu ? Envoyer quand même la notification.

Sans /interroge, Claude Code tranche ces points à votre place, ou n’y pense pas.

Relire le plan, changer de modèle, vider le contexte

Le plan récapitule les décisions et l’architecture. Vous n’avez pas à valider la technique ; vous devez comprendre les étapes pour corriger ce qui ne va pas.

Une correction dans mon cas : le plan prévoyait une clé API Anthropic pour la classification. Je demande OpenRouter à la place, avec le modèle choisi dans une variable de configuration. Passer d’un modèle Claude à un modèle Gemini devient un changement de réglage, pas de code. Je vérifie aussi que le plan prévoit une étape de vérification : tests unitaires, un scraping réel isolé, une notification isolée, puis un test de bout en bout en local.

Avant l’implémentation, je vide le contexte. J’affiche le nombre de tokens dans ma barre d’état : à 77 000, je suis encore dans ce que j’appelle la zone de génie ; au-delà de 100 000, on entre dans la zone floue où l’IA commence à halluciner. Donc :

  1. Échap pour sortir du plan, et copier le chemin du fichier du plan.
  2. /clear (ou Ctrl + L deux fois).
  3. Maj + Tab pour revenir en mode auto.
  4. « Exécute le plan », avec le chemin du fichier.

Claude Code appelle alors Context7 pour lire la documentation à jour, puis implémente seul. Dans la vidéo, il travaille une trentaine de minutes sans que j’intervienne, et ses tests unitaires passent.

Ce que Claude Code écrit pour le cron

Le déclenchement tient en quelques lignes. Une tâche planifiée Trigger.dev ressemble à ceci :

ts
import { schedules } from "@trigger.dev/sdk";

export const veilleAppelsOffres = schedules.task({
  id: "veille-appels-offres",
  cron: { pattern: "0 7 * * *", timezone: "Europe/Paris" },
  run: async () => {
    // scraping Firecrawl, classification OpenRouter, envoi Composio
  },
});

Attention au fuseau : sans lui, le cron est en UTC, et l’e-mail arriverait à 8 h ou 9 h selon la saison. Le plan de Claude Code le notait d’ailleurs : calculer J-1 en heure de Paris, pas en soustrayant 24 heures.

Les clés et les connexions

Claude Code prépare un fichier .env.example. En tapant ! dans Claude Code, vous passez en mode shell et lancez la copie sans quitter la session :

bash
cp .env.example .env

Puis vous remplissez .env :

  • la référence du projet Trigger.dev : dans le tableau de bord, Project settings ;
  • la clé Firecrawl : l’offre gratuite donne 1 000 crédits par mois, largement assez pour un rapport quotidien ;
  • la clé OpenRouter, après avoir chargé un peu de crédit, et le nom du modèle (je prends la dernière version de Claude Haiku) ;
  • la clé Composio, avec les droits de lecture et d’écriture ;
  • l’adresse qui reçoit le rapport : la vôtre pour les tests, celle du client ensuite.

Côté Composio, il reste à connecter les comptes : dans votre projet, « Auth config », créez une configuration Gmail puis « Connect account », et même chose pour Slack. Créez aussi le canal Slack qui recevra les messages. Pour une application à plusieurs clients, chaque client reçoit un lien, se connecte, et son compte rejoint Composio sans que vous voyiez son mot de passe.

Pendant ce temps, Claude Code a testé le scraping, trouvé un bug et l’a corrigé sans que je lui dise quoi que ce soit. Il envoie ensuite un e-mail et un message Slack de test pour valider les connexions.

Tester de bout en bout sur une vraie journée

Le « test de bout en bout » de Claude Code lançait les éléments un par un. Ce n’en est pas vraiment un. Je lui demande donc un vrai test, sur la journée d’hier, via Trigger.dev.

Mon contexte approche alors 300 000 tokens : je le vide de nouveau, et Claude Code relit le projet depuis le début plutôt que de continuer dans la zone floue.

Dans le tableau de bord Trigger.dev, onglet Runs, le run en cours s’affiche étape par étape : scraping, puis analyse de chaque avis, puis envois. Résultat : un e-mail avec deux appels d’offres, dont la souscription d’un contrat dommages-ouvrage pour le complexe sportif, chacun avec son lien vers l’avis complet. Sur Slack, le même avis apparaît en double : une étape de dédoublonnage à demander à Claude Code.

Déployer en production

En développement, une tâche planifiée ne se déclenche que pendant que le CLI tourne sur votre machine. Pour qu’elle tourne seule, il faut la déployer :

bash
npx trigger.dev deploy

Dans la vidéo, je le demande simplement à Claude Code : « Déploie le workflow sur l’environnement de production et indique-moi les configurations à faire de mon côté. » Il déploie par le MCP, puis prévient que le service ne fonctionne pas encore : les variables d’environnement manquent.

Côté Trigger.dev, en production, deux tâches apparaissent : la tâche planifiée (7 h chaque matin) et celle qui traite les résultats. Pour les variables :

  1. Environment variables, puis Add new, environnement Production.
  2. Collez tout le contenu de .env dans le premier champ : chaque variable se range à sa place.
  3. Retirez la référence du projet, inutile en production.
  4. Enregistrez.

Deux bonnes pratiques. Utilisez des clés différentes en développement et en production. Et saisissez ces clés vous-même : elles ne passent jamais par le MCP ni par le modèle.

Le lendemain à 7 h, l’e-mail et le message Slack partent seuls. Vous pouvez aussi demander à Claude Code de lancer tout de suite un run en production pour vérifier.

Les limites à connaître

  • Le scraping reste fragile. Si francemarches.com change sa page ou sa protection, le scraping casse. Quand une source a une API (le BOAMP en a une, ouverte), préférez-la.
  • Le modèle se trompe parfois. D’où la liste « à vérifier » : le client garde la main sur les cas ambigus.
  • Les coûts sont faibles, mais pas nuls. Crédits Trigger.dev, Firecrawl et OpenRouter : surveillez-les dès que vous multipliez les clients ou les sources.
  • Le contexte de Claude Code se surveille. Au-delà de 100 000 tokens, videz-le entre deux grandes étapes.
  • Il faut savoir lire un plan : les étapes, pas le code ligne à ligne. Si vous débutez, le guide Claude Code et le tuto GitHub passent avant.
Livrer

Ce que vous pouvez vendre avec ça

À qui : un cabinet de conseil, un courtier en assurance, un bureau d’études ou une entreprise du BTP de 5 à 50 salariés, qui répond à des marchés publics et dont l’équipe trie chaque matin des alertes trop larges. Le plus réceptif est celui qui reçoit déjà des notifications filtrées par mot-clé et qui se plaint du bruit.

Ce que vous livrez : un agent IA de veille qui, chaque nuit, collecte les avis parus la veille, consulte leur fiche complète, les trie entre « confirmés » et « à vérifier », puis transmet à 7 h un bilan par e-mail ainsi que sur Slack, incluant le lien de chaque avis. Le projet s’exécute sur un compte Trigger.dev au nom du client, ou bien sur son propre serveur étant donné que Trigger.dev est open source, en utilisant ses connexions Composio dédiées ainsi que ses clés de production. La construction filmée tient en une session : environ trente minutes d’implémentation autonome, suivies des tests et du déploiement.

Comment le présenter : « Votre équipe passe chaque semaine plusieurs heures à trier des appels d’offres qui contiennent le mot assurance sans en relever. Demain à 7 h, elle ne recevra que les avis qui vous concernent, avec le lien de chacun. » Pendant le rendez-vous, lancez la recherche du client sur une journée récente et montrez la différence entre la liste complète (7 avis le jour du tournage) et la sélection opérée par l’agent. En changeant les filtres et le critère de tri, le même agent se réplique pour un autre métier.

L'Accélérateur IA

Signez vos 3 premiers clients IA en 180 jours

Les inscriptions sont fermées. Rejoignez la liste d'attente : vous serez prévenu dès la prochaine ouverture.

Rejoindre la liste d'attente