> ## Documentation Index
> Fetch the complete documentation index at: https://docs.quivr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Création

> Guide complet pour créer et configurer votre premier workflow

export const WorkflowExample = ({title, whenToUse, steps = []}) => {
  const parseToolMentions = text => {
    if (!text) return text;
    const parts = text.split(/(@[\w-]+)/g);
    return parts.map((part, i) => {
      if (part.startsWith("@")) {
        const toolName = part.slice(1);
        return <span key={i} className="text-blue-500 dark:text-blue-400 font-semibold bg-blue-50 dark:bg-blue-950/50 px-1.5 py-0.5 rounded text-[0.9em] whitespace-nowrap">
            @{toolName}
          </span>;
      }
      return part;
    });
  };
  return <div className="my-6 border-2 border-dashed border-zinc-300 dark:border-zinc-600 rounded-xl p-6">
      {}
      <h3 className="text-xl font-semibold text-zinc-900 dark:text-zinc-100 m-0 mb-5">
        {title}
      </h3>

      {}
      <div className="mb-6">
        <span className="text-sm font-medium text-zinc-500 dark:text-zinc-400 block mb-2">
          When to use
        </span>
        <div className="border border-zinc-200 dark:border-zinc-700 rounded-lg p-4 bg-zinc-50/50 dark:bg-zinc-800/30">
          <p className="m-0 text-zinc-700 dark:text-zinc-300 leading-relaxed">
            {whenToUse}
          </p>
        </div>
      </div>

      {}
      <div>
        <span className="text-sm font-semibold text-zinc-900 dark:text-zinc-100 block mb-4">
          Steps
        </span>
        <div className="flex flex-col gap-4">
          {steps && steps.map((step, index) => <div key={index} className="flex gap-3 items-start">
              <span className="flex items-center gap-1.5 flex-shrink-0 pt-0.5">
                <span className="text-blue-500 dark:text-blue-400 font-medium text-sm tabular-nums">
                  {index + 1}.
                </span>
              </span>
              <span className="text-zinc-700 dark:text-zinc-300 leading-relaxed">
                {parseToolMentions(step)}
              </span>
            </div>)}
        </div>
      </div>
    </div>;
};

## Créer votre premier workflow

