Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Argus

Système de prospection automatisée qui audite silencieusement chaque prospect avant de générer un email ancré sur un fait vérifié, pas sur une formule générique.

Troisième itération d'un système de prospection construit chez Tol Product Lab, après deux versions précédentes qui reposaient sur le crawl du site prospect et l'analyse de son code source par un modèle IA. Argus remplace cette étape par un appel gratuit à l'API PageSpeed de Google.

Ce dépôt documente l'architecture et le fonctionnement du système. Les workflows n8n eux-mêmes ne sont pas publiés ici.

  • Fiche projet complète — contexte, décisions d'architecture, résultat d'un run test
  • Article de build — pourquoi le crawl IA a été abandonné, ce que ça a changé, le piège rencontré en production

Architecture générale

Le système est découpé en trois workflows n8n indépendants, chacun avec sa propre responsabilité et son propre déclencheur :

Workflow Rôle Déclencheur
Lead Generator Collecte, dédoublonnage, audit, génération des emails Formulaire n8n, à la demande
Mail Sender Envoi programmé des emails J0 et J5 Cron n8n
Deliverability Cron Suivi des réponses et mise à jour du statut des prospects Cron n8n

Cette séparation permet de relancer une collecte de prospects sans jamais interférer avec les envois en cours, et de faire tourner le suivi de délivrabilité indépendamment du reste.


Modèle de données

Trois feuilles Google Sheets structurent l'ensemble du système.

Configuration

Une seule ligne, relue à chaque exécution de Mail Sender.

Colonne Rôle
sender_name Nom utilisé en signature dans chaque email envoyé
sender_activity Activité de l'expéditeur, utilisée dans le prompt de génération
tone Ton imposé à l'ensemble des emails générés (ex. tutoiement professionnel)
performance_threshold Seuil en dessous duquel un score de performance PageSpeed est jugé faible
seo_threshold Seuil en dessous duquel un score SEO PageSpeed est jugé faible
service-seo, service-devweb, service-refonte Description libre du service correspondant à chaque problème détectable, utilisée pour l'email J5
sending-now, sending-after Deux créneaux horaires quotidiens (HH:MM) auxquels Mail Sender est autorisé à envoyer

Prospects

La base active, une ligne par entreprise qualifiée avec email.

Colonne Rôle
title, website, phone, email, city Identité et coordonnées du prospect
searchString Recherche Google Maps d'origine
reviewsCount, googleNote Nombre d'avis et note Google, quand disponibles
seo_score, performance_score, LCP Résultat brut de l'audit PageSpeed
subject Objet de l'email, généré une fois pour la séquence
j0, j5 Contenu généré des deux emails de la séquence
j0_date, j5_date Date d'envoi effective (J0) ou date cible (J5), au format ISO
sending_log Marqueur d'étape (ex. j0:sended) utilisé pour piloter le passage au J5
status Statut de délivrabilité (SENT, FINISHED, ou statut Gmail brut en cas de rebond)
messageId, threadId Identifiants Gmail du message et du thread, utilisés par Deliverability Cron

Reserve

Les entreprises identifiées sans email public. Colonnes volontairement réduites, aucune donnée liée à l'envoi n'y figure jamais.

Colonne Rôle
title, website, phone, city Identité et coordonnées connues
searchString Recherche Google Maps d'origine
reviewsCount, googleNote Note Google et nombre d'avis, quand disponibles

Workflow 1 : Lead Generator

Point d'entrée du système, déclenché manuellement via un formulaire n8n (mots-clés, ville, limite de résultats).

Canvas n8n du workflow Lead Generator Vue d'ensemble du workflow : collecte Apify, dédoublonnage, audit PageSpeed, génération des emails.

  1. Collecte — un acteur Apify (Google Maps Scraper) recherche les entreprises correspondant aux critères et retourne, en un seul appel, identité, contact, note Google et nombre d'avis.
  2. Extraction de l'email — le meilleur email disponible est choisi, en excluant les adresses génériques (info@, contact@, no-reply@, etc.) quand une alternative existe.
  3. Dédoublonnage — chaque résultat est comparé aux bases Prospects et Reserve existantes. Toute entreprise déjà connue, contactée ou non, est ignorée.
  4. Tri par email — sans email, l'entreprise est écrite dans Reserve et sort du pipeline. Avec email, elle continue vers l'audit.
  5. Audit PageSpeed — pour chaque prospect avec un site, un appel à l'API PageSpeed Insights retourne les scores de performance, de SEO et le LCP. Un délai de 5 secondes est appliqué entre chaque appel pour rester sous les limites de requêtes de l'API.
  6. Détection du problème dominant — les scores sont comparés aux seuils définis dans Configuration (performance_threshold, seo_threshold) pour déterminer un problème unique parmi trois : pas de site, site lent, site mal référencé.
  7. Génération des emails — un appel à Google Gemini (node Basic LLM Chain) génère le contenu des emails J0 et J5 à partir du problème détecté, du ton configuré, de la note Google et du nombre d'avis quand ils existent. La date cible du J5 (aujourd'hui + 5 jours) est calculée à cette étape.

