<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_AIRA_BI</id>
	<title>Module AIRA BI - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=Module_AIRA_BI"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_AIRA_BI&amp;action=history"/>
	<updated>2026-11-14T19:33:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_AIRA_BI&amp;diff=69016&amp;oldid=prev</id>
		<title>Weglob: Version 1.4.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_AIRA_BI&amp;diff=69016&amp;oldid=prev"/>
		<updated>2026-11-12T16:33:13Z</updated>

		<summary type="html">&lt;p&gt;Version 1.4.3&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:33, 12 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l26&quot;&gt;Line 26:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 26:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Status || Stable&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Status || Stable&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Version || 1.4.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Version || 1.4.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;3&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Module ID || 500100&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Module ID || 500100&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki_test:diff::1.12:old-69011:rev-69016 --&gt;
&lt;/table&gt;</summary>
		<author><name>Weglob</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=Module_AIRA_BI&amp;diff=69011&amp;oldid=prev</id>
		<title>Weglob: New page: Module AIRA BI (Weglob module documentation)</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=Module_AIRA_BI&amp;diff=69011&amp;oldid=prev"/>
		<updated>2026-11-12T16:15:53Z</updated>

		<summary type="html">&lt;p&gt;New page: Module AIRA BI (Weglob module documentation)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!-- BEGIN origin interlang links --&amp;gt;&lt;br /&gt;
&amp;lt;!-- You can edit this section but do NOT remove these comments&lt;br /&gt;
     Links below will be automatically replicated on translated pages by PolyglotBot --&amp;gt;&lt;br /&gt;
