Required servers (run before opening app):
python server.py → port 7842
Or double-click start.bat to launch both.
Settings tab: Enter Odoo URL, database, username, API key, and Groq API key. Export credentials as a JSON backup and re-import on any device.
Connection modes: Local Server (recommended — fastest, requires Python running) or Proxy (no Python needed, slower).
Unified inbox for Turbify/IMAP, Odoo, and Gmail messages.
Click any email row — expands body preview inline. Click again to collapse.
Reply — opens Quick Compose pre-filled to sender.
✦ Draft — fetches full body, generates AI reply draft using your Groq key.
📋 Log — fetches body, opens note modal. Auto-finds Odoo contact by sender email. Use the search field to override and pick a different contact manually.
📅 — schedule an Odoo activity on the contact.
🗑 — move to Trash on IMAP server (Turbify/IMAP only). Requires imap_server.py running.
Bounce emails: When a delivery failure is detected, the undeliverable address is automatically extracted and pre-filled in the contact search so you can log the bounce to the correct contact.
Scans your Odoo activities due today and drafts follow-up emails using AI.
Connect tab — enter Odoo credentials and click Connect & Scan.
Draft tab — AI drafts a personalized email for each due activity using deal context and last chatter note. Waits 4 seconds between drafts to stay within Groq rate limits.
Send tab — Review drafted emails. Each card has:
• ✉ Draft email — opens Quick Compose pre-filled
• 📋 Log note — posts draft text directly to Odoo chatter
• Skip — skips this email
Follow-up Tracker tab — shows leads you previously pushed to Odoo that have no activity scheduled. Click Schedule to assign one. Requires Odoo connection.
Scans your IMAP inbox for inbound leads matching your configured specs and pushes them to Odoo CRM.
Specs — define what a lead looks like (keywords, minimum budget, exclusions). Multiple specs supported. Set a default.
Scan — reads recent emails, AI extracts contact name, phone, email, and notes. Shows a preview card for each match.
Push to Odoo — creates crm.lead, res.partner, logs a chatter note, schedules a follow-up activity. All in one click.
Follow-up Tracker — tracks pushed leads and shows which ones are missing a scheduled activity in Odoo. Must be connected to Odoo to check.
Finds contacts or open opportunities with no scheduled activity and no recent movement.
Open Opportunities tab — searches crm.lead for deals inactive for N+ days with no activities. Filter by stage, rep, revenue, or exclude a tag.
All Contacts tab — searches res.partner for contacts inactive for N+ days. Filter by type, rep, or exclude a tag.
✦ Draft — AI writes a warm re-engagement email per contact. Uses saved templates or a default prompt.
Send email — sends via IMAP and auto-logs to Odoo chatter.
Bulk schedule — select multiple contacts and schedule a follow-up activity on all of them at once.
Find subcontractors and vendors, send quote requests, and track responses.
Search Odoo vendors — queries your Odoo contacts with supplier_rank > 0. Filter by state, city, and equipment type.
🔍 Find vendors — opens direct links to YellowPages, Yelp, Google, and ThomasNet pre-filled with your search. Copy results and paste into the extract panel. AI extracts name, phone, email, city into vendor cards.
Pending section (gold border) — extracted vendors not yet in Odoo. Click ⬆ Push to Odoo per card or Push all to Odoo to save all as res.partner with supplier_rank=1.
Blast email — sends a quote request to all selected vendors with email addresses via IMAP. Tracks who was contacted.
CRM cards — Pipeline value, Open Opps, Won This Month, Due Today, Odoo Inbox, Stalled Deals, Closing This Month, Lost This Month. Click any card for drill-down details.
⚡ Daily Briefing — AI-generated briefing of your pipeline, due activities, recent wins, and stale deals. Enable Over Achiever mode to also scan flagged emails and add action items. Send to yourself via email.
Accounting cards — Open AR, Overdue, Revenue MTD, Collected MTD. Click for invoice drill-down.
Quick reports — Aged AR (by aging bucket), Top Customers (YTD revenue), Overdue Notices (per customer). All open in a print-ready window with a Save as PDF button.
Quick Compose — floating email composer accessible from anywhere. Sends via your IMAP/SMTP server. Supports AI draft, saved templates, contact book, and preview before sending.
Templates tab — save and manage reusable email templates. Use the wizard to build templates from real inbox emails.
Preview button — renders the composed email in a modal before sending.
App not updating after deploy? — Hard refresh with Ctrl+Shift+R. The service worker cache key increments with each version (currently oel-v9.0) which forces a fresh load.
Odoo calls failing? — Confirm server.py is running on port 7842. In Local Server mode, all Odoo XML-RPC calls route through it. Check the status lights in Settings.
IMAP not working? — Confirm imap_server.py is running on port 7843. Check IMAP credentials in Lead Capture settings. Gmail requires an App Password, not your login password.
AI drafts not generating? — Confirm your Groq API key is entered in Settings. The app uses llama-3.3-70b-versatile by default. Check the model selector if hitting rate limits.
Credentials lost after refresh? — Use Export Credentials to save a JSON backup. Import on any device to restore all settings, specs, and templates.
start.bat in your app folder to start both servers, then click below to verify.