Publier une newsletter mensuelle est un exercice qui paraît simple sur le papier mais qui, dans la réalité des PME, tourne souvent au casse-tête. Les informations intéressantes arrivent tout au long du mois — un post LinkedIn remarqué, un nouveau client signé, un retour presse, un témoignage client, une mise à jour produit — mais personne n'a le temps, le dernier lundi du mois, de tout rassembler, de trier, de rédiger un édito cohérent et de mettre en forme un email correctement segmenté.
Avec Odoo 19, sorti en septembre 2025, cette problématique change de nature. Odoo ne se contente plus d'intégrer quelques fonctionnalités IA isolées comme l'OCR sur les factures ou le scoring des leads : l'IA est désormais un citoyen de première classe de l'ERP, disponible partout où l'on écrit, filtre, automatise ou communique. Et c'est précisément cette intégration transversale qui rend faisable un cas d'usage qui aurait nécessité du code spécifique il y a encore un an : générer automatiquement une newsletter mensuelle à partir de documents déposés au fil de l'eau.
Dans ce tutoriel, je vais vous montrer pas à pas comment construire ce workflow en combinant quatre briques standard d'Odoo 19 : le module Documents pour collecter les informations, l'application AI pour raisonner dessus, Email Marketing pour la diffusion, et les actions planifiées pour orchestrer le tout une fois par mois sans intervention humaine.
Ce qui distingue cet article : nous avons construit ce workflow chez Stellarius en avril 2026, nous avons buté sur une douzaine d'obstacles que la documentation officielle ne mentionne pas, et le code que vous trouverez ici tourne réellement en production. C'est probablement ce qui vous fera gagner le plus de temps si vous voulez reproduire la démarche.
Pourquoi ce workflow est devenu possible avec Odoo 19
Avant de plonger dans la configuration, un point rapide sur ce qui a changé. Dans Odoo 17 et 18, l'IA existait mais sous forme de fonctionnalités ponctuelles : un bouton pour générer un texte dans un champ HTML, une OCR sur les factures fournisseurs, le scoring prédictif des opportunités. C'était utile mais cloisonné.
Odoo 19 introduit une application AI dédiée qui sert de hub central. Depuis cette application, vous créez des agents IA configurables, vous branchez votre propre clé API (OpenAI ChatGPT ou Google Gemini), et surtout vous définissez des sources — c'est-à-dire les contenus sur lesquels l'IA doit s'appuyer pour générer ses réponses. Le système repose techniquement sur un pipeline RAG (Retrieval-Augmented Generation) avec une base vectorielle PostgreSQL (extension pgvector), gérée automatiquement par Odoo pour vous.
Deux autres éléments rendent notre cas d'usage particulièrement élégant. D'une part, les actions serveur en mode "Exécuter le code" permettent d'orchestrer toute une chaîne métier en quelques lignes de Python. D'autre part, les actions planifiées (cron) déclenchent ces server actions de manière récurrente — c'est cette combinaison qui va orchestrer notre newsletter mensuelle.
Un point pratique important : la plupart de ces fonctionnalités IA requièrent Odoo Enterprise avec l'application AI activée et une clé API valide. Les utilisateurs de Community devront se tourner vers des modules tiers — ce tutoriel ne s'applique pas directement à eux.
L'architecture du workflow en une vue d'ensemble
Voici la logique globale que nous allons mettre en place :
- Tout au long du mois, les contributeurs (vous, vos collaborateurs, un stagiaire communication) déposent des fichiers dans un dossier dédié de Documents — textes courts, captures d'écran, PDF d'articles de presse, comptes rendus d'événements.
- Un agent IA est configuré pour utiliser ces documents comme sources. Son system prompt définit son rôle : rédiger une newsletter pour l'entreprise dans un ton donné, en suivant une structure prédéfinie.
- Un mailing "maître" dans Email Marketing sert de modèle visuel (layout, liste de diffusion).
- Une server action sait appeler l'agent, récupérer le contenu rédigé, nettoyer le format et créer un brouillon de mailing à partir du maître avec ce contenu injecté.
- Une action planifiée déclenche cette server action le 25 de chaque mois. Vous recevez une notification, vous relisez le brouillon, vous ajustez si nécessaire, vous validez l'envoi programmé.
On garde volontairement un humain dans la boucle pour la validation finale. L'IA produit un brouillon de qualité, pas un envoi à l'aveugle — c'est un choix éditorial et une question de responsabilité légale (RGPD, loi Informatique et Libertés).
Étape 1 — Préparer l'environnement Odoo
Installez et activez les applications nécessaires depuis Apps :
- AI (ai) — cœur du dispositif
- Documents — collecte des contributions
- Email Marketing (mass_mailing) — diffusion
Une fois les applications installées, rendez-vous dans AI → Configuration → Settings et renseignez votre clé API. Odoo 19 accepte nativement OpenAI (ChatGPT jusqu'à la version 5) et Google Gemini. Pour un usage newsletter, gpt-4o ou équivalent Gemini offre un bon rapport qualité/coût.
Activez également le mode développeur via Paramètres → Activer le mode développeur. Il sera indispensable pour accéder aux server actions et aux actions planifiées.
⚠️ Piège n°1 — Compatibilité navigateur
L'interface de chat IA d'Odoo 19 utilise le streaming HTTP pour afficher les réponses au fur et à mesure. Ce mécanisme repose sur une API JavaScript (ReadableStream.prototype[Symbol.asyncIterator]) qui n'est pleinement supportée qu'à partir de Safari 18.4 (mars 2025). Si vous utilisez une version antérieure, vous verrez une erreur jsonStreamDecoder / undefined is not a function (near '...chunk of asyncStream...') dès que vous testez un agent.
Solution : utilisez Chrome, Edge, Firefox (≥ 131) ou Brave pour toutes les opérations touchant à l'IA. Cela nous a coûté deux heures de diagnostic avant de comprendre — autant vous épargner ce détour.
Étape 2 — Structurer le dossier Documents de collecte
Ouvrez l'application Documents et créez un nouveau dossier nommé par exemple Newsletter - Contributions du mois. À l'intérieur, créez une arborescence simple :
- 01 — Actus entreprise
- 02 — Cas clients & témoignages
- 03 — Produit & roadmap
- 04 — Événements & conférences
- 05 — Revue de presse & mentions
Cette segmentation a deux vertus. Premièrement, elle structure la pensée des contributeurs : au moment de déposer un fichier, ils se posent la question de sa catégorie. Deuxièmement, elle permettra à l'IA de produire une newsletter avec des rubriques cohérentes sans qu'on ait besoin de lui expliquer à chaque fois où classer chaque élément.
Adoptez une convention de nommage courte mais informative : AAAA-MM-JJ_titre-court.ext. Par exemple : 2026-04-15_nouveau-client-metropole-marseille.txt. La date en tête permet de filtrer facilement les contributions, et le titre descriptif aide l'IA à saisir rapidement le sujet.
Pour les contributions textuelles, privilégiez les formats texte brut (.txt), Markdown (.md), HTML (.html). Odoo 19 prévisualise ces formats nativement.
⚠️ Piège n°2 — La densité des contributions
Voici un point crucial appris à la dure : le pipeline RAG d'Odoo fonctionne par similarité sémantique entre votre prompt et les chunks indexés. Si vos fichiers sont trop courts (moins de 200 mots), ils produisent des chunks "maigres" qui perdent systématiquement la compétition contre d'autres sources, même quand ils sont parfaitement pertinents. L'agent vous dira "je n'ai pas d'information sur ce sujet" alors que le fichier est bien là, bien indexé.
Deux parades :
- Enrichir chaque contribution avec au minimum 300-400 mots : un titre descriptif, un paragraphe de contexte, le cœur de l'info, et quelques mots sur la pertinence pour la newsletter.
- Évitez les frontmatter YAML en tête de vos fichiers (les blocs --- avec des clés) : ils polluent l'embedding. Mettez ces métadonnées dans le corps du texte en phrases complètes.
Un conseil que nous donnons toujours à nos clients chez Stellarius : rédigez un petit guide de contribution d'une page, stockez-le comme document épinglé dans le dossier, et formez vos contributeurs en quinze minutes. Un bon matériau d'entrée vaut tous les prompts du monde.

Étape 3 — Créer l'agent IA "Rédacteur Newsletter"
Rendez-vous dans AI → Agents → Nouveau.
Nom : Rédacteur Newsletter Stellarius (adaptez à votre société).
Modèle LLM : gpt-4o ou gemini-1.5-pro selon votre fournisseur.
Style de réponse : Équilibré est généralement le bon choix pour une newsletter. Analytique produit des sorties trop froides, Créatif peut dériver d'une exécution à l'autre.
System prompt : voici un exemple à adapter, qui intègre les leçons apprises sur les comportements indésirables des LLM en sortie :
Tu es le rédacteur de la newsletter mensuelle de Stellarius, intégrateur Odoo basé aux Antilles-Guyane. Ton lectorat est composé de dirigeants de PME, de responsables SI, et de prospects intéressés par l'ERP Odoo. Ton ton est professionnel mais chaleureux, factuel et concis, jamais promotionnel à outrance. Tu écris systématiquement à la première personne du pluriel ("nous").
Chaque newsletter suit la structure suivante : un édito de 4 à 6 phrases qui met en perspective l'actualité du mois, puis quatre à cinq rubriques correspondant aux dossiers du workspace (Actus entreprise, Cas clients, Produit & roadmap, Événements, Revue de presse). Pour chaque rubrique, tu rédiges 2 à 4 paragraphes courts qui synthétisent les contributions du mois. Tu ne fabriques JAMAIS d'information : si une rubrique est vide, tu l'omets purement et simplement.
Avant de rédiger, tu commences toujours par dresser un inventaire à puces des faits mentionnés dans chaque source disponible, sans en omettre. Ce n'est qu'ensuite que tu rédiges la newsletter à partir de cet inventaire.
Tu produis du HTML simple (balises h2, h3, p, strong, em, ul, li, a uniquement), prêt à être injecté dans un bloc email. Tu ne mets JAMAIS de bloc de code Markdown autour de ton HTML (pas de triples backticks ```html). Tu ne mentionnes JAMAIS les IDs des sources entre crochets type [SOURCE:170] dans le texte final. N'inclus ni en-tête, ni footer, ni signature. Longueur totale visée : 600 à 900 mots. Tu termines par un appel à l'action sobre vers notre site stellarius.fr.
L'astuce de l'inventaire préalable est importante : elle force le modèle à faire plusieurs requêtes RAG successives avec des angles différents, ce qui améliore drastiquement le rappel des sources face à un prompt large.
Les deux instructions en gras (pas de bloc Markdown, pas de référence [SOURCE:xxx]) sont des filets de sécurité contre des comportements LLM systématiques que vous rencontrerez sinon : les modèles enrobent volontiers leur HTML dans ```html ... ```, et ils citent automatiquement les IDs des sources RAG quand ils en ont. Ces deux artefacts cassent l'affichage du mailing si on ne les neutralise pas.
Restreindre aux sources : cochez cette case. C'est crucial pour éviter les hallucinations.
Sources : descendez dans l'onglet Sources et cliquez sur Ajouter une source → Documents. Cochez tous les documents du dossier. Vous pouvez aussi ajouter en source des articles Knowledge (charte éditoriale, liste de services, études de cas de référence) : cela permet à l'IA de contextualiser sans que vous ayez à les redéposer chaque mois.
⚠️ Piège n°3 — Statut d'indexation
Après l'ajout d'une source, son statut passe par Processing puis Indexed. Tant que la source est en Processing, elle n'est pas utilisable. Et sans basculer le toggle Active en position "on", elle reste invisible du RAG même une fois indexée. Vérifiez les deux avant tout test.
Sauvegardez. Testez immédiatement l'agent en cliquant sur le bouton Test en haut de sa fiche. Commencez par une question très ciblée sur un contenu connu ("Que dit le document du 15 avril ?") avant de passer au prompt global. Si le ciblé fonctionne et le global pas, c'est un problème de densité de contributions (voir étape 2).
Étape 4 — Créer le mailing maître et la Server Action
C'est ici que nous automatisons tout. La logique tient en trois objets : un mailing maître qui sert de modèle visuel, une server action qui appelle l'agent et duplique ce maître avec le contenu IA, et une action planifiée (étape 5) qui déclenche tout ça.
4.1 — Créer le mailing maître
Allez dans Email Marketing → Nouveau. Configurez :
- Objet : peu importe (il sera réécrit à chaque génération), mettez par exemple [Modèle] Newsletter mensuelle.
- Liste de diffusion : associez celle qui recevra les newsletters.
- Layout : choisissez "Plain Text" pour démarrer simple, ou un layout design si vous voulez hériter d'un en-tête et d'un pied de page que la server action conservera.
Le corps peut être complètement vide : la server action écrasera entièrement le body_html à chaque génération. Sauvegardez sans envoyer.
Notez l'ID du mailing visible dans l'URL en mode développeur (id=1 dans mon cas). C'est ce numéro qui sera référencé dans le code.
4.2 — Créer la Server Action
Allez dans Paramètres → Technique → Actions → Actions serveur → Nouveau.
Nom : Générer newsletter mensuelle. Modèle : Mass Mailing (mailing.mailing). Type : Exécuter le code.
Voici le code, testé en production sur une instance saas-19.2 :
# === Paramètres à adapter ===
MAILING_MAITRE_ID = 1 # ID du mailing modèle créé en 4.1
WORKSPACE_NAME_PATTERN = 'Newsletter%Contributions' # ilike sur le nom du dossier
AGENT_NAME = 'Rédacteur Newsletter Stellarius'
# === Alias pratique ===
relativedelta = dateutil.relativedelta.relativedelta
# === 1. Recherche du dossier de contributions ===
Document = env['documents.document']
workspace = Document.search([
('name', 'ilike', WORKSPACE_NAME_PATTERN)
], limit=1)
if not workspace:
raise UserError("Dossier de contributions introuvable.")
# === 2. Fenêtre de date (mois écoulé) ===
today = datetime.date.today()
first_day_last_month = today.replace(day=1) - relativedelta(months=1)
last_day_last_month = today.replace(day=1) - relativedelta(days=1)
# === 3. Récupération des contributions (vrais fichiers uniquement) ===
contributions = Document.search([
('folder_id', 'child_of', workspace.id),
('id', '!=', workspace.id), # exclure le dossier racine lui-même
('type', '!=', 'folder'), # exclure les sous-dossiers
('create_date', '>=', first_day_last_month),
('create_date', '<=', last_day_last_month),
])
# === 4. Idempotence : pas de double génération ===
mois_annee = first_day_last_month.strftime('%B %Y')
existing = env['mailing.mailing'].search([
('subject', 'ilike', '%' + mois_annee + '%'),
('state', '=', 'draft'),
], limit=1)
# === 5. Génération si conditions OK ===
if contributions and not existing:
agent = env['ai.agent'].search([('name', '=', AGENT_NAME)], limit=1)
if not agent:
raise UserError("Agent IA introuvable.")
prompt = (
"Rédige la newsletter mensuelle pour la période du "
+ first_day_last_month.strftime('%d/%m/%Y')
+ " au "
+ last_day_last_month.strftime('%d/%m/%Y')
+ ". Utilise exclusivement les contributions disponibles dans tes sources "
+ "pour cette période. Respecte scrupuleusement les consignes de ton system prompt."
)
# _generate_response est un GÉNÉRATEUR qui yield des tuples (status, content)
# Il faut l'itérer et extraire le 2e élément de chaque tuple
chunks_html = []
for chunk in agent._generate_response(prompt=prompt):
if chunk and len(chunk) >= 2 and chunk[0]:
chunks_html.append(chunk[1])
response_html = ''.join(chunks_html).strip()
# Nettoyage : retirer les éventuels blocs markdown ```html ... ```
if response_html.startswith('```html'):
response_html = response_html[7:]
elif response_html.startswith('```'):
response_html = response_html[3:]
if response_html.endswith('```'):
response_html = response_html[:-3]
response_html = response_html.strip()
# === 6. Duplication du mailing maître avec le contenu généré ===
template = env['mailing.mailing'].browse(MAILING_MAITRE_ID)
if not template.exists():
raise UserError("Mailing maître introuvable.")
new_mailing = template.copy({
'subject': '[Stellarius] Notre actualité — ' + mois_annee,
'body_html': response_html,
'body_arch': response_html,
'state': 'draft',
'schedule_date': datetime.datetime.now() + relativedelta(days=5),
})
⚠️ Piège n°4 — Restrictions de safe_eval
Le code des server actions Odoo n'est pas exécuté dans un interpréteur Python normal. Il passe par safe_eval, qui interdit un grand nombre d'opérations pour des raisons de sécurité. Ce qui n'est pas disponible :
- return au niveau racine (toujours encapsuler dans un if/else)
- import (les modules autorisés sont pré-injectés)
- dir(), type(), getattr(), setattr() (pas d'introspection)
- Le module fields d'Odoo (utilisez datetime.date.today() à la place de fields.Date.today())
- Les f-strings complexes dans certaines configurations (la concaténation + est plus sûre)
Ce qui est disponible : env, model, record, records, datetime, dateutil, time, UserError, Warning, b64encode, b64decode, Command, log.
⚠️ Piège n°5 — La méthode _generate_response est un générateur
C'est l'obstacle le plus inattendu. Quand on appelle agent._generate_response(prompt=...), on n'obtient pas une chaîne de caractères mais un objet générateur Python. Si vous l'injectez tel quel dans body_html, vous obtenez <generator object AIAgent._generate_response at 0x...> dans votre brouillon. Il faut itérer dessus.
De plus, chaque chunk renvoyé est un tuple (status, content) où status est un booléen (True = succès) et content est la chaîne de texte. Il faut donc filtrer sur le statut et concaténer les contenus.
⚠️ Piège n°6 — Les LLM enveloppent leur HTML dans des blocs Markdown
Même quand on demande explicitement du HTML, GPT-4 et Gemini répondent fréquemment avec :
```html <h2>Édito</h2> <p>...</p>
Les triples backticks ne sont pas du HTML valide et l'éditeur Odoo affichera "Unknown error when sanitizing". D'où le double dispositif : instruction explicite dans le system prompt, **et** nettoyage défensif dans le code Python.
⚠️ Piège n°7 — Le dossier racine est `child_of` de lui-même
Quand on fait une recherche `('folder_id', 'child_of', workspace.id)`, le dossier racine apparaît dans ses propres résultats. Sans le filtre `('id', '!=', workspace.id)`, il serait compté comme une "contribution" et fausserait la condition de génération. C'est un comportement Odoo standard mais surprenant.
4.3 — Tester manuellement
Avant de planifier le cron, testez la server action en cliquant sur Exécuter (bouton en haut à droite de la fiche). Si tout va bien, un nouveau brouillon apparaît dans Email Marketing avec un beau corps de newsletter. Si une erreur remonte, la trace pointera précisément la ligne fautive — utilisez l'astuce du `raise UserError(message_de_debug)` pour afficher des variables intermédiaires (puisque `print` n'est pas accessible dans safe_eval, c'est le seul canal de debug).
Étape 5 — Planifier l'exécution mensuelle
Allez dans Paramètres → Technique → Automatisation → Actions planifiées → Nouveau.
- Nom : `Cron - Génération newsletter mensuelle`
- Modèle : `Mass Mailing` (`mailing.mailing`)
- Exécuter tous les : 1 Mois
- Prochaine exécution : le 25 du mois courant à 09:00
- Nombre d'appels : -1 (illimité)
Code à exécuter:
action = env['ir.actions.server'].search([
('name', '=', 'Générer newsletter mensuelle')
], limit=1)
if action:
action.run()
C'est volontairement minimaliste. Toute la logique est dans la server action de l'étape 4 (qui contient déjà l'idempotence). Le cron se contente de la déclencher.
Étape 6 — Circuit de validation humaine
Nous le répètons parce que c'est fondamental : ne jamais envoyer une newsletter générée par IA sans relecture humaine.
La qualité d'abord. Même avec un bon system prompt et des sources propres, un LLM peut produire des formulations maladroites, répéter une idée, mal hiérarchiser, ou faire une faute (nous avons eu "complex" au lieu de "complexe" dans mon premier rendu). Une relecture de dix minutes remonte la quasi-totalité de ces défauts.
La conformité ensuite. Le RGPD impose que vous maîtrisiez ce que vous envoyez à vos abonnés. Un contenu généré sur lequel personne n'a porté de regard est juridiquement fragile en cas de plainte.
La marque enfin. Votre ton, vos messages, vos choix éditoriaux — c'est ce qui vous différencie. Déléguer totalement à l'IA, c'est diluer votre voix.
Concrètement, le circuit que nous recommandons. Le 25 du mois, l'action planifiée produit un brouillon. Le responsable communication reçoit la notification dans son Discuss Odoo. Il a jusqu'au 30 pour relire, ajuster l'édito si besoin, corriger une formulation. L'envoi est programmé pour le 1er du mois suivant à 9h00. Si quelque chose ne va pas, il peut repasser le mailing en mode brouillon et reporter.

Synthèse des pièges rencontrés
En construisant ce workflow chez Stellarius, nous avons rencontré une douzaine de difficultés que la documentation officielle passe sous silence. Les voici groupées pour anticipation :
Côté navigateur et UI : Safari < 18.4 ne supporte pas correctement le streaming IA d'Odoo 19. Passez à Chrome/Edge/Firefox/Brave pour les opérations IA. La commande /Prompt directement dans l'éditeur Email Marketing n'est disponible que dans le layout "Plain Text", pas dans les layouts design — d'où l'architecture par server action plutôt que par prompt embarqué.
Côté Documents et RAG : les sources doivent être en statut "Indexed" ET avec le toggle "Active" sur on. Des contributions trop courtes (< 200 mots) produisent des embeddings faibles qui perdent le retrieval — enrichir ou consolider. Les frontmatter YAML et le Markdown riche polluent les embeddings. Le dossier racine apparaît dans child_of de lui-même — filtrer avec ('id', '!=', workspace.id) et ('type', '!=', 'folder').
Côté safe_eval (server actions) : pas de return au niveau racine, pas d'import, pas de dir() ni de type(). Le module fields n'est pas disponible — utiliser datetime.date.today() et datetime.datetime.now(). Pas de XMLID type votre_module.xxx si vous n'avez pas créé de module — préférer la recherche par nom.
Côté API agent : la méthode _generate_response est un générateur qui livre des tuples (status, content). Il faut l'itérer et concaténer les seconds éléments. Les LLM enrobent souvent le HTML dans des blocs Markdown ```html ... ``` qui cassent le sanitizing — instruction explicite dans le prompt + nettoyage défensif en Python. Les LLM citent automatiquement les IDs de sources RAG ([SOURCE:170]) — interdire explicitement dans le system prompt.
Côté Email Marketing : les mail.template techniques (Paramètres → Technique) et les Mailing Templates visuels d'Email Marketing sont deux mondes distincts qui ne communiquent pas. Pour une newsletter, travailler uniquement dans Email Marketing. Le corps du mailing maître peut être vide — la server action écrase entièrement le body_html.
Ces points ne sont pas des défauts rédhibitoires — le workflow fonctionne très bien une fois qu'on les a tous adressés. Mais ils expliquent pourquoi un tutoriel "lisse" qui recopie la doc officielle vous laissera patauger plusieurs heures en conditions réelles.
Aller plus loin : raffinements utiles en production
Une fois le workflow de base en place, voici trois améliorations qui apportent un vrai gain en exploitation.
Le tri IA des contributions entrantes. Odoo 19 permet de déclencher des actions IA appliquées aux documents. Vous pouvez créer une règle qui, à chaque dépôt d'un fichier dans un dossier générique "Inbox", demande à l'IA de le classer automatiquement dans la bonne rubrique. Vos contributeurs gagnent du temps, la qualité du classement s'améliore avec la pratique.
La segmentation par persona. Plutôt qu'une seule newsletter, produisez-en deux : une pour les dirigeants (ton stratégique, chiffres, cas clients), une pour les responsables SI (ton technique, roadmap produit, intégrations). Dupliquez votre agent IA avec des system prompts différents et pointez-les sur les mêmes sources. Deux server actions, deux listes de diffusion, même collecte amont — et une pertinence perçue bien supérieure.
La boucle de feedback. Activez les analytics Email Marketing d'Odoo 19 et regardez quelles rubriques obtiennent les meilleurs taux de clic. Une fois par trimestre, ajustez le system prompt en conséquence — demandez à l'agent de mettre davantage en avant les cas clients si c'est ce qui performe. L'IA ne s'améliore pas toute seule ; c'est vous qui la pilotez en lisant ses résultats.
Ce que ce workflow change concrètement
Au-delà du gain de temps immédiat (typiquement 4 à 6 heures mensuelles réduites à 30-45 minutes de relecture), le gain le plus intéressant est ailleurs. En forçant les contributeurs à déposer leurs infos au fil de l'eau plutôt qu'à les rassembler à la dernière minute, on construit progressivement une mémoire d'entreprise structurée — un corpus utile bien au-delà de la newsletter : pour alimenter le site web, préparer des dossiers commerciaux, nourrir le rapport annuel, ou entraîner d'autres agents IA internes. La newsletter n'est que la pointe émergée d'un système de capitalisation de connaissance.
C'est, pour nous, la vraie promesse d'Odoo 19 : l'IA n'est plus un gadget pour faire gagner trois minutes sur un email, c'est l'occasion de repenser la manière dont l'information circule dans l'entreprise. Avec ses limites actuelles — que j'ai volontairement mises en lumière dans cet article — et un chemin de maturité qui va s'améliorer version après version.
Vous souhaitez déployer ce workflow chez vous ou explorer d'autres cas d'usage IA sur Odoo 19 ? Contactez Stellarius, partenaire Odoo officiel depuis 2024.