<Steps>
  <Step title="Créer un Nouveau Workflow">
    Dans ton tableau de bord Quivr, navigue vers **Michael** dans la barre latérale gauche et clique sur **+ Créer un Workflow**.

    <img src="https://mintcdn.com/quivr/h2MKC8vnhvomNcDd/images/create-workflow.png?fit=max&auto=format&n=h2MKC8vnhvomNcDd&q=85&s=b20f2cc2455d94ad2e059bd21a3a8601" alt="Bouton pour créer un nouveau workflow dans le tableau de bord Quivr" width="2378" height="1776" data-path="images/create-workflow.png" />
  </Step>

  <Step title="Quand l'Utiliser">
    Décris les situations clients que ce workflow doit gérer. Sois le plus précis possible sur l'intention.

    **Comment ça marche :** Quivr utilise la compréhension sémantique pour détecter quand les clients ont besoin de ce workflow en fonction de l'intention de leur message.

    **Rédige des descriptions claires avec des exemples :**

    ✅ **Bons exemples (intention précise) :**

    ```
    "Gérer les clients qui demandent le statut de livraison de leur commande ou les informations de suivi"

    Exemples positifs :
    - "Où est ma commande ?"
    - "Pouvez-vous me donner les infos de suivi pour la commande #123 ?"
    - "Mon colis n'est toujours pas arrivé"

    Exemples négatifs :
    - "Je veux annuler ma commande" (il s'agit d'annulation, pas de suivi)
    - "Mauvais article livré" (il s'agit d'un retour/échange)
    ```

    ❌ **Mauvais exemples (trop vagues) :**

    ```
    "Gérer les questions sur les commandes"  → Trop large, peut signifier n'importe quoi
    "Aide avec les produits"                 → Pas clair quel type d'aide
    "Support client"                         → Beaucoup trop général
    ```

    <Tip>
      Plus ta description et tes exemples sont précis, mieux Quivr pourra router les messages vers le bon workflow. Inclus à la fois ce qui DOIT le déclencher (exemples positifs) et ce qui NE DOIT PAS (exemples négatifs).
    </Tip>
  </Step>

  <Step title="Rédiger les Instructions Étape par Étape">
    Décris les étapes que tu veux que le workflow suive pour gérer cette situation client. Tu peux utiliser des outils pour récupérer des données, stocker des informations et répondre aux clients.

    **Rédiger des instructions efficaces :**

    <AccordionGroup>
      <Accordion title="Commence chaque instruction par un verbe" icon="play">
        Rends les instructions actionnables et claires sur ce qu'il faut faire.

        ✅ **Bon :**

        * "Récupère l'historique des commandes du client avec get\_tickets\_from\_user\_by\_email"
        * "Vérifie si la commande a des informations de suivi"
        * "Demande au client son numéro de commande s'il n'est pas fourni"

        ❌ **Mauvais :**

        * "L'historique des commandes devrait être récupéré"
        * "Il pourrait y avoir des informations de suivi"
        * "Numéro de commande"
      </Accordion>

      <Accordion title="Sois aussi complet que possible" icon="list-check">
        Fournis le maximum d'informations dans les instructions. Toute information non fournie pourrait être incorrectement déduite.

        ✅ **Bon :**

        ```
        1. Salue le client par son nom si disponible
        2. Récupère sa commande avec get_order_by_id en utilisant le numéro de commande de son message
        3. Si des informations de suivi existent, inclus :
           - Le nom du transporteur
           - Le numéro de suivi sous forme de lien cliquable
           - La date de livraison estimée
        4. S'il n'y a pas d'info de suivi, explique le statut actuel de la commande et quand le suivi sera disponible
        5. Utilise un ton rassurant et amical
        6. Termine par "N'hésite pas si tu as besoin d'autre chose !"
        ```

        ❌ **Mauvais :**

        ```
        1. Récupère les infos de commande
        2. Envoie le suivi
        3. Sois sympa
        ```
      </Accordion>

      <Accordion title="Garde les instructions individuelles courtes" icon="scissors">
        Les instructions longues sont moins fiables. Divise les étapes complexes en plusieurs instructions courtes.

        ✅ **Bon :**

        ```
        1. Récupère les détails de la commande avec get_order_by_id
        2. Vérifie si order.status est égal à "shipped"
        3. Si expédiée, récupère les infos de suivi depuis order.tracking
        4. Formate la réponse avec le lien de suivi et l'estimation de livraison
        ```

        ❌ **Mauvais :**

        ```
        1. Récupère les détails de la commande avec get_order_by_id et vérifie si le statut est égal à "shipped" et si c'est le cas alors récupère les infos de suivi depuis order.tracking et formate une réponse qui inclut le lien de suivi et l'estimation de livraison
        ```
      </Accordion>

      <Accordion title="Utilise des outils pour récupérer les données" icon="wrench">
        Référence les outils disponibles quand tu as besoin de récupérer des informations :

        **Exemples :**

        * "Utilise get\_ticket pour récupérer les détails du ticket actuel"
        * "Appelle get\_tickets\_from\_user\_by\_email pour voir les tickets précédents du client"
        * "Utilise get\_attachment\_urls pour accéder aux fichiers uploadés par le client"

        Consulte tous les outils disponibles dans [Outils & Intégrations](/outils/index).
      </Accordion>

      <Accordion title="Inclus des directives de ton et de style" icon="message">
        Spécifie comment les réponses doivent sonner :

        **Exemples :**

        * "Utilise un ton amical et empathique"
        * "Garde la réponse sous 100 mots"
        * "Ne mentionne jamais les problèmes systèmes internes"
        * "Excuse-toi toujours pour les retards de plus de 5 jours"
        * "Inclus un appel à l'action direct à la fin"
      </Accordion>
    </AccordionGroup>

    **Exemple complet :**

    ```
    1. Salue chaleureusement le client en utilisant son prénom si disponible
    2. Utilise get_tickets_from_user_by_email pour récupérer son historique de commandes
    3. Identifie la commande la plus récente dans les résultats
    4. Vérifie si la commande a des informations de suivi :
       - Si oui : Inclus le numéro de suivi, le transporteur et la livraison estimée
       - Si non : Explique que la commande est en préparation et que le suivi sera disponible sous 24h
    5. Utilise un ton rassurant qui reconnaît toute frustration éventuelle
    6. Garde la réponse concise (moins de 80 mots)
    7. Termine par : "Je suis là si tu as d'autres questions !"
    ```
  </Step>

  <Step title="Tester ton Workflow">
    Une fois terminé, clique sur **"Sauvegarder le brouillon et tester"**. Crée des scénarios de test pour valider que ton workflow se comporte correctement avant de le déployer en production.

    <Card title="Apprendre à Tester les Workflows" icon="flask" href="/workflows/testing">
      Guide complet sur la création de scénarios, la définition de critères de succès et le débogage des échecs
    </Card>
  </Step>

  <Step title="Déployer & Surveiller">
    Choisis ta stratégie de déploiement en fonction de ton niveau de confiance :

    <Tabs>
      <Tab title="Option 1 : Commencer en Mode Brouillon">
        **Publie sans activer l'autorésolution**

        Le workflow génère des réponses sous forme de brouillons pour révision par les agents—aucun envoi automatique aux clients.

        **Quand l'utiliser :**

        * Premier déploiement d'un nouveau workflow
        * Tu veux valider les performances avec de vrais tickets
        * Tu as besoin de l'adhésion de l'équipe avant l'automatisation complète

        **Timeline :**

        1. **Semaines 1-2 :** Révise chaque brouillon, collecte les retours
        2. **Semaines 3-4 :** Surveille le taux d'approbation (vise 90%+)
        3. **Après validation :** Active l'autorésolution si les performances sont bonnes

        Cette approche te permet de surveiller en toute sécurité les performances réelles avant de t'engager dans l'automatisation.
      </Tab>

      <Tab title="Option 2 : Activer l'Autorésolution Immédiatement">
        **Publie avec l'autorésolution activée**

        Le workflow envoie automatiquement les réponses aux clients sans révision humaine.

        **Quand l'utiliser :**

        * Tu es confiant dans tes résultats de test
        * Tests de scénarios approfondis réussis (5+ scénarios)
        * Workflow à faible risque (FAQ simples, statut de commande, etc.)
        * L'équipe est à l'aise avec l'automatisation

        **Pour activer l'autorésolution :**

        <img src="https://mintcdn.com/quivr/h2MKC8vnhvomNcDd/images/enable_autoresolve.png?fit=max&auto=format&n=h2MKC8vnhvomNcDd&q=85&s=3ca2d2820c6cf354490f80f34bf23cc6" alt="Interrupteur pour activer l'autorésolution dans les paramètres du workflow" width="2528" height="1696" data-path="images/enable_autoresolve.png" />

        Active **"Activer l'autorésolution"** dans les paramètres du workflow.

        <Warning>
          Même avec l'autorésolution activée, continue de surveiller régulièrement les métriques de performance et les retours des agents.
        </Warning>
      </Tab>
    </Tabs>

    **Surveillance continue (les deux options) :**

    * Clique sur "Analyser les conversations passées" pour réviser les exécutions du workflow
    * Suis le taux de résolution et la qualité des réponses
    * Affine les instructions en fonction des données de performance réelles
    * Ajuste le paramètre d'autorésolution si nécessaire
  </Step>
