Skip to Content

Schema: ai_sam_lead_generator

Schema: ai_sam_lead_generator

Technical Truth - Models, API endpoints, and data structures


Module Overview

Attribute Value
Technical Name ai_sam_lead_generator
Version 18.0.1.0.0
Total Models 3 + 1 inherit (ai.lead.campaign, ai.lead.industry, ai.lead.source.config + res.config.settings)
Total Controllers 0
API Endpoints 0 (uses Odoo RPC)

Models

ai.lead.campaign (Primary Model)

Purpose: Manages lead generation campaigns with scraping configuration and execution.

Field Type Required Description
name Char Yes Campaign name
description Text No Campaign description
campaign_type Selection Yes google_search, forum_scraping, industry_specific, website_enrichment, comprehensive
target_industries Many2many No Industries to target
target_countries Many2many No Geographic targeting
search_queries Text No Custom Google search queries
max_results_per_query Integer No Max results per query (default: 20)
min_lead_score Integer No Minimum score to import (default: 50)
focus_on_odoo_users Boolean No Only find Odoo users (default: True)
target_odoo_versions Char No Comma-separated versions to target
state Selection Yes draft, running, completed, failed, cancelled
total_leads_found Integer No Computed: total leads
hot_leads_count Integer No Computed: hot leads
warm_leads_count Integer No Computed: warm leads
imported_to_crm_count Integer No Computed: imported leads
started_at Datetime No Execution start time
completed_at Datetime No Execution end time
error_message Text No Error if failed
execution_log Text No Execution log
api_key Char No ScraperAPI key
ai_configured Boolean No Configured via SAM AI
ai_configuration Text No AI configuration JSON

Key Methods:
| Method | Purpose | Returns |
|--------|---------|---------|
| action_configure_with_ai() | Open SAM AI wizard | Window action |
| action_run_campaign() | Execute the campaign | Window action |
| action_view_leads() | View scraped leads | Window action |
| action_import_to_crm() | Import leads to CRM | Notification |
| _run_google_search() | Execute Google search | None |
| _run_forum_scraping() | Execute forum scraping | None |
| _run_industry_search() | Execute industry search | None |
| _run_comprehensive() | Execute all sources | None |

Relationships:
- target_industries → ai.lead.industry (Many2many)
- target_countries → res.country (Many2many)


ai.lead.industry

Purpose: Industry categories for targeted lead generation.

Field Type Required Description
name Char Yes Industry name
code Char Yes Industry code
description Text No Description

ai.lead.source.config

Purpose: Stores ScraperAPI settings and data source configurations.

Field Type Required Description
name Char Yes Configuration name
active Boolean No Active flag (only one can be active)
scraperapi_key Char Yes ScraperAPI key
scraperapi_base_url Char Yes API base URL (default: http://api.scraperapi.com)
concurrent_requests Integer No Max concurrent requests (default: 10)
request_delay Float No Delay between requests (default: 2.0)
max_retries Integer No Max retries (default: 3)
timeout Integer No Request timeout (default: 30)
enable_linkedin Boolean No Enable LinkedIn (default: False)
enable_github Boolean No Enable GitHub (default: True)
enable_odoo_partners Boolean No Enable Odoo partners (default: True)
enable_job_boards Boolean No Enable job boards (default: True)
enable_forums Boolean No Enable forums (default: True)
enable_google_search Boolean No Enable Google search (default: True)
default_max_results Integer No Default max results (default: 20)
default_min_score Integer No Default min score (default: 50)
total_requests_this_month Integer No Usage tracking (readonly)
api_credits_used Integer No Credits used (readonly)
last_reset_date Date No Last counter reset (readonly)

Key Methods:
| Method | Purpose | Returns |
|--------|---------|---------|
| action_test_api_connection() | Test ScraperAPI | Notification |
| action_reset_usage_counters() | Reset monthly counters | Notification |
| action_view_scraperapi_dashboard() | Open ScraperAPI dashboard | URL action |
| get_active_config() | Get active config | ai.lead.source.config |
| increment_usage() | Increment usage counters | None |


res.config.settings (Inherited)

Purpose: Add Lead Generator settings to Odoo Settings.

Field Type Required Description
lead_gen_scraperapi_key Char No ScraperAPI key (config param)
lead_gen_default_max_results Integer No Default max results
lead_gen_default_min_score Integer No Default min score

Campaign Types

Type Code Description
Google Search google_search Find Odoo websites via Google dorking
Forum Scraping forum_scraping Scrape Reddit, StackOverflow for Odoo discussions
Industry Specific industry_specific Target specific industries
Website Enrichment website_enrichment Enrich existing leads with Odoo detection
Comprehensive comprehensive Run all sources combined

Data Relationships Diagram

┌─────────────────────────────┐
│   ai.lead.campaign          │
│                             │
│  - name                     │
│  - campaign_type            │
│  - state                    │
│  - target_industries (M2M)  │────┐
│  - target_countries (M2M)   │    │
│  - api_key                  │    │
└─────────────────────────────┘    │
                                   │
                                   ▼
┌─────────────────────────────┐    ┌─────────────────────────────┐
│   ai.lead.industry          │    │       res.country           │
│                             │    │       (Odoo native)         │
│  - name                     │    │                             │
│  - code                     │    └─────────────────────────────┘
│  - description              │
└─────────────────────────────┘

┌─────────────────────────────┐
│   ai.lead.source.config     │
│                             │
│  - scraperapi_key           │
│  - enable_* toggles         │
│  - usage tracking           │
└─────────────────────────────┘

┌─────────────────────────────┐
│   ai.scraped.lead           │
│   (NOT YET IMPLEMENTED)     │
│                             │
│  - campaign_id              │
│  - name                     │
│  - website                  │
│  - odoo_detected            │
│  - lead_score               │
│  - lead_status              │
└─────────────────────────────┘

Security Rules

Model Group Read Write Create Delete
ai.lead.campaign sales_team.group_sale_salesman Yes Yes Yes No
ai.lead.campaign sales_team.group_sale_manager Yes Yes Yes Yes
ai.lead.industry sales_team.group_sale_salesman Yes No No No
ai.lead.industry sales_team.group_sale_manager Yes Yes Yes Yes
ai.lead.source.config sales_team.group_sale_salesman Yes No No No
ai.lead.source.config sales_team.group_sale_manager Yes Yes Yes Yes

Scraper Library Classes

GoogleSearchScraper (lib/google_search_scraper.py)

Performs Google dorking to find Odoo websites.

Key Methods:
- scrape_all_queries() - Run all predefined queries
- scrape_industry_specific() - Search by industry

ForumScraper (lib/forum_scraper.py)

Scrapes forums for Odoo discussions and opportunities.

Key Methods:
- scrape_all_opportunities() - Find Odoo-related discussions

EnhancedOdooLeadScraper (lib/enhanced_scraper.py)

Comprehensive multi-source scraper.

Key Methods:
- run_complete_scraping() - Execute all sources


Configuration Parameters

Parameter Default Description
lead_generator.scraperapi_key Empty ScraperAPI key
lead_generator.default_max_results 20 Results per query
lead_generator.default_min_score 50 Minimum lead score

Change History

Date Change By
2025-01-26 Initial schema documentation CTO Module Docs Agent
Was this helpful?