# SOP — CRM Notion (Agent 0 — Onboarding)

> ⚙️ **Fiche dérivée — ne pas éditer ici.** Source de vérité = `Agents/0-Agent-Onboarding/Agent-Onboarding.md` (sections MÉTHODE / SOPs ASSOCIÉES). Ce SOP est une antisèche humaine pour relancer la routine sans ouvrir le fichier agent. En cas d'écart, l'agent fait foi.

> **Rôle** : Créer le CRM Notion complet pour un nouveau client Fidulia.
> **Déclencheur** : Nouveau client signé ou qualifié — à lancer après réception du nom client et de sa niche principale.
> **Outil requis** : Notion MCP (`notion-create-pages`, `notion-create-database`, `notion-update-data-source`, `notion-move-pages`)
> **Durée estimée** : 2–3 minutes (automatisé)

---

## Inputs requis

Avant d'exécuter, collecter :

| Variable | Exemple | Obligatoire |
|---|---|---|
| `NOM_CLIENT` | "Jonathan Durand" | ✅ |
| `NOM_COURT` | "Jonathan" | ✅ (pour titres) |
| `NICHE` | "CGP indépendant" | ✅ |
| `PAGE_PARENT_ID` | ID de la page client dans le teamspace Fidulia | ✅ |

> **`PAGE_PARENT_ID`** : l'agent doit d'abord rechercher ou demander à l'utilisateur l'URL/ID de la page client déjà créée dans le teamspace Fidulia. Si elle n'existe pas, la créer en étape 0.

---

## Étapes d'exécution

### Étape 0 — Vérifier / créer la page client dans le teamspace

Rechercher via `notion-search` : `"{NOM_COURT}"` dans le teamspace Fidulia (teamspace_id : `374e59ec-7013-81c6-a577-004278fe11c5`).

- Si trouvée → noter l'ID, passer à l'étape 1.
- Si non trouvée → **demander à l'utilisateur** de créer la page dans le teamspace (action UI non disponible via API), puis récupérer l'ID.

---

### Étape 1 — Créer la page hub CRM

Via `notion-create-pages` (parent = `PAGE_PARENT_ID`) :

```
Titre : 🗂️ CRM — {NOM_COURT}
Icône : 🗂️
Contenu :
Base de prospection et suivi — **{NOM_CLIENT}** · Fidulia

Deux bases liées :
- **Cabinets** — structures prospectées ou clientes
- **Contacts** — décideurs individuels, pipeline séquence LinkedIn

> Max 3 clients par niche — règle d'exclusivité éthique.
```

Stocker l'ID retourné → `CRM_HUB_ID`.

---

### Étape 2 — Créer la base Cabinets

Via `notion-create-database` (parent = `CRM_HUB_ID`) avec le DDL suivant :

```sql
CREATE TABLE "Cabinets — {NOM_COURT}" (
  "Nom" TITLE,
  "Niche" SELECT(
    'CGP indépendant':blue,
    'Expert-comptable':green,
    'Notaire':yellow,
    'Avocat fiscaliste':orange,
    'Avocat M&A':red,
    'Family officer':purple,
    'Architecte':pink,
    'Banker privé':brown,
    'Wealth tech / IA finance':gray,
    'Mandataire immo':default
  ),
  "Ville" RICH_TEXT,
  "Site web" URL,
  "Page LinkedIn" URL,
  "ORIAS" RICH_TEXT,
  "Statut" SELECT(
    'Prospect':orange,
    'Client actif':green,
    'Client inactif':gray,
    'Écarté':red
  ),
  "Offre active" SELECT(
    'Fondation':blue,
    'Présence':yellow,
    'Croissance':green,
    'Autorité':purple
  ),
  "Date début mission" DATE,
  "Notes" RICH_TEXT,
  "ID" UNIQUE_ID PREFIX 'CAB'
)
```

Stocker le `data_source_id` retourné → `CABINETS_DS_ID`.

---

### Étape 3 — Créer la base Contacts

Via `notion-create-database` (parent = `CRM_HUB_ID`) avec le DDL suivant :

```sql
CREATE TABLE "Contacts — {NOM_COURT}" (
  "Nom" TITLE,
  "Profil LinkedIn" URL,
  "Niche" SELECT(
    'CGP indépendant':blue,
    'Expert-comptable':green,
    'Notaire':yellow,
    'Avocat fiscaliste':orange,
    'Avocat M&A':red,
    'Family officer':purple,
    'Architecte':pink,
    'Banker privé':brown,
    'Wealth tech / IA finance':gray,
    'Mandataire immo':default
  ),
  "ORIAS" RICH_TEXT,
  "Ancienneté métier" NUMBER,
  "ICP validé" CHECKBOX,
  "Étape séquence" SELECT(
    'Pas commencé':default,
    'Invitation envoyée':purple,
    'Invitation acceptée':blue,
    'Ouverture envoyée':blue,
    'En conversation':yellow,
    'Proposition envoyée':orange,
    'RDV pris':green,
    'Client':green,
    'Refus':red,
    'Écarté':gray
  ),
  "Offre visée" SELECT(
    'Fondation':blue,
    'Présence':yellow,
    'Croissance':green,
    'Autorité':purple
  ),
  "Next step" DATE,
  "Score" NUMBER,
  "Dernier signal" DATE,
  "Source signal" SELECT(
    'Newsletter inscrit':green,
    'Clic lien email':blue,
    'Visite landing page':blue,
    'Clic Calendly':orange,
    'RDV réservé':green,
    'Invitation acceptée':purple,
    'Réponse message':yellow,
    'Ouverture email':default
  ),
  "E-mail" EMAIL,
  "Téléphone" PHONE_NUMBER,
  "Observation" RICH_TEXT,
  "Notes" RICH_TEXT,
  "ID" UNIQUE_ID PREFIX 'CONT'
)
```

Stocker le `data_source_id` retourné → `CONTACTS_DS_ID`.

---

### Étape 4 — Relier Contacts → Cabinets

Via `notion-update-data-source` (data_source_id = `CONTACTS_DS_ID`) :

```sql
ADD COLUMN "Cabinet" RELATION('{CABINETS_DS_ID}')
```

> ⚠️ Utiliser le bare UUID (sans préfixe `collection://`).

---

### Étape 5 — Confirmer et restituer les liens

Restituer à l'utilisateur :

```
✅ CRM {NOM_COURT} créé

🗂️ Hub CRM        → https://app.notion.com/p/{CRM_HUB_ID}
📁 Cabinets        → https://app.notion.com/p/{CABINETS_PAGE_ID}
👤 Contacts        → https://app.notion.com/p/{CONTACTS_PAGE_ID}

Niche principale : {NICHE}
Relation Contacts → Cabinets : ✅ active
```

---

## Notes techniques (leçons apprises)

| Problème | Solution |
|---|---|
| `STATUS` avec options → erreur DDL | Utiliser `SELECT` à la place |
| `RELATION` dans `CREATE TABLE` sur base fraîche → erreur | Créer les 2 tables d'abord, ajouter la relation via `update-data-source` après |
| `DUAL` dans `update-data-source` → erreur | Utiliser bare UUID uniquement : `RELATION('uuid')` sans `collection://` ni `DUAL` |
| Déplacer une page dans un teamspace → impossible via API | L'utilisateur doit faire le drag & drop dans la sidebar Notion |

---

## Schéma de référence — ICP Fidulia

La niche du client détermine le contenu de prospection mais **le schéma CRM est identique pour tous les clients**. La colonne `Niche` des deux bases couvre les 10 niches Fidulia :

1. CGP indépendant ← priorité phase 1
2. Expert-comptable
3. Notaire
4. Avocat fiscaliste
5. Avocat M&A
6. Family officer
7. Architecte boutique
8. Banker privé
9. Wealth tech / IA finance
10. Mandataire immo haut de gamme

**Règle absolue** : max 3 clients actifs par niche (exclusivité éthique Fidulia).
