TL;DR: I built a multi-agent system that audits invoices, detects fiscal inconsistencies, and generates compliance reports — integrated with Odoo ERP and standalone databases.
The Problem
Tax auditing for small and medium businesses in Tunisia is manual, error-prone, and slow. Most accounting firms rely on Excel and manual checks. Regulations change frequently, and keeping up is a full-time job.
I wanted to build something that could ingest financial data, run audit rules automatically, and produce compliance reports — without needing a team of accountants.
The Architecture
The system uses a LangGraph-based multi-agent architecture:
Agent 1: Data Ingestion Agent
- Connects to Odoo ERP or standalone SQL databases
- Extracts invoices, ledgers, and financial statements
- Normalizes data into a unified schema
Agent 2: Audit Agent
- Applies tax rules against the data
- Detects anomalies: missing invoices, misclassified expenses, VAT discrepancies
- Flags items for human review
Agent 3: Reporting Agent
- Generates compliance reports
- Produces a summary of findings with risk levels
- Suggests corrective actions
Orchestrator
- LangGraph manages the flow between agents
- Handles state, retries, and error recovery
Technical Challenges
Schema Mismatch: Every Odoo instance is customized differently. The ingestion agent had to handle dynamic schemas — detecting table structures at runtime and mapping them to a canonical audit model.
Multi-Agent Coordination: Getting three agents to work together without stepping on each other's state was the hardest part. LangGraph's checkpointing was essential here.
Regional Tax Rules: Tunisian tax law isn't well-documented in English. Building the rules engine meant working directly with Arabic and French regulatory texts.
What's Next
- Real-time invoice validation
- Multi-company support
- A dashboard for non-technical accountants
The repo is at github.com/HENI-MOHAMED/Audit-Agent.
Built with Python, FastAPI, LangGraph, Odoo, and a lot of coffee.
Top comments (1)
Great breakdown of the invoice audit flow, especially the detection of fiscal inconsistencies across multi-currency scenarios. Quick question: are you deploying this in production for a specific business, or exploring the technique?
We've handled similar multi-agent + Odoo builds for compliance-heavy industries. If you're scaling past the prototype stage, we've run into predictable edge cases (rounding errors, GL sync latency, LLM hallucination on edge amounts) that trip up most first attempts.
Happy to compare notes if useful.