A suite of TypeScript/Bun integration tools designed to connect Odoo ERP, Brevo, and Google Calendar into a cohesive automated sales assistant.
This repository leverages the @quatrain ecosystem for unified logging, API clients (both REST and XML-RPC), and interactive prompt helper utilities.
- Odoo CRM (
odoo-integration): Search partners, update contacts, create new contacts, and manage calendar events in Odoo using a fast XML-RPC connector (@quatrain/api-xmlrpc). - Brevo Email Marketing (
brevo-integration): Query, insert, and update newsletter and CRM contacts via the Brevo REST API client. - Google Calendar (
google-calendar): Access Google Calendars using service account credentials. Supports listing, creating, and deleting events.
- Google Calendar to Odoo Meetings Sync (
sync-meetings-to-odoo): An interactive command-line orchestrator that:- Pulls events from Google Calendar for a target date.
- Resolves attendees' emails against Odoo partners.
- Prompts the user interactively (using inquirer-based helpers) to create missing contacts, update incomplete names, and create Odoo calendar meetings linked to those partners.
├── .env.dist # Template for environment configuration
├── package.json # Project dependencies (linked local @quatrain workspaces)
├── tsconfig.json # Path mappings for direct Bun execution
├── service_account.json # (Optional) Google Service Account key file
├── packages/ # Atomic skill packages (vendor integrations)
│ ├── google/ # @quatrain/skills-google
│ │ ├── SKILL.md
│ │ ├── calendar.ts
│ │ └── cli.ts
│ ├── odoo/ # @quatrain/skills-odoo
│ │ ├── SKILL.md
│ │ └── cli.ts
│ ├── brevo/ # @quatrain/skills-brevo
│ │ ├── SKILL.md
│ │ └── cli.ts
│ └── n8n/ # @quatrain/skills-n8n
│ ├── SKILL.md
│ └── cli.ts
├── actions/ # Composite action packages
│ └── sync-meetings/ # @quatrain/actions-sync-meetings
│ ├── SKILL.md
│ └── scripts/
│ └── sync_meetings_cli.ts
Duplicate .env.dist as .env and fill in the credentials:
# Odoo ERP Configuration
ODOO_URL="https://your-instance.odoo.com"
ODOO_DB="your_database_name"
ODOO_USER="your_email@company.com"
ODOO_PASSWORD="your_password_or_api_key"
# Brevo API Configuration
BREVO_API_KEY="your_brevo_v3_api_key"
# Path to the Google Service Account key file (optional if placed at root as 'service_account.json')
GOOGLE_APPLICATION_CREDENTIALS="service_account.json"Download your Google Cloud Service Account key file and:
- Place it at the root of the repository as
service_account.json, OR - Place it anywhere and set its absolute path in the
GOOGLE_APPLICATION_CREDENTIALSenvironment variable inside.env.
This repository is structured as a Gemini/Custom Agent Skill Set. To activate these skills and allow your LLM coding assistant to automatically discover, read, and run these commands, configure customization roots:
Create a directory named .agents at the root of your workspace, and create/link the skill definitions:
mkdir -p .agents/skills
ln -s ../../packages/google .agents/skills/google-calendar
ln -s ../../packages/odoo .agents/skills/odoo-integration
ln -s ../../packages/brevo .agents/skills/brevo-integration
ln -s ../../packages/n8n .agents/skills/n8n-integration
ln -s ../../actions/sync-meetings .agents/skills/sync-meetings-to-odooAlternatively, copy or link these directories into your global configuration directory (usually located at ~/.gemini/config/skills/):
cp -r packages/* ~/.gemini/config/skills/
cp -r actions/* ~/.gemini/config/skills/Once linked/copied, the LLM agent will detect the frontmatter name and description in each SKILL.md (e.g. google-calendar, odoo-integration), matching user requests to the respective CLI tools and executing actions autonomously.
Future integrations planned for this skill set:
- Gmail Integration: Automated email reading, sending, and syncing email thread histories with Odoo partners.
- Brad Central API Integration: Direct interaction with the Brad Technology central API to orchestrate settings, workspace state, and cross-agent communications.