a daily journal of odoo

Honest writing about Odoo, every day.

No sales pitch. No "book a demo." Just one deep, useful post a day — across three tracks for three kinds of reader. Business owners thinking about Odoo. Users already inside it. Developers extending it.

Latest posts

The ten most recent, across all tracks.

  1. Users

    Odoo 19 replaced Create Bill with Upload — and that's the right call

    Odoo 19 dropped the Create Bill button on confirmed POs in favour of an Upload action. Here's why that's correct, and how to bring the old click back if you must.

  2. Developers

    Is there an LLM trained on Odoo's source? Probably not the one you want

    No public model is fine-tuned on Odoo 19 source. Here's why, and the RAG setup that actually fixes Cursor's stale answers.

  3. Users

    Odoo 20 merged Field Service into Planning — and it's the right call

    Field Service is no longer a separate app in Odoo 20. It's a checkbox inside Planning. Here's where to find it and what changes after upgrade.

  4. Developers

    Put your Odoo behind a tailnet so the public internet never sees it

    If only staff use your Odoo, the public internet doesn't need to. Bind to the Tailscale interface, close 443, and stop fighting /web/login brute force.

  5. Users

    Direct printing is coming to Odoo 20: what it changes for your day

    Odoo 20 looks set to add native direct printing through a local proxy, killing the download-then-print loop for invoices and delivery slips.

  6. Developers

    Why your computed field isn't recomputing

    A computed field that refuses to update is almost always a missing @api.depends. But about 10% of the time, it's something weirder.

  7. Users

    The Odoo search bar is smarter than you think

    Four keystrokes that will change how you find things in Odoo. Works in every list view, in every module, in every version since 15.

  8. Owners

    Every Odoo quote you receive will be wrong

    Not dishonest — wrong. Implementation quotes are estimates built on assumptions that rarely survive month two. Here's how to read them.

The pledge

01

No popups. No modals. No "join now" interruptions.

02

This site contains ads. Google-served display ads pay for hosting. No sponsored posts, no affiliate schemes dressed up as advice.

03

No SEO filler. If a post isn't worth reading, it doesn't get published.

04

No lock-in. Every post is CC BY 4.0. Take it, translate it, share it.