Aller au contenu
Alex ALAVO

Étude de cas d'ingénierie · LinkedIn Data Flow

Construire un pipeline d'intelligence commerciale piloté par webhooks en Laravel

LinkedIn Data Flow orchestre le scraping, la validation IA, les vérifications de fraîcheur CRM, l'enrichissement des contacts, l'intelligence entreprise et la synchronisation HubSpot via des files d'attente et des webhooks.

Rôle
Architecture de pipeline, backend Laravel, interface Vue, orchestration de files d'attente, intégrations API, tests et déploiement.

Responsabilités du système

  • Pipeline de données
  • Intégration API
  • Automatisation

Technologies

  • Laravel
  • Vue
  • Apify
  • OpenAI
  • FullEnrich
  • Pappers
  • HubSpot
  • Queues

Preuves vérifiées

6 résultats vérifiés documentés ci-dessous.

Aperçu

Des volumes élevés de profils B2B nécessitaient un enrichissement sûr et maîtrisé en coût à travers plusieurs services externes, sans dupliquer les enregistrements CRM existants.

  • Traiter des volumes élevés de profils en toute sécurité.
  • Éviter les coûts d'enrichissement inutiles.
  • Empêcher les doublons dans le CRM.
  • Garder les services externes découplés.
  • Suivre chaque exécution et ses échecs.
  • Rendre le workflow maintenable sans orchestrateur séparé.

Le problème

L'enrichissement de leads B2B implique de nombreux services externes, des tâches longues, des limites de débit et des données dupliquées. Une implémentation séquentielle basée sur des requêtes serait fragile et difficile à exploiter.

Contraintes qui ont façonné le système

  • Les API externes terminent leur travail de façon asynchrone.
  • Limites de débit des fournisseurs et échecs partiels.
  • Les enregistrements CRM peuvent déjà être à jour.
  • Les profils nécessitent une validation avant enrichissement.
  • L'enrichissement entreprise dépend des étapes précédentes.
  • Le système doit se remettre des erreurs au niveau de chaque étape.

Architecture du système

La plateforme utilise les files d'attente Laravel et les callbacks webhook comme colonne vertébrale d'orchestration. Chaque étape porte une seule responsabilité, les lots de profils s'exécutent en parallèle et les événements de complétion externes reprennent le pipeline sans interrogation active.

Un pipeline piloté par événements, pas une chaîne de scripts fragiles.

Chaque étape a une responsabilité claire. Les services externes notifient la plateforme via des webhooks, les tâches en arrière-plan isolent le travail long, et la déduplication évite l'enrichissement inutile et le bruit dans le CRM.

Diagramme du pipeline LinkedIn Data Flow, huit étapes de Requête de recherche à Finalisation et rapport d'exécution, avec des frontières de webhook après Scraping Apify et après Enrichissement des contacts.

Étape 1 sur 8

Requête de recherche

Crée une exécution de recherche traçable et capture la configuration requise par le pipeline.

Entrée
Nouvelle requête de recherche
Sortie
Scraping Apify
Exécution
Commande synchrone suivie d'une exécution asynchrone.
Gestion des échecs
Une configuration de recherche invalide ou incomplète doit échouer avant que le travail externe ne démarre.

Préoccupations transverses

  • Files d'attente
  • Stratégie de réessai
  • Idempotence
  • Journalisation
  • Suivi des erreurs
  • Limitation de débit
  • Traitement par lot
  • Vérification des webhooks

Décisions d'ingénierie clés

Webhooks plutôt qu'interrogation active

Accepté

Les API externes terminent leur travail de façon asynchrone, et interroger répétitivement leur état de complétion ajouterait une surcharge d'exécution inutile.

Les fournisseurs externes notifient la plateforme lorsque le travail est terminé.

Pourquoi

  • Moins d'appels API inutiles.
  • Surcharge d'exécution réduite.
  • Limites d'événements claires.
  • Meilleure scalabilité.

Alternatives envisagées

  • Interroger répétitivement les fournisseurs sur leur statut de complétion

Traitement par lots

Accepté

Des volumes élevés de profils devaient être traités en toute sécurité sans croissance mémoire incontrôlée.

Traiter les profils par lots de 100 avec des requêtes de validation concurrentes.

Pourquoi

  • Utilisation mémoire maîtrisée.
  • Meilleur débit.
  • Limites de réessai plus simples.

Règle de fraîcheur CRM

Accepté

Les enregistrements CRM peuvent déjà être à jour, et les ré-enrichir gaspillerait du coût et ajouterait du bruit.

Ignorer les contacts récemment enrichis.

Pourquoi

  • Réduire le coût d'enrichissement.
  • Éviter le bruit dans le CRM.
  • Respecter la fraîcheur des contacts.

Points clés de l'implémentation

  • Recherche de profils propulsée par Apify.
  • Validation de profils assistée par IA.
  • Déduplication et vérifications de fraîcheur HubSpot.
  • Intégration d'enrichissement de contacts FullEnrich.
  • Intégration de données d'entreprise Pappers.
  • Synthèse d'intelligence entreprise assistée par IA.
  • Synchronisation HubSpot et finalisation des exécutions.

Qualité et exploitation

Exploitation

  • Traitement idempotent des webhooks.
  • Politiques de réessai spécifiques aux fournisseurs.
  • Vérification sécurisée des webhooks.
  • Suivi structuré de l'état d'exécution.
  • Persistance des erreurs par exécution.
  • Isolation des files d'attente entre étapes.
  • Sensibilité aux limites de débit par fournisseur.

Résultats et preuves

  • Fait d'implémentation

    Sept étapes de traitement, coordonnées via un flux opérationnel traçable en huit étapes

  • Fait d'implémentation

    Orchestration externe pilotée par webhooks

  • Métrique vérifiée

    Taille des lots de profils100

  • Fait d'implémentation

    Déduplication CRM multi-niveaux

  • Fait d'implémentation

    Protection de fraîcheur

    Ignore les contacts récemment enrichis

  • Fait d'implémentation

    Isolation des files d'attente entre les étapes du pipeline

Leçons tirées du système

  • Les intégrations asynchrones doivent être modélisées comme des événements et des états.
  • La maîtrise des coûts est une préoccupation architecturale.
  • Un pipeline a autant besoin de visibilité opérationnelle que de logique de transformation.