</Steps>

## Utiliser des Outils dans les Workflows

Les outils permettent à tes workflows de récupérer des données depuis les systèmes intégrés et d'effectuer des actions. Tous les outils disponibles pour ton compte sont accessibles directement dans tes instructions de workflow.

### Accéder aux Outils

Tape **@** dans tes instructions de workflow pour voir tous les outils disponibles pour ton compte.

<img src="https://mintcdn.com/quivr/h2MKC8vnhvomNcDd/images/tools_available.png?fit=max&auto=format&n=h2MKC8vnhvomNcDd&q=85&s=59fb4d3b3260cbf61eebea3f607cbb90" alt="Autocomplétion des outils montrant les outils disponibles lors de la saisie du symbole @" width="1788" height="1454" data-path="images/tools_available.png" />

**Exemple :**

```
1. Utilise @get_order_details pour récupérer les informations de commande du client
2. Vérifie si le statut de la commande est "shipped"
3. Utilise @send_tracking_email pour envoyer les informations de suivi
```

### Utiliser les Métadonnées du Helpdesk

Toutes les métadonnées liées à tes tickets helpdesk sont automatiquement disponibles dans les workflows :

**Champs de ticket :**

* Tags
* Priorité
* Statut
* Champs de ticket personnalisés
* Canal (email, chat, téléphone)