Exemple de sortie réelle, générée par le modèle gratuit configuré par défaut (Google Gemini), sans retouche manuelle sur le texte :

Objet : Vitesse de chargement de [Cabinet comptable], Lyon

J0 : [Cabinet comptable] bénéficie d'une excellente image à Lyon avec une note de 4.8 sur 361 avis clients. Cette réputation solide contraste toutefois avec l'expérience technique actuelle de votre site web. Lors d'un test récent, j'ai constaté qu'il faut 36.3 secondes pour que le contenu principal s'affiche à l'écran. Ce délai semble en décalage avec le professionnalisme que reflètent vos témoignages clients. Avez-vous déjà eu des retours de vos visiteurs concernant la fluidité de navigation sur votre interface ?

J5 : Je reviens vers vous car un temps de chargement de 36.3 secondes pénalise directement votre référencement et vos chances de convertir de nouveaux prospects à Lyon. [...]

Cette génération vient de Google Gemini, un modèle gratuit. Aucune retouche manuelle sur le texte.

  1. Écriture — le résultat complet (contenu, sujet, dates, scores) est écrit dans Prospects.

Workflow 2 : Mail Sender

Déclenché par un cron n8n, indépendant de la collecte.

Canvas n8n du workflow Mail Sender Vérification du créneau, sélection J0/J5, envoi séquentiel et journalisation.

  1. Vérification du créneau — l'heure actuelle est comparée aux colonnes sending-* de Configuration. Le workflow s'arrête immédiatement si l'heure ne correspond à aucun créneau autorisé.
  2. Sélection des envois du jour — deux lots sont constitués séparément :
    • J0 : prospects sans j0_date, sans sending_log, sans messageId, limités à 10 par exécution
    • J5 : prospects dont le sending_log vaut j0:sended, dont j5_date correspond à aujourd'hui, et dont le status est toujours SENT (donc sans rebond ni désabonnement entre-temps)
  3. Envoi séquentiel — chaque lot est traité en boucle, un email à la fois, avec un temps d'attente entre chaque envoi Gmail pour limiter le débit.
  4. Composition du message — le corps de l'email correspond au contenu j0 ou j5 du prospect, selon le lot en cours, suivi de la signature sender_name.
  5. Journalisation — après envoi, messageId, threadId, le statut Gmail et la date d'envoi (j0_date ou j5_date) sont réécrits dans Prospects, et sending_log passe à j0:sended ou j5:sended.

Le plafond de 10 envois par lot et la vérification de créneau horaire limitent volontairement le débit d'envoi, plutôt que d'envoyer tout le volume disponible d'un coup.

Workflow 3 : Deliverability Cron

Déclenché par un cron n8n séparé, sur les prospects au statut SENT.

Canvas n8n du workflow Deliverability Cron Lecture des threads Gmail et mise à jour du statut de délivrabilité.

  1. Lecture — récupération de tous les prospects Prospects dont le status vaut SENT.
  2. Vérification du thread — pour chaque prospect, le thread Gmail correspondant (threadId) est relu.
  3. Détermination du statut — si le thread contient plus d'un message, une réponse a été reçue et le statut passe à FINISHED. Sinon, le statut reste SENT.
  4. Écriture — le nouveau statut est réécrit dans Prospects.

Ce workflow ne gère pas explicitement les rebonds et désabonnements dans la version documentée ici. La logique de coupure de séquence sur status différent de SENT est appliquée en amont, dans la sélection J5 du Mail Sender : un statut modifié entre le J0 et la date cible du J5 exclut automatiquement le prospect du second envoi.


Résultat d'un run réel

Recherche d'agences immobilières à Lyon, France, limite de 20 résultats. Chiffre d'un run isolé, pas une moyenne mesurée dans le temps.

Extrait de la base Prospects après un run de collecte 12 prospects qualifiés avec email, sur 20 entreprises trouvées. Emails et téléphones masqués.

  • 20 prospects trouvés
  • 12 qualifiés avec email, entrés en circuit d'envoi
  • 8 sans email, déposés en base Réserve
  • 24m 48s de traitement total, de la recherche à la génération des emails

Ce que ce système ne fait pas

  • Pas de troisième email de relance
  • Pas de contact par SMS
  • Pas d'analyse du contenu du site au-delà des scores PageSpeed
  • La note Google et le nombre d'avis ne servent qu'à enrichir le copy du J0, jamais à prioriser ou scorer les prospects entre eux

Auteur

Eyitola Sagbohan — AI Automation Engineer, Product Developer, Indie Hacker. Tol Product Lab conçoit des systèmes d'automatisation et des produits digitaux pour les marchés francophones.

About

Système de prospection n8n qui audite silencieusement chaque prospect via l'API PageSpeed gratuite de Google, puis génère une séquence email ancrée sur un fait vérifié. Documentation d'architecture, workflows non publiés.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors