Cette page t'a-t-elle aidé ?
Cette page t'a-t-elle aidé ?
Guide
Gilbert apprend ta voix à partir de tes mails envoyés Gmail les plus représentatifs, et drafte ensuite tes réponses dans ce style, registre professionnel ou familier selon le fil.
Dernière mise à jour : 25 septembre 2026
Deux profils-types se croisent sur cette feature :
Si tu n'as pas encore configuré le forward-to-Gilbert, commence par cette page : l'entraînement n'a d'intérêt que si tu utilises ensuite la voix apprise.
Trois étapes, déclenchées par un clic. Délai typique end-to-end : 30 à 60 secondes selon le provider LLM de ton workspace.
gilbert-user-style-train (event gilbert.user_style.train) appelle l'API Gmail avec tes tokens OAuth perso et liste tes 100 derniers messages dans SENT. Il écarte les transferts et les mails que tu t'es envoyés à toi-même, plafonne à 3 mails par destinataire principal pour qu'un correspondant très sollicité ne fasse pas tout ton style, puis lit les corps par lots et s'arrête dès qu'il en tient 30 exploitables, 60 lectures au plus. Chaque corps est nettoyé du texte cité (l'historique du mail auquel tu réponds) ; les mails trop courts une fois ce nettoyage fait (moins de 120 caractères) sont écartés. Si rien ne passe ces filtres, Gilbert repart des mails disponibles. Pas de scan d'Inbox, pas de lecture des mails reçus, uniquement ce que tu as écrit.getLLMClient(supabase, workspaceId, { tier: "smart" }). C'est ton workspace qui paie ces tokens (BYOLLM Anthropic / Google / OpenAI), tracké via logUsage(pipeline: "user_style_train"). Le parse est sécurisé par generateObject + un schéma Zod strict : le profil retourné est structuré, pas du texte libre.gilbert.user_style_profile avec user_id = auth.uid() comme PK. Une seule row par utilisateur, partagée par tous tes workspaces. Chaque ré-entraînement remplace la précédente (pas d'historique persisté côté row, juste un trained_at).Le profil est un JSON structuré, validé par Zod avant insertion. La carte l'affiche une fois l'entraînement terminé, et tu peux corriger à la main ce qui te gêne. Voici concrètement les champs captés :
| Champ | Ce que ça capte |
|---|---|
| formality | Tu/vous du registre professionnel, celui utilisé avec les clients, partenaires et fournisseurs. |
| registers | Deux registres distincts : professional (comment tu écris aux clients, partenaires et fournisseurs) et familiar (comment tu écris à tes collègues proches). Un brouillon part du registre professionnel par défaut, et ne passe au familier que si le fil tutoie déjà. |
| formulas | Ta formule d'appel et ta formule de fin, par registre : celles que tu emploies avec les clients et celles que tu emploies avec les collègues proches (« Bonjour <Nom>, », « Bien cordialement, »). Le nom du correspondant y reste un emplacement, remplacé au moment de rédiger. Une civilité ne se devine jamais : sans indice, le mail commence par « Bonjour, ». |
| signature_template | Ta signature habituelle, en texte. Gilbert reconnaît aussi plusieurs signatures dans tes envois et choisit celle de l'entité au nom de laquelle tu réponds (voir plus bas). |
| frequent_contacts | Tes correspondants réguliers, avec le ton que tu emploies avec chacun et le sujet qui revient. |
| recurring_topics | Les sujets qui reviennent dans tes mails, pour que Gilbert reconnaisse ton métier sans que tu le lui écrives. |
| language | Langue dominante détectée (fr / en). V1 = single-language ; V1.5 = multi-langue avec sélection au draft selon la langue du mail entrant. |
Exemple de profil construit pour un compte commercial typique :
{
"language": "fr",
"formality": "vouvoyer",
"registers": {
"professional": "Vouvoiement, formules neutres, phrases courtes et actionnables.",
"familiar": "Tutoiement, ton direct, blagues internes tolérées."
},
"formulas": {
"professional": {
"greeting": "Bonjour <Nom>,",
"closing": "Bien cordialement,"
},
"familiar": { "greeting": "Salut <Nom>,", "closing": "À très vite," }
},
"signature_template": "Sophie Durand\nImo Plus",
"frequent_contacts": [
{ "email": "marc@banque-x.fr", "name": "Marc", "tone": "professionnel", "topic": "financements" }
],
"recurring_topics": ["compromis", "états des lieux", "quittances"]
}Chacun ouvre et ferme ses mails à sa façon, et pas de la même façon selon la personne en face. Gilbert retient donc deux paires de formules : celle que tu emploies avec les clients, celle que tu emploies avec les collègues proches. Quatre champs sur la carte te laissent les corriger à la main : « Début de mail avec les clients », « Fin de mail avec les clients », et les deux équivalents pour les collègues proches.
Dans une formule d'appel, écris <Nom> à la place du nom du correspondant : Gilbert le remplace au moment de rédiger (« Bonjour Madame <Nom>, »). Ne mets pas ton propre nom dans la formule de fin, ta signature est apposée juste après.
Côté signature, Gilbert reconnaît plusieurs signatures dans tes mails envoyés et choisit celle de l'entité au nom de laquelle tu réponds, d'après l'adresse qui a reçu le mail et le correspondant. Si tu écris tantôt pour une société, tantôt pour une autre, chaque réponse part sous le bon nom. Quand rien ne permet de trancher, Gilbert applique ta signature la plus fréquente.
L'apprentissage lit tes mails envoyés. Ce qu'il ne peut pas deviner, tu peux le dire toi-même, de deux façons.
Mes consignes, sur la même carte : quelques lignes que Gilbert applique à tous tes brouillons, par exemple « Commence toujours par Bonjour Madame ou Bonjour Monsieur suivi du nom ». Elles valent pour chaque brouillon, dans tous tes espaces, et restent en place quand tu relances l'entraînement. Jusqu'à 1 000 caractères. Les adresses e-mail sont retirées à l'enregistrement, et la carte te le signale. Une consigne ne l'emporte jamais sur la règle de ne rien inventer : quand une information manque, Gilbert laisse un blanc à compléter.
« À refaire », depuis Gmail, pour un seul brouillon qui ne te convient pas :
Retour :, par exemple « Retour : dis Bonjour Monsieur Dupont ». Une ligne par remarque.C'est l'invariant critique de la feature, et le tableau principal de la page (carte violette) l'affiche en clair :« Visible et utilisé uniquement par toi : aucun autre membre du workspace ne voit ton style ».
gilbert.user_style_profile n'autorise SELECT que si user_id = auth.uid(). Pas d'exception admin, pas de override pour les owners du workspace. Un admin qui dumperait la table en SQL via l'UI ne verra que son propre profil.user_id. Si tu es membre des workspaces acme-direction et acme-support, les deux workspaces draftent dans ta voix avec la même row. C'est voulu : ton style est une propriété de toi, pas d'une org.Le profil ne se ré-entraîne pas tout seul : c'est volontaire, pour éviter de cramer du quota LLM sur des refreshes invisibles. À relancer manuellement dans ces cas :
| Capacité | V1 (aujourd'hui) | V1.5 (prévue) |
|---|---|---|
| Fenêtre d'échantillonnage | 100 Sent récents scannés, jusqu'à 30 retenus après filtrage (transferts, texte cité, mails trop courts écartés, 3 par destinataire au plus) | Aucune évolution prévue pour l'instant |
| Détection de langue | Single-language (langue dominante) | Multi-langue, sélection au draft selon le mail entrant |
| Profil par contexte | Un profil global per-user, deux registres (clients / collègues proches) | Multi-style per-user (ex : « direction » vs « support ») |
| Source des messages | Gmail uniquement | Outlook / IMAP générique |
| Auto re-entraînement | Manuel | Cron mensuel optionnel (opt-in) |