**Champs utilisateur :**

* Nom du client
* Adresse email
* Statut VIP
* Champs utilisateur personnalisés
* Date de création du compte

Tu peux référencer ces champs en langage naturel dans tes instructions de workflow ou les utiliser comme entrées pour les outils.

**Exemples :**

```
1. Si le ticket a le tag "urgent", escalade immédiatement
2. Vérifie si le client est VIP avant de traiter le remboursement
3. Utilise le champ priorité du ticket pour déterminer le temps de réponse
4. Passe l'email du client à l'outil @get_customer_profile
```

<Card title="Voir Tous les Outils Disponibles" icon="wrench" href="/outils/index">
  Explorez les outils par défaut, les intégrations pré-configurées, et apprenez comment demander des outils personnalisés
</Card>

## Gestion des erreurs et escalade

Prévoyez toujours une porte de sortie quand l'IA ne peut pas résoudre le problème.

<AccordionGroup>
  <Accordion title="Quand escalader vers un humain" icon="user-headset">
    Utilisez `@escalate_to_agent` dans ces situations :

    * Le client demande explicitement un humain
    * Le problème est trop complexe
    * Une décision sensible est nécessaire
    * L'outil retourne une erreur inattendue

    **Exemple :**

    ```
    Si le montant du remboursement dépasse 500€, escalade vers un agent
    Si le client insiste pour parler à quelqu'un, escalade immédiatement
    ```
  </Accordion>

  <Accordion title="Gérer les erreurs d'outils" icon="triangle-exclamation">
    Parfois un outil ne trouve pas l'information demandée.

    **Exemple :**

    ```
    1. Utilise @get_order_details pour récupérer la commande
    2. Si la commande n'est pas trouvée :
       - Demande au client de vérifier le numéro
       - Propose de chercher avec son email via @get_orders_by_email
    3. Si toujours introuvable, escalade vers un agent
    ```
  </Accordion>

  <Accordion title="Informations manquantes" icon="question">
    Si une info cruciale manque, demandez-la au client.

    **Exemple :**

    ```
    Si le numéro de commande n'est pas dans le message :
    - Demande poliment au client de le fournir
    - Explique où il peut le trouver (email de confirmation, compte client)
    ```
  </Accordion>
</AccordionGroup>

## Configuration du Workflow

Affine la façon dont ton workflow gère les tickets avec ces paramètres supplémentaires :

### Attribution de la Réponse

Choisis quel agent apparaît comme expéditeur quand Quivr répond aux clients.

**Options :**

* **Assigné actuel** - Réponse envoyée au nom de la personne assignée au ticket
* **Agent spécifique** - Toujours répondre comme un membre désigné de l'équipe

Cela aide à maintenir une touche humaine et la responsabilité dans tes interactions de support.

### Statut du Ticket

