odoo-openclaw-skillQuery Odoo data including salesperson performance, customer analytics, orders, invoices, CRM, accounting, VAT, inventory, and AR/AP. Generates WhatsApp cards...
Install via ClawdBot CLI:
clawdbot install ashrf-in/odoo-openclaw-skillRead-only, Evidence-First, Ledger-Based Reports
| Model | What It Contains | Use For |
|-------|------------------|---------|
| res.users | Users/Salespeople | Find salesperson by name, get user_id |
| sale.order | Sales Orders | Revenue by salesperson, order counts, status |
| account.move | Invoices/Journal Entries | Invoice tracking, payments, P&L data |
| res.partner | Contacts/Customers | Customer info, top customers by revenue |
| product.product | Products | Product sales, inventory |
| account.account | Chart of Accounts | Financial reporting, balance sheet |
| account.move.line | Journal Lines | Detailed ledger entries |
This skill requires Odoo connection credentials stored in assets/autonomous-cfo/.env:
| Variable | Description | Secret |
|----------|-------------|--------|
| ODOO_URL | Odoo instance URL (e.g., https://your-odoo.com) | No |
| ODOO_DB | Odoo database name | No |
| ODOO_USER | Odoo username/email | No |
| ODOO_PASSWORD | Odoo password or API key | Yes |
Setup:
cd skills/odoo/assets/autonomous-cfo
cp .env.example .env
# Edit .env with your actual credentials
nano .env
Model invocation is DISABLED per skill.json policy. This skill handles sensitive financial data and external Odoo connections — it must be explicitly invoked by the user.
Data Handling: All queries are read-only. No data is modified or exfiltrated.
create, write, unlink, etc.) are blocked at the client levelassets/autonomous-cfo/output/.envThe skill requires a Python virtual environment with specific packages:
cd skills/odoo/assets/autonomous-cfo
./install.sh
Or manually:
cd skills/odoo/assets/autonomous-cfo
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
Dependencies: requests, matplotlib, pillow, fpdf2, openpyxl
Uses the venv with fpdf2, matplotlib, pillow for proper PDF/chart generation:
./skills/odoo/assets/autonomous-cfo/venv/bin/python ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py <command>
Or from the skill directory:
cd skills/odoo/assets/autonomous-cfo && ./venv/bin/python src/tools/cfo_cli.py <command>
Reports should be built from:
account.account - Chart of Accounts structure (code, name, type, internal_group)account.move.line - Journal entry lines (debit, credit, account_id, date)account.journal - Source journals (type: sale, purchase, cash, bank, general)asset_cash - Bank and cash accountsasset_receivable - Accounts receivableasset_current - Current assetsliability_payable - Accounts payableincome - Revenueexpense - Expensesequity - Standard equity accounts (share capital, retained earnings)equity_unaffected - Suspense account for undistributed profits/losses (e.g., 999999)CRITICAL for Balance Sheet:
Odoo's equity_unaffected is a SUSPENSE account. Do NOT use its ledger balance directly.
Correct Equity Calculation:
equity) - Use ledger balance (credit - debit)equity_unaffectedTotal Equity = Equity Proper + Retained Earnings + Current Year Earnings
Where Current Year Earnings = Σ(income credit-debit) - Σ(expense debit-credit)
Why this matters: Odoo computes Current Year Earnings in real-time on the Balance Sheet. Using only the equity_unaffected ledger balance will cause the balance sheet to NOT balance.
The skill automatically detects the company's accounting standard based on country/jurisdiction and formats reports accordingly.
Supported Standards:
| Standard | Jurisdiction | Notes |
|----------|--------------|-------|
| IFRS | International | Default for most countries |
| US GAAP | United States | SEC registrants |
| Ind-AS | India | Indian GAAP converged with IFRS |
| UK GAAP | United Kingdom | FRS 102 |
| SOCPA | Saudi Arabia | IFRS adopted |
| EU IFRS | European Union | IAS Regulation |
| CAS | China | Chinese Accounting Standards |
| JGAAP | Japan | Japanese GAAP |
| ASPE | Canada | Private enterprises |
| AASB | Australia | Australian standards |
Detection Logic:
res.companyOverride:
# Force a specific standard
reporter.generate(..., standard="US_GAAP")
# Salesperson performance - use direct RPC for flexibility
./venv/bin/python -c "
from src.visualizers.whatsapp_cards import WhatsAppCardGenerator
# Query sale.order by user_id, aggregate by month/status
# Generate cards with generate_kpi_card() and generate_comparison_card()
"
# Example RPC query for salesperson:
# - sale.order (user_id, amount_total, state, date_order)
# - account.move (invoice_user_id, amount_total, payment_state)
# - res.users (salesperson info)
# - res.partner (customer info)
# Financial Health - cash flow, liquidity, burn rate, runway
cfo_cli.py health --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# Revenue Analytics - MoM trends, top customers
cfo_cli.py revenue --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# AR/AP Aging - overdue buckets
cfo_cli.py aging --as-of YYYY-MM-DD --company-id ID
# Expense Breakdown - by vendor/category
cfo_cli.py expenses --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
# Executive Summary - one-page CFO snapshot
cfo_cli.py executive --from YYYY-MM-DD --to YYYY-MM-DD --company-id ID
For sales/CRM data not covered by pre-built commands, use direct RPC:
# Query sales orders by salesperson
orders = jsonrpc('sale.order', 'search_read',
[[('user_id', '=', SALESPERSON_ID)]],
{'fields': ['name', 'partner_id', 'amount_total', 'state', 'date_order']})
# Query invoices by salesperson
invoices = jsonrpc('account.move', 'search_read',
[[('invoice_user_id', '=', SALESPERSON_ID), ('move_type', '=', 'out_invoice')]],
{'fields': ['name', 'partner_id', 'amount_total', 'payment_state']})
# Find salesperson by name
users = jsonrpc('res.users', 'search_read',
[[('name', 'ilike', 'name_here')]],
{'fields': ['id', 'name', 'login']})
# Custom comparison
cfo_cli.py adhoc --from YYYY-MM-DD --to YYYY-MM-DD --metric-a "revenue" --metric-b "expenses"
# Examples:
cfo_cli.py adhoc --metric-a "cash in" --metric-b "cash out"
cfo_cli.py adhoc --metric-a "direct expenses" --metric-b "indirect expenses"
--output whatsapp # Dark theme 1080x1080 PNG cards
--output pdf # Light theme A4 PDF
--output excel # Excel workbook (.xlsx)
--output both # PDF + WhatsApp cards
--output all # PDF + Excel + WhatsApp cards
Reports always include appropriate visualizations by default:
| Report | Auto-Included Charts |
|--------|---------------------|
| Financial Health | Cash position, burn rate trend, runway |
| Revenue | MoM trend, top customers, growth KPI |
| AR/AP Aging | Aging buckets pie, overdue highlights |
| Expenses | Category breakdown, trend, top vendors |
| Executive | All KPI cards, summary charts |
| Balance Sheet | Asset/liability composition |
| P&L | Revenue vs expense, margin trend |
| Cash Flow | Operating breakdown, cash trend |
Rule: If visualization makes the report clearer, include it automatically. Never ask "do you want charts?" — just add them.
If required params are missing, the skill will ask:
Just ask naturally:
Sales & CRM:
Financial Reports:
General Queries:
The skill will:
python3 ./skills/odoo/assets/autonomous-cfo/src/tools/cfo_cli.py doctor
Generated Mar 1, 2026
A retail manager needs to track salesperson performance by analyzing sales orders and revenue data from Odoo. The skill generates reports showing top performers, order counts, and revenue trends over a specified period, outputting PDF summaries for review meetings.
A manufacturing company's CFO requires accurate balance sheets and profit & loss statements using Odoo's ledger data. The skill pulls journal entries and chart of accounts to compute equity correctly, ensuring reports adhere to IFRS standards for regulatory compliance.
An e-commerce business owner wants to identify top customers and analyze purchasing patterns from Odoo's partner and order data. The skill generates WhatsApp cards and Excel files highlighting customer revenue, helping in targeted marketing campaigns.
A wholesale distributor needs to monitor product sales and inventory levels using Odoo's product and order models. The skill creates reports on best-selling items and stock status, aiding in inventory replenishment decisions and supply chain optimization.
A service-based firm requires tracking invoices and payments to manage accounts receivable and payable in Odoo. The skill analyzes account.move data to generate reports on outstanding invoices, cash flow projections, and payment trends for financial planning.
This model involves subscription-based software sales where recurring revenue tracking is crucial. The skill can analyze invoice data and customer accounts in Odoo to monitor churn, renewal rates, and revenue recognition over time.
Operating an online platform connecting buyers and sellers requires handling high volumes of orders and transactions. The skill leverages Odoo's sale.order and partner models to report on sales trends, commission earnings, and top-selling categories.
This model focuses on producing and selling physical goods with complex supply chains. The skill uses Odoo's inventory and accounting data to generate reports on production costs, inventory turnover, and profitability per product line.
💬 Integration Tip
Ensure Odoo credentials are securely stored in environment variables and verify date ranges with users before generating reports to avoid data inaccuracies.
Transform AI agents from task-followers into proactive partners that anticipate needs and continuously improve. Now with WAL Protocol, Working Buffer, Autonomous Crons, and battle-tested patterns. Part of the Hal Stack 🦞
Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.
Clawdbot documentation expert with decision tree navigation, search scripts, doc fetching, version tracking, and config snippets for all Clawdbot features
Interact with Moltbook social network for AI agents. Post, reply, browse, and analyze engagement. Use when the user wants to engage with Moltbook, check their feed, reply to posts, or track their activity on the agent social network.
OpenClaw CLI wrapper — gateway, channels, models, agents, nodes, browser, memory, security, automation.
MoltGuard — runtime security plugin for OpenClaw agents by OpenGuardrails. Helps users install, register, activate, and check the status of MoltGuard. Use wh...