# Référence — Génération et mise à jour de cartes Uluana

Dernière mise à jour : 2026-07-30

---

## 0. Workflow à jour (depuis 2026-07-30)

**Une carte = un fichier JSON unique** dans `data/cards/`.
Plus de fichiers `card_details/*.json` ni `card_guides/*.json` séparés.
À chaque premier appel API post-deploy, `_autorun_pending_card_imports()` dans `_core.php`
lit tous les fichiers `data/cards/*.json` non encore joués (tracking en table `card_imports`)
et les importe en BDD — exactement comme les migrations SQL.

**Convention de nommage** : `C-XXX_slug-court.json` (ex. `C-123_risque-keyman.json`).
L'ordre alphabétique détermine l'ordre d'import — nommer les fichiers avec le `C-XXX` en
préfixe garantit l'ordre correct.

**Workflow complet pour une nouvelle carte :**
1. (Dans une session Claude Chat ou ici) Rédiger le JSON complet selon le schéma §3
2. Valider avec Mr Fauquant
3. Déposer le fichier dans `data/cards/` et committer sur `develop`
4. Le cron de déploiement fait `git pull` → premier appel API → import automatique

**Mise à jour d'une carte existante :**
NE PAS modifier le fichier JSON existant (déjà marqué dans `card_imports` → ne sera pas rejoué).
→ Créer un nouveau fichier avec un suffixe de version : `C-123_risque-keyman_v2.json`.
L'import utilise `ON DUPLICATE KEY UPDATE` sur les champs principaux — il écrasera le contenu.

---

## 1. Avant tout — vérifier qu'une carte proche n'existe pas déjà

**Étape obligatoire, non négociable.** Le catalogue compte 124+ cartes.
Avant de rédiger une carte neuve :
1. Parcourir les titres et objectifs du catalogue (via `GET /api/cards` ou `uluana_catalog.json`)
2. Si une carte couvre déjà le sujet → ne pas créer. Proposer un lien `liens_cards` entre cartes
3. Seulement si rien ne correspond → rédiger selon le schéma §3

---

## 2. Règles générales de rédaction

- **Tutoiement** partout où la grammaire s'y prête : `description`, `checklist[].label`,
  `mesure.questions[].label`, `detail.intro`, `guide.contexte_uluana.situation`
- **`title`** en infinitif (pas de tu/vous sur une forme infinitive)
- **Checklist** : 3 à 5 items maximum — au-delà c'est décourageant
- **`requires_proof: true`** seulement quand la preuve a une vraie valeur (photo avant/après,
  document signé) — pas systématiquement
- **`printable_worksheet: true`** seulement pour les actions terrain sans écran (marché physique,
  atelier) — rare
- **`liens_cards`** : les deux sens (`avant` ET `apres`) obligatoires — une carte sans aucun lien
  est mal positionnée dans le catalogue
- **Pas de `mesure.indicateurs`** (ancien format) sur une carte neuve — directement `mesure.questions`
- **`metric`** en snake_case, stable dans le temps (sert de clé de stockage des relevés utilisateurs)

---

## 3. Schéma JSON complet (format unifié `data/cards/`)

