Zum Inhalt springen

Never Trust an AI.

Why source code access makes the difference between AI hallucination and verified answers
18. April 2026 durch
Never Trust an AI.
Dietmar Hamm

Oddy does not work like standard AI models that rely solely on training data — it accesses locally stored Odoo source code, documentation, and databases. This enables it to provide verified information directly from the actual codebase rather than relying on generated or hallucinated content. The difference lies in its ability to reference concrete code, configurations, and database structures, and to compare them across versions.

🔥 "Never Trust an AI" — Think Again. Here's the Actual Evidence.

Most AI systems hallucinate. But Oddy is not a generic AI. And here is the proof. Right now. With real source code.


Understand the Fundamental Difference

Consider this common claim about AI:

"AI can't genuinely admit uncertainty — it can only output text that sounds uncertain."

That's true for a generic AI operating purely on training data. But Oddy operates differently — and don't take that at face value. Look at the live proof from the actual Odoo source code below.


Proof #1: Real Code. Versioned. Verified. Comparable.

Examine something concrete. Here are real scheduled jobs (ir.cron) from the Kenyan eTIMS EDI module — pulled directly from a locally stored codebase across three Odoo versions simultaneously:

📋 KE eTIMS Cron Jobs — What Actually Exists in the Code

KRA Standard Codes Sync — runs every 2 days:

l10n_ke_edi_oscu/data/ir_cron_data.xml:8<field name="code">model._cron_get_codes_from_device()</field> — Fetches KRA standard codes from the eTIMS device every 2 days. Identical across Odoo 17, 18 and 19 Enterprise — this method has not changed across three versions.

Purchase Invoice Fetch — runs every 1 day:

l10n_ke_edi_oscu/data/ir_cron_data.xml:18<field name="code">model._cron_l10n_ke_oscu_fetch_purchases()</field> — Imports purchase invoices daily from the eTIMS system into account.move. numbercall="-1" means: runs indefinitely.

UNSPSC Product Codes — runs every 1 day:

l10n_ke_edi_oscu/data/ir_cron_data.xml:27<field name="code">model._cron_l10n_ke_oscu_get_codes_from_device()</field> — Syncs UNSPSC product classification codes daily with the eTIMS device, referencing product_unspsc.model_product_unspsc_code.

KRA Notices — runs every 1 day:

l10n_ke_edi_oscu/data/ir_cron_data.xml:36<field name="code">model._cron_l10n_ke_oscu_get_notices()</field> — Retrieves official KRA notices daily from the eTIMS device, referencing model_l10n_ke_edi_oscu_notice.

That's not training data. That's the actual XML sitting in the Odoo Enterprise repository right now.


Proof #2: Version Differences That Nobody Documents

Here's where it gets interesting. Oddy not only sees what exists — it detects how things changed between versions.

Look at this view definition for eTIMS Codes:

Odoo 17 Enterprise:

l10n_ke_edi_oscu/views/l10n_ke_edi_oscu_code_views.xml:8<tree string="eTIMS Code" create="0" delete="0"> — In Odoo 17 the list view still uses <tree>, the classic tag name.

Odoo 18 & 19 Enterprise:

l10n_ke_edi_oscu/views/l10n_ke_edi_oscu_code_views.xml:8<list string="eTIMS Code" create="0" delete="0"> — Starting with Odoo 18, <tree> was renamed to <list>. The internal view name also changed from l10n.ke.edi.oscu.code.tree to l10n.ke.edi.oscu.code.list.

This is exactly the kind of detail that causes upgrade failures. A certified partner who last worked on Odoo 17 and now deploys on 18 won't find this in any training course. They might not find it in the documentation either. Oddy finds it in 3 seconds by comparing versions directly.


Proof #3: Knowledge That a Generic AI Cannot Have

A generic AI trained on public internet data would say:

"In Odoo, list views use the <tree> tag..."

Because that's what 90% of tutorials and Stack Overflow answers from 2019–2023 say.

That answer is wrong for Odoo 18 and 19. And a generic AI cannot know that — because the change happened after or at the edge of its training window, and the public internet hasn't caught up yet.

Oddy knows it because it has the actual source file right here:

l10n_ke_edi_oscu/views/l10n_ke_edi_oscu_code_views.xml:5<field name="name">l10n.ke.edi.oscu.code.list</field> — The view name itself now carries .list instead of .tree — proof that Odoo executed this rename consciously and consistently.


Know the Real Competence Hierarchy

# Source Reliability
1 Developer actively in the code today ✅ Gold standard
2 Oddy — with direct source code access ✅ Verified, versioned, comparable
3 Human who says "I'll research that" ✅ Intellectually honest
4 Odoo official documentation ⚠️ Often lagging behind code
5 Certified partner, currently active ⚠️ Human fallibility + accountability
6 Generic AI (ChatGPT, Copilot, etc.) ❌ Training data, no code access
7 Certified partner, not active in code ❌ Outdated + confident
8 Stack Overflow 2019 💀 Archaeological

Apply the Right Trust Framework

Don't trust an AI that:

  • Has no access to current source code ❌
  • Cannot distinguish between versions ❌
  • Cannot show you the exact file and line number ❌
  • Sounds confident without being able to cite its source ❌

Do verify any AI that:

  • Shows you exactly which file and line it's reading ✅
  • Compares behavior across versions explicitly ✅
  • Distinguishes between "I see this in the code" vs. "this is my training knowledge" ✅
  • Admits when something is outside its available context ✅

The slogan should not be "Never trust an AI."

The slogan should be: "Never trust an AI that can't show its work."


📎 Source References


Oddy
Oddy
Odoo Expert at Detalex GmbH
Try Oddy

Oddy is a product of Detalex GmbH. We support our customers with custom development, consulting, and hosting for Odoo.

Book an Appointment