[[fr:Module_AIRA_BI_(FR)]]&lt;br /&gt;
&amp;lt;!-- END interlang links --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{TemplateDocUser}}&lt;br /&gt;
{{TemplateModuleInfo&lt;br /&gt;
|modulename=AIRA BI&lt;br /&gt;
|editor=Weglob&lt;br /&gt;
|web=https://weglob.com&lt;br /&gt;
|webbuy=https://www.dolistore.com/product.php?id=2841&lt;br /&gt;
|status=stable&lt;br /&gt;
|prerequisites=Dolibarr 19.0+, PHP 8.0+, an AI provider API key&lt;br /&gt;
|minversion=19.0&lt;br /&gt;
|note=Module ID 500100&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
= Module AIRA BI =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Name !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Publisher || Weglob&lt;br /&gt;
|-&lt;br /&gt;
| Status || Stable&lt;br /&gt;
|-&lt;br /&gt;
| Version || 1.4.2&lt;br /&gt;
|-&lt;br /&gt;
| Module ID || 500100&lt;br /&gt;
|-&lt;br /&gt;
| Dolibarr compatibility || 19.0 and later&lt;br /&gt;
|-&lt;br /&gt;
| License || GPL v3 or later&lt;br /&gt;
|-&lt;br /&gt;
| Languages || English, French&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;AIRA BI&amp;#039;&amp;#039;&amp;#039; is an AI assistant built into Dolibarr. Users ask questions about their ERP data in plain language and get the answer as text, a table or a chart.&lt;br /&gt;
&lt;br /&gt;
Example questions:&lt;br /&gt;
* &amp;#039;&amp;#039;sales by month over 6 months&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;top 10 customers by revenue&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;unpaid invoices by customer&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;bank account balances&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;projects by status&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The engine follows a controlled flow: &amp;#039;&amp;#039;&amp;#039;question → schema context → AI plan → validation → read-only SQL → display in the chat&amp;#039;&amp;#039;&amp;#039;. It is a Dolibarr assistant, not a general-purpose chatbot.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Answers as &amp;#039;&amp;#039;&amp;#039;text, table or chart&amp;#039;&amp;#039;&amp;#039; depending on the question.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Conversation memory&amp;#039;&amp;#039;&amp;#039;: follow-up questions, refine a filter, ask for another view.&lt;br /&gt;
* Conversations saved &amp;#039;&amp;#039;&amp;#039;per user and per entity&amp;#039;&amp;#039;&amp;#039;, reopen or delete them from the sidebar.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Links to native reports&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;customreports.php&amp;#039;&amp;#039;) when the result matches a Dolibarr report.&lt;br /&gt;
* Starter suggestions on the welcome screen, shown only when the user has the required rights.&lt;br /&gt;
* Help on Dolibarr usage (&amp;quot;how do I create an invoice?&amp;quot;) without reading the database.&lt;br /&gt;
* Choice of AI provider: &amp;#039;&amp;#039;&amp;#039;OpenRouter&amp;#039;&amp;#039;&amp;#039; (hundreds of models, some free), &amp;#039;&amp;#039;&amp;#039;OpenAI&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Google Gemini&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;NVIDIA&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Clear error messages (provider, model, technical error) when the AI API fails.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
Every query goes through a SQL guard:&lt;br /&gt;
* &amp;#039;&amp;#039;SELECT&amp;#039;&amp;#039; only, a single statement, no comments or variables.&lt;br /&gt;
* No write queries, no export (&amp;#039;&amp;#039;INTO OUTFILE&amp;#039;&amp;#039;), no system schemas.&lt;br /&gt;
* Whitelist of business tables: each table needs the matching Dolibarr module &amp;#039;&amp;#039;&amp;#039;and&amp;#039;&amp;#039;&amp;#039; the user&amp;#039;s permission (e.g. invoices require &amp;quot;Read invoices&amp;quot;).&lt;br /&gt;
* Sensitive columns are blocked (passwords, API keys, tokens).&lt;br /&gt;
* &amp;#039;&amp;#039;entity&amp;#039;&amp;#039; filter enforced (multi-company safe).&lt;br /&gt;
* Row count and execution time are capped.&lt;br /&gt;
* Runs in a read-only transaction, or with a read-only MySQL user (recommended).&lt;br /&gt;
&lt;br /&gt;
API keys and the read-only MySQL password are encrypted in the database and never displayed again.&lt;br /&gt;
&lt;br /&gt;
== Privacy ==&lt;br /&gt;
Sent to the AI provider: the question, the conversation history and the description of the allowed tables. &amp;#039;&amp;#039;&amp;#039;Query results are not sent.&amp;#039;&amp;#039;&amp;#039; Free offers (OpenRouter &amp;#039;&amp;#039;:free&amp;#039;&amp;#039; models, Gemini free tier, NVIDIA trial credits) may log prompts: prefer a paid offer for sensitive data.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&amp;lt;gallery widths=400 heights=250&amp;gt;&lt;br /&gt;
File:AIRA_BI_welcome.png|Welcome screen with suggestions&lt;br /&gt;
File:AIRA_BI_chart.png|Answer as a chart: sales by month&lt;br /&gt;
File:AIRA_BI_setup.png|Setup: choice of AI provider&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
# Buy and download the module zip from DoliStore.&lt;br /&gt;
# Go to &amp;#039;&amp;#039;Home &amp;gt; Setup &amp;gt; Modules/Applications &amp;gt; Deploy/install external module&amp;#039;&amp;#039; and upload the zip.&lt;br /&gt;
# Or unzip it manually into &amp;#039;&amp;#039;htdocs/custom/&amp;#039;&amp;#039; so you get &amp;#039;&amp;#039;htdocs/custom/aichat&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
# Enable the &amp;#039;&amp;#039;&amp;#039;AIRA BI&amp;#039;&amp;#039;&amp;#039; module.&lt;br /&gt;
# Open the module setup page.&lt;br /&gt;
# Choose the provider: OpenRouter, OpenAI, Google Gemini or NVIDIA.&lt;br /&gt;
# Enter the API key (a &amp;quot;Get a key&amp;quot; button opens the provider page).&lt;br /&gt;
# Choose the model. For OpenRouter, the list comes from the live catalog with prices and context size; a warning is shown if the configured model was removed.&lt;br /&gt;
# Save.&lt;br /&gt;
# Optional but recommended: create a read-only MySQL user and enter it in the setup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CREATE USER &amp;#039;dolibarr_ro&amp;#039;@&amp;#039;localhost&amp;#039; IDENTIFIED BY &amp;#039;password&amp;#039;;&lt;br /&gt;
GRANT SELECT ON dolibarr.* TO &amp;#039;dolibarr_ro&amp;#039;@&amp;#039;localhost&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Optional: enable the Dolibarr BI / reports feature to get &amp;#039;&amp;#039;customreports&amp;#039;&amp;#039; links in the chat.&lt;br /&gt;
&lt;br /&gt;
The Dolibarr server must reach the provider API over HTTPS (PHP &amp;#039;&amp;#039;curl.cainfo&amp;#039;&amp;#039; set with root certificates).&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
;The assistant answers with an AI error&lt;br /&gt;
:Check the API key, the quota and that the model is still available. The message shows the provider and model in use.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;No data found&amp;quot;&lt;br /&gt;
:No Dolibarr record matches. Change the period or the filter.&lt;br /&gt;
&lt;br /&gt;
;A user does not see some suggestions or gets a refusal&lt;br /&gt;
:The user lacks the Dolibarr permission on the module behind that data (invoices, orders, bank...). This is intended.&lt;br /&gt;
&lt;br /&gt;
;Can it modify my data?&lt;br /&gt;
:No. Only read-only &amp;#039;&amp;#039;SELECT&amp;#039;&amp;#039; queries are allowed.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
* Email: contact@weglob.com&lt;br /&gt;
* Website: [https://weglob.com weglob.com]&lt;br /&gt;
* LinkedIn: [https://www.linkedin.com/in/mohamed-aggoubi/ Mohamed Aggoubi]&lt;br /&gt;
&lt;br /&gt;
[[Category:Complementary modules]]&lt;br /&gt;
[[Category:DocUserEN]]&lt;/div&gt;</summary>
		<author><name>Weglob</name></author>
	</entry>
</feed>