--- title: CRM Pipeline & Lead Scoring url: https://blog.guigpap.com/en/workflows/crm-automation/ url_md: https://blog.guigpap.com/en/workflows/crm-automation.md category: automation date: '2026-03-28' maturite: production techno: - n8n - odoo - claude application: - automation - business --- # CRM Pipeline & Lead Scoring > Odoo CRM pipeline automation with AI scoring, follow-ups and lead enrichment ## 1. What? — Definition and context A lead lands in Odoo — web form, Cal.com, manual import. And then? Without automation, it sits in "New" until someone remembers to handle it. Scoring is subjective, follow-ups are forgotten, and lost leads are never reached out to again. The **CRM Pipeline Automation** brings together two complementary workflows: a system for scoring and automatic pipeline progression, and AI enrichment of incoming leads. > **Note - Lead scoring** > > **Lead scoring** assigns a numeric score (0-100) to each prospect based on objective criteria: complete profile, acquisition source, estimated budget, recent activity. The higher the score, the more attention the lead deserves. ### The two workflows | Workflow | Nodes | Trigger | Role | |----------|-------|---------|------| | **CRM Pipeline Automation** | ~35 | Hourly + daily + webhook + monthly | Scoring, progression, follow-ups, reactivation | | **Lead Enrichment** | ~15 | Webhook (lead creation) | AI enrichment via website | ### Architecture ```mermaid flowchart TD Lead["New Odoo lead"] subgraph Enrich["Lead Enrichment · creation webhook"] direction TB Fetch["Fetch website"] Claude["Claude analysis"] Update["Update Odoo · industry, size, budget"] end subgraph Pipe["CRM Pipeline Automation · hourly schedule"] direction TB Score["Score 0-100"] Stage["Auto stage"] Follow["AI follow-up"] Reactivate["Monthly reactivation"] end Lead --> Enrich Lead --> Pipe Fetch --> Claude --> Update ``` --- ## 2. Why? — Stakes and motivations ### Problems solved | Problem | Without automation | With automation | |---------|--------------------|-----------------| | **Subjective scoring** | "This lead looks good" | 0-100 score on objective criteria | | **Forgotten leads** | Sit in "New" for weeks | Automatic progression by signals | | **Manual follow-ups** | Forget to follow up after 7 days | Claude generates the follow-up email | | **Lost leads** | Never recontacted | Monthly reactivation of 3+ month leads | | **Empty leads** | No info on the company | Auto enrichment via the website | > **Tip - Four cadences** > > The pipeline runs at four speeds: real-time enrichment (webhook), hourly scoring, daily follow-ups, and monthly reactivation. Each frequency matches a different need. --- ## 3. How? — Technical implementation ### Scoring (hourly) Every hour, the workflow recomputes the score of every active lead along five axes: | Axis | Max points | Criteria | |------|------------|----------| | **Profile** | 20 | Email (+5), phone (+5), company (+5), role (+5) | | **Source** | 15 | Referral (15), Cal.com (12), web form (10), import (5) | | **Budget** | 25 | +50k (25), 20-50k (20), 10-20k (15), 5-10k (10), -5k (5) | | **Activity** | 15 | Email received within 7d (15), 14d (10), 30d (5) | | **Tags** | 10 | Tags "decision-maker" (+5), "budget-confirmed" (+5) | The score is stored in the `x_score` field with the calculation date. ### Automatic progression When certain signals are detected, the lead automatically advances in the pipeline: | Detected signal | Progression | |-----------------|-------------| | Email reply received | New → Qualified | | Meeting scheduled (Cal.com) | Qualified → Proposition | | Quote sent in Odoo | Proposition → Negotiation | | Contract signed | Negotiation → Won | ### AI follow-ups (daily, 9 AM) Every morning, the workflow identifies leads with no activity for 7+ days. For each one, Claude (haiku model) generates a personalised follow-up email based on the lead's activity history. The email is created as a draft in Odoo — it is never sent automatically. ### Reactivation (monthly) On the first Monday of the month, leads marked "Lost" for more than 3 months are analysed by Claude. The AI excludes "Not interested" or "Competitor won" leads and proposes a re-engagement angle for the others. The `x_reactivation_count` counter prevents endless reach-outs. ### Lead enrichment When a new lead is created in Odoo (or when the company name is missing), a webhook triggers enrichment: 1. Domain extraction from email (gmail, yahoo etc. are excluded) 2. Fetch the website (homepage + /about as fallback) 3. Claude analyses the content and extracts: industry, estimated size, products, pain points, estimated budget 4. Odoo fields are updated with a confidence score (0-1) > **Caution - Confidence threshold** > > If the Claude confidence score is below 0.3, the enrichment is NOT applied. The data is logged but the lead is not modified — to avoid polluting the CRM with dubious information. --- ## 4. What if? — Outlook and limits ### Current limits | Limit | Impact | Mitigation | |-------|--------|------------| | **Free email providers** | Enrichment not possible | LinkedIn fallback (DuckDuckGo search) | | **Follow-ups as drafts** | No automatic send | Deliberate choice — human validation | | **Static scoring** | No learning from conversions | Eventually: adjust weights from history | ### Evolution scenarios **If lead volume grows**: - Prioritise enrichment by score - Batch processing instead of per-webhook - Configurable rate limiting (currently 50/h) **If a sales team is involved**: - Round-robin assignment by score - Differentiated notifications per salesperson - Scoring dashboard inside Odoo --- ## Related pages ### Workflows - [Cal.com → Odoo CRM](/en/workflows/cal-rdv-odoo/) — Cal.com lead source - [Website Lead Notification](/en/workflows/website-lead-notification/) — Web-form notifications - [Notification Hub](/en/workflows/notification-hub/) — Alert routing ### Infrastructure - [Odoo 18 on Docker](/en/infrastructure/odoo-18-setup/) — CRM configuration - [AI Stack](/en/infrastructure/ai-stack/) — Claude for enrichment and follow-ups ## Metadonnees agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0