Case study · Odoo + AI agent

An accountancy firm's ERP, with an AI agent that has to ask first

The firm wanted one system for clients, jobs, documents and billing, and an AI assistant staff could simply message. The hard part was not the AI. It was making sure the agent sees only what the firm has agreed it may see, and changes nothing without a person approving it.

The client

A chartered accountancy firm in Pakistan running audits, tax returns and advisory work for its clients. We do not name clients on this site; we are happy to talk about the work in detail on a call.

What needed to change

  • Client records, NTN, CNIC, STRN and SECP numbers kept in several places.
  • Audit and tax-return jobs tracked in spreadsheets, with deadlines missed.
  • Working papers in shared folders with no version history.
  • A wish to use AI, but only within the firm's confidentiality rules.

What we built

No.PartWhat it means in practice
01Client master and accessEvery client with its tax identifiers, year end, engagement partner and team. Staff see only their own clients; roles for staff, managers and partners.
02Jobs and deadlinesOne job per audit, return or assignment, with owner, due date and stages per service line, and a partners' board.
03DocumentsA folder opened automatically for every client and every job, spreadsheets edited in the browser, and a version kept for every save.
04BillingService lines, fee items with Islamabad sales tax on services, aged receivables and practice reports.
05The AI agentStaff message the agent inside Odoo. It is Claude, working only through Odoo's API with its own restricted login, so Odoo's access rules decide what it can see.
06Approval queueEverything the agent drafts waits for a person to approve. Every question and answer is logged.
07Consent per clientClients are invisible to the agent until the firm marks them as inside AI reach, with the written agreement recorded.

How it runs now

The agent is switched off by default and is turned on client by client, once the firm has written agreement. The firm's own Claude account is used, so the data and the bill stay with the firm.

Built with: Odoo 19 Community, Python custom modules, Claude (Anthropic API), Odoo JSON-2 API, ONLYOFFICE, PostgreSQL, Docker.

WhatsApp

Book a meeting

Free 30-minute call