Dashboard stratégique
● Scoring live 47 opportunités Occitanie · Île-de-France · PACA
3 entreprises haute priorité — aucun site web + note Google < 2,5 — fenêtre d'opportunité idéale
Entreprises analysées
2 847
+134 cette semaine
Leads qualifiés ≥ 65
312
11 % de la base totale
Taux de conversion
8,4 %
+2,1 pts vs mois dernier
Pipeline CA estimé
68 k€
14 deals actifs
Score moyen par région
Répartition des priorités
312 leads
Haute priorité72
Moyenne priorité128
Faible priorité112
Top opportunités du jour
EntrepriseSecteurRégion Score IASignal principalPriorité
Top région
Hérault (34)
Score moy. 72 · 847 entreprises
Contactés ce mois
89
67 % taux de réponse
Rappels planifiés
23
7 à traiter aujourd'hui
Base de prospects — Intelligence commerciale
EntrepriseSecteurRégionEmployés Site webGMBScore IAPrioritéStatut CRM
SCORE
Téléphone
Région
Employés
Site web
Note Google
Avis Google
Réseaux sociaux
Zone géographique
Détail du scoring algorithmique
Suivi CRM
Notes internes
Historique
Message personnalisé IA
Sélectionnez le type de message — il sera personnalisé selon les signaux détectés.
Pipeline commercial — Vue Kanban
Non contactés
Contactés
En discussion
Convertis
Perdus
Algorithme de scoring — Simulateur temps réel
Pondération dynamique
Paramètres à simuler
Site web
Note Google My Business3.0 ★
Nombre d'avis GMB30 avis
Réseaux sociaux
Effectif
Zone géographique
Score calculé
points sur 100
Décomposition des points
Pseudocode de l'algorithme
function calculateScore(company):
  score = 0

  // ── Présence digitale (max 37pts)
  if website == "none":   score += 22
  elif website == "basic": score += 10
  if social == 0:         score += 15
  elif social == 1:       score += 7

  // ── Qualité GMB (max 32pts)
  if   gmb < 2.5: score += 20
  elif gmb < 3.5: score += 12
  elif gmb < 4.0: score += 6
  if   reviews < 10:  score += 12
  elif reviews < 30:  score += 8
  elif reviews < 80:  score += 4

  // ── Potentiel business (max 23pts)
  pts = {"1-5":8, "6-20":12, "21-50":10, "50+":6}
  score += pts[employees]
  if zone_dynamique: score += 11

  return min(score, 100)
Automatisations intelligentes
3 règles actives
Règles d'automatisation
Journal d'activité — Aujourd'hui
Roadmap — Fonctionnalités avancées
● IA Prédictive
Détection "Prêt à acheter"
Modèle ML entraîné sur signaux comportementaux — recrutements récents, visites GMB, pics d'activité. Score de propension dynamique.
Roadmap Q3 2026
● Enrichissement auto
Emails & contacts manquants
Connexion Hunter.io + Clearbit + Pappers pour enrichir les fiches sans email. Couverture cible : 78 % de la base.
Roadmap Q2 2026
● Campagnes auto
Séquences multi-canaux
Intégration Brevo & Lemlist — 3 emails sur 14 jours déclenchés par score ≥ 70. A/B test automatique. Reporting hebdo.
Roadmap Q3 2026
Architecture technique — Stack de production
Next.js 14 · Node.js · PostgreSQL
Schéma base de données PostgreSQL
-- Table principale
CREATE TABLE companies (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name        TEXT NOT NULL,
  sector      TEXT,
  region      TEXT,
  department  VARCHAR(3),
  employees   VARCHAR(10),
  phone       TEXT,
  email       TEXT,
  website     VARCHAR(10),
  gmb_score   DECIMAL(2,1),
  gmb_reviews INTEGER,
  social_count SMALLINT,
  zone_dynamic BOOLEAN,
  score       SMALLINT,
  created_at  TIMESTAMPTZ DEFAULT now()
);

-- CRM
CREATE TABLE crm_records (
  id         UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  company_id UUID REFERENCES companies(id),
  status     crm_status,
  notes      TEXT,
  reminder_at TIMESTAMPTZ,
  updated_at  TIMESTAMPTZ DEFAULT now()
);

-- Historique actions
CREATE TABLE actions (
  id         UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  company_id UUID REFERENCES companies(id),
  action_type TEXT,
  body        TEXT,
  acted_at    TIMESTAMPTZ DEFAULT now()
);

CREATE TYPE crm_status AS ENUM (
  'non_contacte', 'contacte',
  'en_discussion', 'converti', 'perdu'
);
Scoring — Node.js / TypeScript
export function scoreCompany(c: Company) {
  let s = 0;
  s += {none:22,basic:10,pro:0}[c.website];
  s += c.social_count === 0 ? 15
     : c.social_count === 1 ? 7 : 0;
  if      (c.gmb_score < 2.5) s += 20;
  else if (c.gmb_score < 3.5) s += 12;
  else if (c.gmb_score < 4.0) s += 6;
  if      (c.gmb_reviews < 10) s += 12;
  else if (c.gmb_reviews < 30) s += 8;
  else if (c.gmb_reviews < 80) s += 4;
  s += {"1-5":8,"6-20":12,"21-50":10,"50+":6}[c.employees];
  if (c.zone_dynamic) s += 11;
  return Math.min(s, 100);
}
Stack complète
Frontend
Next.js 14 App Router · React Server Components · SWR · Recharts
Backend
Node.js · tRPC · Prisma ORM · Bull/Redis pour queues async
Data / Scraping
Python · Playwright · Scrapy · API Pappers (SIRENE) · Hunter.io
Infra
PostgreSQL sur Supabase · Redis Upstash · Déploiement Vercel Edge · Auth Clerk