Skip to Content

Meetings: our Odoo module so agendas and meeting records stop living in Word

An in-house open-source module that covers the full meeting cycle: agenda, calendar event, meeting record, decisions, attendance, and tasks-to-discuss that show up on the next eligible agenda by themselves

TL;DR:
We built an in-house Odoo module that handles everything around a meeting: agenda, meeting record, decisions, attendance, and tasks to discuss.
Decisions made in a meeting can plug straight into our knowledge matrix, so six months later you still remember why.
Published under an open-source licence in our public catalog (github.com/bluefoxconsultant/odoo-modules), folder bf_meeting.
Born from a simple need: stop scattering meeting traces across Word, OneNote, email threads and post-its stuck to a screen.


Take a minute to think back to your last meeting with a client or team. Who was there? What was decided? Who committed to doing what, by when?

If the answer is in a Word document parked somewhere on a OneDrive, in an email thread, or in the head of whoever took notes that morning, there's a problem. Not right away – in three months, when the decision gets contested or a forgotten task comes back to haunt the project.

That's the problem our Meetings module tries to fix, without adding yet another tool to the stack. Everything lives in Odoo, next to your projects, tasks and contacts.


What it does, in practice

A meeting has a before, a during and an after. Meetings handles all three.

Before: you prep the agenda in Odoo, with the topics, who presents what, and how long each item should take. You send it to participants the day before, straight from the interface, with a branded PDF attached. No need to open Word, Outlook, or a template stashed somewhere on a network share.

During: you keep the record as you go. Topics covered, key points, open questions, decisions made and who made them. Attendance is logged (present, absent, excused).

After: you send the record to participants, again straight from Odoo, with a branded PDF. Decisions made can be pushed into the project's knowledge matrix, so they survive the passage of time. Tasks discussed are either closed, reclassified, or placed on the next meeting's agenda.

Everything is tied to the project, the corresponding Odoo calendar event, and the relevant tasks. From a task, you can see which meeting it'll be discussed at. From a project, you can see the history of records. From a calendar event, you can open the record in one click.


Tasks-to-discuss: the ingredient that took us a while to figure out

This is the part that changes daily practice the most. A task can be flagged as "to discuss in a meeting" in four ways:

  • At this specific meeting: pinned to the agenda of a single meeting. "I want us to talk about this at the May 15 meeting."
  • At the client's next meeting: the task will automatically show up on the next agenda, whichever meeting it is.
  • At the project's next meeting: same logic, but for the next agenda of the specific project.
  • At every meeting until it's resolved: the task comes back to every eligible agenda as long as it stays open.

When you open the agenda, the relevant tasks show up by themselves. When you close the task, or transfer it into the record during the meeting, it disappears. No manual cleanup, no duplicates.

If a meeting is cancelled, pinned tasks get a reminder to reassign them by hand, and tasks marked "next meeting" automatically slide to the one after. Nothing falls through the cracks.

Concretely: you can flag a task as "to discuss with the client at the next meeting," leave it open without thinking about it again, and it'll show up on the agenda by itself when the meeting gets scheduled. It's a small ergonomic detail, but it's what separates "we'll talk about it again" from "we actually talked about it again."


When the decision has to survive the meeting

A decision made in a meeting shouldn't stay buried in a meeting record PDF. It should surface where people will look for it later – in the versioned documentation of the project or organization.

Our knowledge matrix module is built for that: keeping organizational decisions in a clean register, with history. Meetings plugs straight into it. When you log a decision in a meeting record, you can push it into the matrix in one click, with the context of the meeting that produced it. And from a matrix row, you can see every meeting where the decision was discussed.

Six months later, when someone wonders "wait, why did we decide to do it this way?", the answer is traceable back to the original meeting.


PDFs and emails

We took care with the rendering because that's what the client sees. Agendas and meeting records come out as branded PDFs, with a dedicated section for items to discuss. The email templates for sending them out are editable by the administrator, no code required.

Installing Meetings is worth it when at least two of these conditions are true:

  1. Your recurring meetings produce decisions that need to be findable in six months.
  2. Your participants regularly forget that a task was supposed to be raised.
  3. You already keep versioned documentation (matrix, register, policies) that you want to feed from meetings.
  4. You manually send meeting records by email after every meeting, and it's eating your time.


The limits to know about

The module assumes a meeting is tied to a project. For a one-off meeting with no defined project, you have to create a container project, which can feel heavy. We designed it for organizations that already structure their work by project.

It depends on our knowledge matrix module. The two install together without friction, but if you don't want the matrix, Meetings is not the tool for you.

Note-taking during the meeting happens in Odoo, user by user. We don't replace a tool dedicated to real-time collaborative note-taking, like Etherpad or Nextcloud's collaborative notes. This is a tool for structuring and archiving, not for live multi-user capture.

To import AI transcripts (Teams, Whisper, etc.), you go through copy-paste or through an external tool that feeds the meeting record. We have an in-house meeting processor that handles this in batch, but it isn't bundled with the module. Anyone wanting a direct integration would have to add it.

Finally, there's no official commercial support: the code is provided as-is, under an open-source licence. We answer questions on GitHub when we can, but that's not a contractual commitment.


At Blue Fox

We use Meetings every day, for every client meeting and every internal meeting. Every agenda goes out by email the day before, with the PDF attached. Every record is sent after the meeting, often the same day. Tasks discussed are either closed, reclassified, or transferred on the spot.

For a client running Odoo Community with us, the module installs in one command. We deploy it for clients whose volume of structured meetings makes the few hours of familiarization worth it. For everyone else, we stay on lighter use of the standard Odoo calendar, without forcing the tool.

The code lives in the bf_meeting folder of our public repo. We gave it a quick tour in our article on the 19 in-house modules; this one is the deep dive.

If you're looking to structure meeting follow-up without adding yet another tool to your stack, let's talk about your situation.


Sources

Our 19 in-house Odoo modules are on GitHub: here's what's inside
Our public catalog, born from our internal needs: what was missing in Odoo Community, how we plugged the gaps, and why the code lives on GitHub instead of in a drawer