```json
{
  "id": "C-127",
  "category_id": "CAT-02",
  "title": "Titre en infinitif",
  "slug": "titre-en-slug",
  "objective": "Une phrase — résultat concret et mesurable",
  "description": "2-3 lignes — ce que c'est, ce que ça apporte. Au tutoiement.",
  "difficulty": 2,
  "is_derived": false,
  "tags": ["tag1", "tag2"],
  "associated_card_ids": ["C-001", "C-002"],

  "detail": {
    "uluana_label": "Label court affiché dans l'interface",
    "intro": "Paragraphe d'accroche — pourquoi ce sujet compte, au tutoiement.",
    "updated_at": "2026-07-30",
    "author": "Uluana",
    "sections": [
      {
        "type": "method",
        "title": "Titre de la méthode",
        "steps": [
          { "step": 1, "title": "Titre de l'étape", "content": "Explication détaillée." },
          { "step": 2, "title": "Titre de l'étape", "content": "Explication détaillée." },
          { "step": 3, "title": "Titre de l'étape", "content": "Explication détaillée." }
        ]
      },
      {
        "type": "tips",
        "title": "Conseils Uluana",
        "items": [
          "Conseil 1 au tutoiement.",
          "Conseil 2 au tutoiement.",
          "Conseil 3 au tutoiement."
        ]
      },
      {
        "type": "warning",
        "title": "Pièges à éviter",
        "items": [
          "Piège 1.",
          "Piège 2.",
          "Piège 3."
        ]
      }
    ]
  },

  "guide": {
    "domain": "parcours_client",
    "xp": 15,

    "objectif": {
      "label": "Phrase courte orientée résultat concret et mesurable",
      "metric_principale": "nom_metric_snake_case"
    },

    "checklist": [
      {
        "id": "id_unique_court",
        "label": "Action concrète à cocher, au tutoiement, une ligne",
        "detail": "Optionnel — pourquoi/comment, seulement si ça apporte quelque chose.",
        "requires_proof": false,
        "printable_worksheet": false
      }
    ],

    "mesure": {
      "questions": [
        {
          "metric": "nom_metric_snake_case",
          "label": "Question posée à l'artisan, au tutoiement, formulée pour saisie rapide",
          "type": "number",
          "unit": "unité si ambigu",
          "cadence_jours": 30,
          "depends_on_metric": null
        }
      ]
    },

    "liens_cards": {
      "avant": ["C-0XX — raison courte"],
      "apres": ["C-0XX — raison courte"],
      "incompatible_si_absent": []
    },

    "type_fonctionnel": ["domaine1", "domaine2"],

    "contexte_uluana": {
      "situation": "Description de la situation de l'artisan qui a besoin de cette carte.",
      "prerequis": ["Prérequis 1", "Prérequis 2"],
      "ce_que_ca_prepare": ["Ce que cette carte prépare 1"]
    },

    "parties": {
      "artisan": {
        "apporte": "Ce que l'artisan apporte dans cette action.",
        "gagne": "Ce que l'artisan gagne."
      },
      "prospect": {
        "profil": "Profil du prospect ciblé par cette action.",
        "probleme": "Problème du prospect.",
        "ce_qui_le_fait_agir": "Ce qui déclenche l'acte d'achat."
      },
      "ce_qui_les_relie": "Ce qui connecte l'artisan et le prospect."
    },

    "premier_pas": {
      "action": "La première chose concrète à faire, au tutoiement.",
      "temps_estime": "30 min",
      "delivrable": "Ce qui existe à la fin de ce premier pas."
    }
  },

  "examples": [
    {
      "artisan": {
        "craft": "Céramiste",
        "city": "Bordeaux"
      },
      "action_taken": "Ce qu'a fait cet artisan.",
      "result": "Le résultat obtenu.",
      "difficulty_felt": 2,
      "quote": "Citation courte optionnelle.",
      "followable": false,
      "last_update": "2026-07-30",
      "status": "published"
    }
  ]
}
```

---

## 4. Valeurs de référence

### `category_id`
| ID | Label |
|---|---|
| `CAT-01` | Image de marque |
| `CAT-02` | Parcours client |
| `CAT-03` | Gamme & tarifs |
| `CAT-04` | Modèles commerciaux |
| `CAT-05` | Quotidien |
| `CAT-06` | Résilience & risques |
| `Q` | Non classé / à définir |

### `domain` (card_guide)
Valeurs existantes : `image_de_marque`, `parcours_client`, `gamme_de_tarifs`,
`modeles_commerciaux`, `quotidien`, `acquisition`, `clients`, `organisation`, `resilience`

### `type` pour `mesure.questions`
`number`, `boolean`, `select` (+ `options: [...]`)

### `difficulty`
1 = très accessible, 2 = intermédiaire, 3 = exigeant

### `xp`
15 par défaut pour toutes les cartes actuelles.

---

## 5. Champs optionnels — quand les inclure