Définis quel statut de ticket Quivr doit appliquer quand il envoie une réponse avec ce workflow.

**Stratégies courantes :**

**Pendant la phase de validation :**

* Définis le statut sur **"En attente"** pour les premières semaines
* Permet aux agents de réviser et résoudre manuellement les tickets
* Construit la confiance avant l'automatisation complète

**Après validation :**

* Passe au statut **"Résolu"** quand tu es confiant
* Les tickets se résolvent automatiquement sans intervention manuelle
* Réduit considérablement la charge de travail des agents

### Heures de Travail

Configure quand Quivr peut envoyer des réponses aux clients.

**Options :**

* **À tout moment** - Réponses automatisées 24/7
* **Heures spécifiques** - Uniquement pendant les heures de bureau (ex : 9h-17h L-V)
* **Après les heures uniquement** - Fournit une couverture quand l'équipe est hors ligne

Utile pour contrôler quand l'automatisation s'exécute vs quand les agents humains doivent gérer les tickets.

### Délai de Réponse

Ajoute un délai avant que Quivr envoie la réponse aux clients.

**Par défaut :** 0 secondes (réponse immédiate)

**Pourquoi ajouter un délai :**

* Rend les réponses plus humaines et moins instantanées
* Donne l'impression d'une considération réfléchie
* Réduit la perception d'un comportement robotique

**Valeurs typiques :** 30-120 secondes

<Tip>
  La plupart des équipes commencent avec le statut "En attente" et des restrictions d'heures de bureau, puis ouvrent progressivement l'automatisation à mesure que la confiance grandit.
</Tip>

## Exemples de Workflows

Instructions de workflow du monde réel pour t'aider à structurer tes propres automatisations.

<WorkflowExample
  title="Remboursement de Commande"
  whenToUse="Gerer les demandes de remboursement de commande recente des clients"
  steps={[
"Utilise @get_order_details avec l'ID de commande du message du client",
"Verifie si la date de commande est dans les 30 jours",
"Si plus de 30 jours : Refuse le remboursement, explique la politique poliment",
"Si moins de 30 jours : Utilise @process_items_refund pour initier le remboursement",
"Si impossible a verifier : Escalade vers le support humain",
"Si le remboursement reussit : Confirme au client avec le delai de traitement",
"Si le remboursement echoue : Informe le client et escalade vers l'equipe support"
]}
/>

<WorkflowExample
  title="Annulation d'Abonnement"
  whenToUse="Gerer les demandes d'annulation d'abonnement actif des clients"
  steps={[
"Utilise @get_subscription_details avec l'ID d'abonnement",
"Verifie l'eligibilite de l'abonnement",
"Si dans la periode d'engagement de 12 mois : Refuse l'annulation, explique les termes d'engagement",
"Si mensuel ou engagement termine : Utilise @cancel_subscription pour traiter l'annulation",
"Si statut pas clair : Escalade vers le support humain",
"Si l'annulation reussit : Confirme l'annulation et explique les changements de facturation",
"Si l'annulation echoue : Informe le client et escalade vers l'equipe support"
]}
/>

<WorkflowExample
  title="Mise a Jour d'Adresse de Livraison"
  whenToUse="Gerer les demandes de mise a jour d'adresse de livraison pour les commandes futures"
  steps={[
"Utilise @get_customer_profile pour verifier le statut du compte",
"Si le statut du compte est 'suspected fraud' ou 'unpaid balance' : Refuse la mise a jour, explique les restrictions",
"Si le compte est actif : Utilise @validate_address pour verifier la nouvelle adresse",
"Si l'adresse n'est pas dans les regions desservies (US, EU ou Canada) : Refuse et explique les limitations",
"Si l'adresse est valide : Utilise @update_customer_address pour finaliser le changement",
"Si la validation est non concluante : Escalade vers le support humain",
"Si la mise a jour reussit : Confirme le changement et note qu'il affecte toutes les expeditions futures",
"Si la mise a jour echoue : Escalade vers le support humain"
]}
/>
