Greg Gargiulo
M’écrire
Retour

Egg’Change.

Année : 2026

Un contact de salon enregistré en une photo et un mémo vocal

La liste des contacts du salon, la qualification d’un contact et la carte de visite numérique du commercial.

Fiche

Rôle
Conception et développement
Équipe
Seul, pour l’équipe commerciale de Circul’Egg
Période
Février à juin 2026
Statut
En service sur les salons depuis Vitafoods Europe 2026
Code
Privé
Captures
Version de démonstration compilée depuis le code, avec des contacts et des cartes de visite fictifs.

En bref

Une application mobile de prise de contacts, que j’ai conçue et développée seul pour que l’équipe commerciale de Circul’Egg aborde le salon Vitafoods Europe 2026 dans de bonnes conditions ; elle a servi depuis sur d’autres salons. Le commercial photographie la carte de visite, résume l’échange à voix haute et qualifie le contact ; la carte et le mémo sont lus par Gemini, puis la fiche part dans Airtable. Tout s’enregistre sans réseau, et la synchronisation ne crée jamais de doublon.

Point de départ

Sur un salon, un contact se résume souvent à une carte de visite et à quelques mots notés à la hâte. Le temps de rentrer, le contexte est perdu, et la fiche n’est saisie que des jours plus tard.

Contraintes

  • Un réseau de salon saturé : tout doit s’enregistrer hors ligne.
  • Des contacts qui s’enchaînent sur le stand : chaque fiche doit se remplir en quelques gestes.
  • Une même application pour le web, iOS et Android, alors que l’accès à la caméra et au micro diffère d’une plateforme à l’autre.
  • Aucun accès direct à Airtable depuis l’application : tout passe par le serveur.

Livrables

  • L’application Flutter, utilisable sur le web et compilable pour iOS et Android.
  • La lecture des cartes de visite par Gemini 2.5 Flash.
  • Les mémos vocaux, transcrits et rattachés au contact.
  • La qualification commerciale et la file de synchronisation hors ligne.
  • Une fonction serveur qui envoie les fiches vers Airtable et garantit qu’aucune n’y est créée deux fois.
  • Les comptes des commerciaux et leur carte de visite numérique publique.

Architecture

L’application enregistre chaque contact dans Hive, sur le téléphone, puis le synchronise vers Firestore et Firebase Storage. Gemini lit la carte et transcrit le mémo. Une Cloud Function en Node.js pousse les fiches vers Airtable : l’application n’appelle jamais Airtable directement.

L’enregistrement audio passe par une interface commune, avec une version pour le navigateur et une pour le mobile, choisie à la compilation. L’état de l’application est géré avec Riverpod.

Stack technique

Langages
  • Dart
  • JavaScript
Interface
  • Flutter
  • Riverpod
Serveur
  • Firebase Cloud Functions (Node.js)
Données et stockage
  • Firestore
  • Hive
  • Firebase Storage
  • Airtable
IA
  • Gemini
Authentification
  • Firebase Auth

Décisions

  1. Gemini complète la fiche après coup

    Le commercial photographie la carte de visite et résume l’échange à voix haute. La fiche est enregistrée aussitôt, en attente ; dès que le réseau le permet, Gemini lit la carte et transcrit le mémo.

    Le scanner : photo de la carte de visite, ou saisie manuelle.
  2. Une qualification qui suit le contact jusqu’à Airtable

    Provenance, température, profil et action souhaitée se choisissent d’un geste. Les mêmes valeurs servent de filtres dans la liste et de colonnes dans Airtable.

    La fiche d’un contact : sa qualification et les notes de l’échange.
  3. La saisie n’attend jamais le réseau

    Chaque contact est d’abord enregistré sur le téléphone, sans attendre le serveur. Une file retente ensuite l’envoi toutes les dix secondes, et à chaque retour du réseau, jusqu’à ce que la fiche existe dans Airtable.

  4. Une fiche n’est jamais créée deux fois

    Vérifier dans Airtable qu’une fiche n’existe pas avant de la créer ne suffit pas : deux envois proches font tous deux la vérification avant que le premier ait écrit, et une fiche fraîchement créée n’apparaît pas tout de suite dans les recherches. Avec les renvois de la file hors ligne, cela aurait produit des doublons.

    Le serveur pose donc un verrou atomique dans Firestore : le premier envoi l’obtient et crée la fiche, les suivants attendent son identifiant et le réutilisent. Si une fiche a été supprimée à la main dans Airtable, le verrou la marque comme supprimée, et un envoi tardif ne la recrée jamais.

  5. Une carte de visite numérique pour chaque commercial

    Le QR code de la carte ouvre une page publique, d’où le visiteur du stand enregistre les coordonnées du commercial dans son propre téléphone.

    La carte du commercial et son QR code.

Résultats

14 030
lignes de Dart, réparties en 68 fichiers
4
champs de qualification envoyés en colonnes dans Airtable
10 s
entre deux tentatives d’envoi quand le réseau manque

Sur les salons, à commencer par Vitafoods Europe 2026, l’équipe saisit et qualifie plus d’une centaine de contacts par jour. Leurs données arrivent dans Airtable au format attendu par le CRM, prêtes pour l’envoi des échantillons, des relances et des newsletters.