| Champ | Inclure si... |
|---|---|
| `detail.sections` | Sujet complexe qui mérite un contenu pédagogique long en plus de la checklist |
| `guide.contexte_uluana` | Utile pour le cadrage interne, profil d'artisan ciblé |
| `guide.parties` | Action impliquant un prospect (commercial, conversion) |
| `guide.premier_pas` | Toujours utile — donne un point d'entrée immédiat |
| `examples` | Dès que possible — la preuve sociale est un levier fort |
| `requires_proof: true` | Seulement si la preuve a une valeur réelle (avant/après, document) |
| `printable_worksheet: true` | Actions terrain uniquement (marché, atelier sans écran) |
| `depends_on_metric` | Question conditionnelle (ex: rentabilité seulement si marché fait ce mois) |

---

## 6. Pipeline PDF — source de contenu externe

Les PDFs fournis par Mr Fauquant (livres, transcripts, ressources business) sont des sources
de matière première à transformer en cartes adaptées à la clientèle Uluana :
artisans créateurs français, solo ou petites structures, mobilier et décoration haut de gamme.

**Grille d'adaptation obligatoire :**
- Remplacer tout jargon business générique par des exemples concrets d'artisans
- Adapter les chiffres au contexte artisanal (ex: "30 prospects/jour" → réaliste pour un
  commercial B2B, irréaliste pour un artisan qui vend des pièces à 2000€)
- Vérifier que le sujet ne duplique pas une carte existante (§1)
- Reformuler en tutoiement, en supprimant toute référence à des outils non accessibles
  à un artisan solo (CRM enterprise, équipes dédiées, etc.)

