Cette page t'a-t-elle aidé ?

Cette page t'a-t-elle aidé ?
Guide
Tâches LLM planifiées par cron, scopées à votre workspace
Dernière mise à jour : 23 mai 2026
Vous êtes IT lead d'une agence immobilière de 12 agents commerciaux. Tous les matins, chaque agent perd 30 minutes à trier ses mails : leads chauds noyés dans les newsletters, dossiers en cours mélangés avec la pub. Vous voulez automatiser ce tri.
Voici une routine concrète, livrable en un après-midi :
| Nom | Tri morning mails |
| Workspace | agence-dupont (un workspace partagé par les 12 agents) |
| Cron | 0 7 * * 1-5 (07:00 Paris, lun-ven) |
| Provider | Google Gemini (BYOLLM — clé API Workspace Google déjà payée) |
| Intégrations requises | Google (Gmail OAuth) + Telegram (bot configuré côté workspace) |
| Tools utilisés | gmail_list_recent · gmail_read_message · gmail_create_draft · notify_telegram |
| Canal de sortie | Récap Telegram + drafts directement dans Gmail (review humaine avant envoi) |
Le prompt complet de la routine :
Tu es l'assistant matinal de notre agence immobilière.
1. Appelle gmail_list_recent avec max_results=50 et query='in:inbox newer_than:12h -label:Gilbert/Processed'.
2. Pour chaque mail, classe-le dans UNE des catégories :
- lead_chaud : nouveau prospect acheteur ou vendeur, demande de visite, estimation
- dossier : mail lié à un dossier en cours (notaire, banque, locataire, copropriété)
- pub : newsletter, prospection commerciale, alertes portails — à ignorer
- autre : interne, RH, comptabilité
3. Pour chaque lead_chaud, lis le corps complet via gmail_read_message(message_id) puis crée
un draft de réponse via gmail_create_draft({thread_id, in_reply_to, to, subject, body}).
Le body : concis, professionnel, en français, propose 2 créneaux de RDV ou demande
l'info manquante (bien, budget, zone). L'agent reverra le draft avant envoi.
4. Envoie un récap Telegram à l'agent commercial via notify_telegram avec :
- nb leads chauds détectés (et drafts créés)
- nb mails dossiers en cours à traiter (titre + expéditeur)
- total mails non-lus traités
Réponse finale en markdown : tableau récap par catégorie + une ligne par lead chaud
avec destinataire, sujet et intention détectée.Deux chemins selon votre confort :
Ouvrez Gilbert dans le chat et utilisez le wizard intégré :
https://gilbert.solveholding.com/chat?wizard=routineGilbert vous pose 3 questions (objectif en une ligne, fréquence, provider) puis crée la routine avec des defaults raisonnables. Vous l'ajustez ensuite depuis la Console. Délai typique : 2 minutes pour la première routine, sans toucher un fichier de config.
Allez sur Console → Routines puis cliquez + Créer une routine. Vous arrivez sur la page workspace où vous pouvez soit importer un preset (Drafts quotidiens Gmail, Top stories Hacker News, Veille IA HuggingFace…) soit créer une routine from scratch avec le formulaire complet : nom, task_id, description, cron, provider, prompt, canaux de sortie.
Chaque routine choisit son provider à la création parmi trois options. La clé API utilisée est celle de votre workspace, configurée une seule fois par l'IT.
| Provider | Bon choix si… |
|---|---|
| anthropic | Vous avez déjà un compte Claude pour vos équipes. Excellent sur le raisonnement et le respect d'instructions longues. |
| Vous êtes déjà sur Google Workspace — la facturation Gemini va sur le même compte. Choix par défaut pour les boîtes B2B équipées Workspace. | |
| openai | Vous avez un compte OpenAI Org et préférez la facturation côté OpenAI. |
Configurer la clé API workspace. L'IT va sur Console → Workspace → Providers LLM et colle la clé. Elle est chiffrée au repos avant stockage. Voir Workspaces pour le détail (rotation, fallback inter-providers, key versioning).
Une routine reçoit automatiquement les tools dont l'intégration source est connectée à son workspace. Pas de configuration tool-par-tool : si Gmail OAuth est actif, les 4 tools Gmail sont là.
| Intégration | Tools débloqués |
|---|---|
| Gmail (OAuth Google) | gmail_list_recent · gmail_search · gmail_read_message · gmail_create_draft |
| Calendar (OAuth Google) | calendar_list_today · calendar_list_range |
| Repos GitHub liés | repo_list_files · repo_read_file · repo_search |
| Telegram (bot workspace) | notify_telegram |
| Slack (workspace) | slack_post_to_channel |
| LinkedIn (OAuth) | publish_linkedin_post |
| Toujours dispo (sans OAuth) | fetch_url (SSRF-safe, max 500 KB) |
Pour activer une intégration, voir Intégrations.
La syntaxe est le cron POSIX 5 champs : minute heure jour mois jour-semaine. Quelques recettes :
# Chaque matin à 7h (heure de Paris)
0 7 * * *
# Chaque lundi à 8h (heure de Paris)
0 8 * * 1
# Toutes les heures, pile
0 * * * *
# Lundi à vendredi à 9h (heure de Paris)
0 9 * * 1-5
# Toutes les 15 minutes
*/15 * * * *Cycle de vie depuis la page détail (/console/workspaces/<id>/routines/<routineId>) :
| Action | Effet |
|---|---|
| Run now | Trigger manuel hors planning. La page poll automatiquement toutes les 2s jusqu'à la fin du run, et affiche l'output au fur et à mesure. Indisponible pour les routines provider anthropic (exécution déléguée à Claude Code chez vous, voir MCP). |
| Stop | Annule un run en cours (soft-stop). La row passe à status=cancelled. Le LLM finit son step en cours puis sort. |
| Pause / Reprendre | Désactive (resp. réactive) la souscription du membre : plus de run cron, plus de notification. La routine elle-même reste active pour les autres subscribers. Réversible à tout moment. |
| Archiver | Met la routine en status=archived, désactive tous les jobs cron associés. Réservé au créateur. Non destructif : l'historique des runs est conservé. |
Chaque run affiche son output rendu en markdown sur la page détail (tableaux, listes, code blocks), avec le nombre de tokens consommés (in/out), le modèle utilisé, et le statut de delivery par canal (ex : telegram: ok,slack: skipped).
paused ou archived ⇒ pas de tick.failed ? Ouvrez la page détail, le bloc Erreur donne le message brut (rate limit provider, OAuth scope manquant, tool absent…).revoked_at indique une déconnexion OAuth. Reconnectez.Chaque run est bornée à 10 steps tool max (MAX_TOOL_STEPS = 10 dans routineExecutor.ts). Si le LLM n'a pas produit de texte final après 10 steps, le run sort en erreur avec le message “LLM n'a produit aucun texte final après 10/10 steps” et la liste des tools appelés — utile pour debug le prompt (boucle infinie sur le même tool, scope trop large, etc.).
Vérifiez le bloc Delivery status sur la page détail du run. Trois valeurs possibles par canal : ok, skipped (pas de paire Telegram/Slack configurée pour ce membre), failed(erreur API Telegram/Slack — le message d'erreur est loggé).
list_routines.Exemple complet rappelé en un bloc, prêt à coller dans le wizard :
# Lundi à vendredi, 7h du matin. Le cron est interprété en heure
# locale Europe/Paris (DST-aware) — pas de conversion UTC à faire.
# Voir section "Cron syntax" plus bas.
0 7 * * 1-5