**Cartes déjà extraites de transcripts Hormozi (session 2026-07-30) :**
- `C-123` — Risque keyman (dépendance personnelle)
- `C-124` — Multi-canal (diversification des canaux d'acquisition)
- `C-125` — Risque client majeur (concentration CA)
- `C-126` — Fournisseurs critiques (dépendances fournisseurs)

---

## 7. Exemples de référence (cartes existantes bien formées)

### C-123 à C-126 — dans `data/cards/`
Les 4 cartes de résilience créées le 2026-07-30 sont les premières au format unifié.
Elles servent de modèle pour toutes les nouvelles cartes.

### C-003 — Checklist sans fiche imprimable (legacy, pas encore migré au format unifié)
```json
"checklist": [
  { "id": "fiche_stand",     "label": "Une fiche dédiée + lead magnet sur le stand",  "requires_proof": false },
  { "id": "emails_boutique", "label": "Les emails de la boutique, avec un lead magnet", "requires_proof": false },
  { "id": "qr_etiquette",    "label": "Un QR code sur l'étiquette produit",           "requires_proof": false },
  { "id": "carnet",          "label": "Un carnet / tableur de contacts",              "requires_proof": false }
]
```

### C-006 — Checklist avec fiche imprimable terrain (legacy)
Voir `PROMPT_redaction_cartes.md` version précédente pour l'exemple complet C-006.

---

## 8. Ce qu'il faut pour générer une carte en session

Fournir à Claude :
1. Le sujet / l'idée (texte libre, transcript, extrait PDF)
2. Le prochain ID libre (vérifier `GET /api/cards` ou catalogue courant)
3. La `category_id` cible si connue (sinon Claude propose)
4. Toute contrainte éditoriale spécifique (cadence, profil d'artisan visé, etc.)

Claude produit le JSON complet → validation Mr Fauquant → dépôt dans `data/cards/` →
commit sur `develop` → import automatique au prochain appel API.

---

## 9. Filtre Hormozi — règles éditoriales (ajouté 2026-07-30)

Toute carte et tout parcours Uluana doit passer ce filtre avant d'être validé.

### Principe fondamental
**Volume et vitesse avant préparation.** Un artisan qui n'a pas de clients n'a pas un problème d'offre, de prix ou de script — il a un problème de nombre de conversations. Les cartes et parcours ne doivent pas encourager la sur-préparation.

### Règles pour les cartes
- La checklist doit déclencher une **action mesurable dans les 48h** — pas une réflexion
- Le `premier_pas` doit être faisable aujourd'hui, sans prérequis matériel
- Les `tip` doivent orienter vers l'exécution, pas vers la perfection
- Si une carte commence par "comprendre" ou "analyser" sans déboucher sur une action physique dans le même module → reformuler
- `mesure.questions` doit compter des **comportements** (conversations, offres faites, devis envoyés) avant de compter des résultats (ventes, CA)

### Règles pour les parcours
- Un parcours ne peut pas commencer par un module de compréhension pure sans action dans la semaine 1
- Chaque module doit avoir un **livrable comportemental** clair (ex: "10 conversations faites", "1 offre annoncée à voix haute")
- L'ordre des modules suit : **agir → mesurer → ajuster** — pas comprendre → préparer → agir
- Tout parcours de vente ou d'acquisition doit inclure un module diagnostic (C-127) si la durée dépasse 3 semaines

### Les 4 blocages de vente (Hormozi)
Quand une carte ou un parcours traite d'un problème de vente, référencer ces 4 points dans cet ordre :
1. **Marché** — mauvaises personnes ciblées
2. **Message** — mal expliqué, crée de l'admiration pas du désir
3. **Cadence** — pas assez d'offres réelles faites
4. **Prix** — mal ancré (valeur pas exprimée avant le chiffre)

Un artisan ne peut conclure que son produit n'est pas viable qu'après **30 conversations et 10 offres réelles**. En dessous, c'est un problème de volume.

### Règle sur la viabilité produit
Si après 30 conversations et 10 offres réelles = 0 vente → le produit n'est pas viable dans ce format.
La réponse n'est pas d'adapter le produit à la marge — c'est de repartir depuis zéro avec méthode (C-128).
**Mais avant de changer de produit, utiliser l'ikigaï** (voir §10) pour explorer des formats ou publics différents dans le même univers créatif.

---

## 10. Outil ikigaï — règles d'intégration (ajouté 2026-07-30)

L'ikigaï est un outil standalone dans Uluana (pas une carte — un outil comme les calculateurs).
Il sert à explorer des pistes de pivot **dans le même univers créatif** avant de tout abandonner.

### Principe
Un artisan peut avoir un problème de format ou de public sans avoir un problème d'univers.
Ex : peintures tristes qui ne se vendent pas → peut devenir un atelier deuil, un abonnement postal,
des illustrations pour éditeurs, des fresques funèbres — même thème, formats et publics différents.

### Les 4 axes de l'ikigaï adapté Uluana
- **Ce que tu crées** : thèmes, matières, univers, esthétique
- **Ce que tu sais faire** : techniques, formats possibles, compétences transférables
- **Qui est touché par ça** : publics, communautés, contextes d'usage, occasions
- **Ce pour quoi quelqu'un paierait** : produit, service, accès, expérience, enseignement

### Utilisation dans le parcours
- Déclenché depuis C-128 (nouvelle offre) avant de formuler la première piste
- Produit 3 à 5 pistes concrètes à tester — pas des visions, des offres testables en 48h
- Chaque piste = un format ou un public différent, pas un produit entièrement nouveau

### Ce que l'outil doit produire
Une arborescence visuelle : univers créatif au centre → branches par axe → croisements = pistes d'offres.
L'artisan coche ce qui lui correspond, le croisement génère des suggestions concrètes.

---

## 11. Feedbacks clients — règle de repasse parcours (ajouté 2026-07-30)

Quand Mr Fauquant fournit des retours clients sur un parcours :
1. Lire les feedbacks et identifier dans lequel des 4 blocages Hormozi le problème se situe
2. Ne modifier que les modules concernés — pas tout le parcours
3. Toujours vérifier que la modification ne crée pas un module "compréhension pure" sans action dans la semaine
4. Committer le fichier JSON mis à jour dans `data/parcours/` avec un suffixe `_v2.json`
5. Mettre à jour le CLAUDE.md en retirant le parcours de la liste TODO si la repasse est faite
