leadintel 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. leadintel-0.3.0/LICENSE +21 -0
  2. leadintel-0.3.0/PKG-INFO +351 -0
  3. leadintel-0.3.0/README.md +317 -0
  4. leadintel-0.3.0/pyproject.toml +94 -0
  5. leadintel-0.3.0/pyproject.toml.orig +90 -0
  6. leadintel-0.3.0/src/leadintel/__init__.py +6 -0
  7. leadintel-0.3.0/src/leadintel/__main__.py +6 -0
  8. leadintel-0.3.0/src/leadintel/config.py +165 -0
  9. leadintel-0.3.0/src/leadintel/data/__init__.py +1 -0
  10. leadintel-0.3.0/src/leadintel/data/demo.py +315 -0
  11. leadintel-0.3.0/src/leadintel/exporters/__init__.py +6 -0
  12. leadintel-0.3.0/src/leadintel/exporters/csv_exporter.py +113 -0
  13. leadintel-0.3.0/src/leadintel/exporters/excel_exporter.py +123 -0
  14. leadintel-0.3.0/src/leadintel/models/__init__.py +6 -0
  15. leadintel-0.3.0/src/leadintel/models/business.py +203 -0
  16. leadintel-0.3.0/src/leadintel/models/report.py +31 -0
  17. leadintel-0.3.0/src/leadintel/providers/__init__.py +51 -0
  18. leadintel-0.3.0/src/leadintel/providers/base.py +54 -0
  19. leadintel-0.3.0/src/leadintel/providers/demo_provider.py +65 -0
  20. leadintel-0.3.0/src/leadintel/providers/overpass_provider.py +1040 -0
  21. leadintel-0.3.0/src/leadintel/providers/registry.py +151 -0
  22. leadintel-0.3.0/src/leadintel/server.py +61 -0
  23. leadintel-0.3.0/src/leadintel/services/__init__.py +48 -0
  24. leadintel-0.3.0/src/leadintel/services/ai_business_insights.py +310 -0
  25. leadintel-0.3.0/src/leadintel/services/business_comparison.py +220 -0
  26. leadintel-0.3.0/src/leadintel/services/business_report.py +294 -0
  27. leadintel-0.3.0/src/leadintel/services/competitor_research.py +293 -0
  28. leadintel-0.3.0/src/leadintel/services/lead_scoring.py +385 -0
  29. leadintel-0.3.0/src/leadintel/services/local_ai.py +186 -0
  30. leadintel-0.3.0/src/leadintel/services/robots_checker.py +81 -0
  31. leadintel-0.3.0/src/leadintel/services/seo_auditor.py +281 -0
  32. leadintel-0.3.0/src/leadintel/services/social_finder.py +119 -0
  33. leadintel-0.3.0/src/leadintel/services/url_validator.py +295 -0
  34. leadintel-0.3.0/src/leadintel/services/website_analyzer.py +213 -0
  35. leadintel-0.3.0/src/leadintel/services/website_opportunity.py +523 -0
  36. leadintel-0.3.0/src/leadintel/storage/__init__.py +12 -0
  37. leadintel-0.3.0/src/leadintel/storage/db.py +189 -0
  38. leadintel-0.3.0/src/leadintel/storage/path_validator.py +118 -0
  39. leadintel-0.3.0/src/leadintel/tools/__init__.py +38 -0
  40. leadintel-0.3.0/src/leadintel/tools/analyze_website.py +57 -0
  41. leadintel-0.3.0/src/leadintel/tools/check_seo.py +64 -0
  42. leadintel-0.3.0/src/leadintel/tools/compare_businesses.py +65 -0
  43. leadintel-0.3.0/src/leadintel/tools/export_leads.py +112 -0
  44. leadintel-0.3.0/src/leadintel/tools/find_business_website.py +66 -0
  45. leadintel-0.3.0/src/leadintel/tools/find_competitors.py +75 -0
  46. leadintel-0.3.0/src/leadintel/tools/find_social_profiles.py +85 -0
  47. leadintel-0.3.0/src/leadintel/tools/generate_business_insights.py +93 -0
  48. leadintel-0.3.0/src/leadintel/tools/generate_business_report.py +92 -0
  49. leadintel-0.3.0/src/leadintel/tools/generate_outreach.py +153 -0
  50. leadintel-0.3.0/src/leadintel/tools/get_business_details.py +96 -0
  51. leadintel-0.3.0/src/leadintel/tools/get_saved_leads.py +58 -0
  52. leadintel-0.3.0/src/leadintel/tools/score_lead.py +88 -0
  53. leadintel-0.3.0/src/leadintel/tools/search_businesses.py +305 -0
  54. leadintel-0.3.0/src/leadintel/tools/website_finder.py +147 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Rushikesh Suradkar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,351 @@
1
+ Metadata-Version: 2.4
2
+ Name: leadintel
3
+ Version: 0.3.0
4
+ Summary: Free, open-source MCP server for AI-powered B2B lead generation and business intelligence.
5
+ Keywords: mcp,model-context-protocol,lead-generation,business-intelligence,b2b,seo-audit,competitor-analysis,ollama,local-first
6
+ Author: Rushikesh Suradkar
7
+ Author-email: Rushikesh Suradkar <rushikesheleven@gmail.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Topic :: Office/Business
16
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
17
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
18
+ Requires-Dist: aiofiles>=25.1.0
19
+ Requires-Dist: beautifulsoup4>=4.15.0
20
+ Requires-Dist: httpx>=0.28.1
21
+ Requires-Dist: mcp[cli]>=2.3.0
22
+ Requires-Dist: openpyxl>=3.1.5
23
+ Requires-Dist: pydantic>=2.14.2
24
+ Requires-Dist: python-dotenv>=1.2.4
25
+ Requires-Dist: google-generativeai>=0.8 ; extra == 'gemini'
26
+ Requires-Python: >=3.11
27
+ Project-URL: Homepage, https://github.com/example/leadintel
28
+ Project-URL: Repository, https://github.com/example/leadintel
29
+ Project-URL: Bug Tracker, https://github.com/example/leadintel/issues
30
+ Project-URL: Documentation, https://github.com/example/leadintel#readme
31
+ Provides-Extra: gemini
32
+ Provides-Extra: ollama
33
+ Description-Content-Type: text/markdown
34
+
35
+ # LeadIntel
36
+
37
+ > **Free, open-source, local-first Model Context Protocol (MCP) server and Python library for AI-powered business intelligence and B2B lead generation.**
38
+
39
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
40
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
41
+ [![MCP](https://img.shields.io/badge/MCP-Protocol%20v2-green.svg)](https://modelcontextprotocol.io/)
42
+ [![Built with uv](https://img.shields.io/badge/packaging-uv-purple.svg)](https://docs.astral.sh/uv/)
43
+
44
+ LeadIntel empowers AI assistants — such as Claude Desktop, Google Antigravity, and other MCP-compatible clients — to discover businesses, audit websites, benchmark competitors, evaluate deterministic lead scores, run local AI strategic insights via Ollama, export publication-grade multi-sheet Excel spreadsheets, and generate executive business intelligence reports.
45
+
46
+ ---
47
+
48
+ ## Core Principles
49
+
50
+ - **100% Free & Open-Source**: Licensed under the permissive MIT License.
51
+ - **Local-First Architecture**: No mandatory paid APIs, no mandatory API keys, no billing accounts, and no subscriptions.
52
+ - **Deterministic Lead Scoring**: Transparent, evidence-based scoring models (0–100) that distinguish verified gaps from unavailable information without arbitrary penalties.
53
+ - **Strict Privacy**: Zero telemetry, zero cloud AI exfiltration. Optional AI uses local Ollama instances (`http://localhost:11434`).
54
+ - **Ethical & Compliant**: Adheres to OpenStreetMap ODbL 1.0 licensing, respects website `robots.txt` rules, prevents private personal data harvesting, and provides comprehensive SSRF and path traversal protections.
55
+
56
+ ---
57
+
58
+ ## Architecture
59
+
60
+ LeadIntel is structured into clean, decoupled layers:
61
+
62
+ ```mermaid
63
+ graph TD
64
+ Client["MCP Clients (Claude Desktop / Antigravity / Cursor)"] --> MCP["LeadIntel MCP Server (stdio transport)"]
65
+
66
+ subgraph "LeadIntel Tools (14 Registered MCP Tools)"
67
+ T1["search_businesses"]
68
+ T2["get_business_details"]
69
+ T3["find_business_website"]
70
+ T4["analyze_website"]
71
+ T5["check_seo"]
72
+ T6["find_social_profiles"]
73
+ T7["find_competitors"]
74
+ T8["compare_businesses"]
75
+ T9["score_lead"]
76
+ T10["generate_business_insights"]
77
+ T11["generate_outreach"]
78
+ T12["generate_business_report"]
79
+ T13["export_leads"]
80
+ T14["get_saved_leads"]
81
+ end
82
+
83
+ MCP --> T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14
84
+
85
+ subgraph "Core Services & Providers"
86
+ P_OSM["OpenStreetMap / Overpass Provider"]
87
+ P_Demo["Offline Demo Provider"]
88
+ S_Web["Website Analyzer & Robots Checker"]
89
+ S_SEO["Custom 0-100 SEO Auditor"]
90
+ S_Social["Social Media Profile Extractor"]
91
+ S_Comp["Competitor Taxonomy & Benchmarking Engine"]
92
+ S_Score["Deterministic 100-pt Lead Scoring Engine"]
93
+ S_Ollama["Local AI Service (Ollama HTTP Client)"]
94
+ S_Export["OpenPyXL Multi-Sheet Excel & CSV Exporter"]
95
+ S_Report["Executive Report Generator (MD / HTML / JSON)"]
96
+ S_DB["Local SQLite Persistence (.leadintel.db)"]
97
+ end
98
+
99
+ T1 & T2 & T3 --> P_OSM & P_Demo
100
+ T4 & T5 & T6 --> S_Web & S_SEO & S_Social
101
+ T7 & T8 --> S_Comp
102
+ T9 --> S_Score
103
+ T10 & T11 --> S_Ollama
104
+ T12 --> S_Report
105
+ T13 --> S_Export
106
+ T1 & T14 --> S_DB
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Registered MCP Tools
112
+
113
+ LeadIntel provides 14 registered MCP tools:
114
+
115
+ | # | Tool Name | Description | Key Inputs |
116
+ |---|---|---|---|
117
+ | 1 | `search_businesses` | Discover local businesses, identify website opportunities, calculate distance, and prioritize leads | `query`, `location`, `category`, `limit`, `latitude`, `longitude`, `radius_meters`, `sort_by`, `research_websites`, `wider_metro` |
118
+ | 2 | `get_business_details` | Retrieve full coordinates, address, and contact details for a specific business | `business_id` |
119
+ | 3 | `find_business_website` | Discover and verify official websites using search heuristics and OSM tags | `business_name`, `location`, `category` |
120
+ | 4 | `analyze_website` | Audit web availability, HTTPS, SSL validity, viewport, headings, and broken links | `url`, `check_broken_links` |
121
+ | 5 | `check_seo` | Deterministic 100-point on-page SEO audit (titles, metas, H1s, alt tags, robots.txt, sitemaps) | `url` |
122
+ | 6 | `find_social_profiles` | Extract verified official profiles (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, Pinterest) | `url` |
123
+ | 7 | `find_competitors` | Discover geographically and categorically relevant industry competitors | `business_name`, `business_category`, `city`, `state` |
124
+ | 8 | `compare_businesses` | Side-by-side benchmark comparison between target business and industry rivals | `target_business`, `competitors` |
125
+ | 9 | `score_lead` | Deterministic 100-point lead qualification assessing website quality, SEO, social, and mobile gaps | `business_name`, `website_analysis`, `seo_audit`, `social_profiles` |
126
+ | 10 | `generate_business_insights` | Local AI business analysis, opportunity explanations, and service recommendations via Ollama | `business_name`, `lead_score_data`, `website_analysis` |
127
+ | 11 | `generate_outreach` | Local AI multi-channel outreach pitches (Cold Email, LinkedIn connection, WhatsApp message) | `business_name`, `service_focus`, `contact_name` |
128
+ | 12 | `generate_business_report` | Multi-format executive intelligence report (Markdown, styled HTML, or JSON) across 12 sections | `business_info`, `lead_score_data`, `output_format` |
129
+ | 13 | `export_leads` | Search and export leads to multi-sheet formatted Excel (`.xlsx`), CSV, or JSON | `query`, `location`, `format`, `output_path` |
130
+ | 14 | `get_saved_leads` | Retrieve and filter previously researched businesses from the local database | `min_opportunity_score`, `limit` |
131
+
132
+ ---
133
+
134
+ ## Website Opportunity Intelligence (v0.2.0 - v0.3.0)
135
+
136
+ LeadIntel is specifically engineered for digital marketing agencies, SEO professionals, and web developers seeking high-probability web development and redesign clients.
137
+
138
+ ### 1. Website Status Lifecycle
139
+ Every discovered business receives an explicit, deterministic `website_status`:
140
+ - `website_verified`: Official company website confirmed active, accessible, and owned by the entity.
141
+ - `website_not_found_after_research`: Missing from OpenStreetMap and confirmed absent after secondary web research across search engines and directory listings.
142
+ - `website_broken`: Website URL exists but returns HTTP 4xx/5xx errors or network timeouts.
143
+ - `website_unverified`: Discovered domain name does not match the business identity.
144
+ - `website_not_checked`: OpenStreetMap website field was empty and web research was not requested.
145
+
146
+ ### 2. Deterministic Opportunity Scoring & Tech Stack Detection
147
+ `website_opportunity_score` (0–100) deterministically ranks web agency outreach leverage:
148
+ 1. **No website found after research**: 90–100 (default: 95.0) — Highest priority new-build prospects.
149
+ 2. **Broken websites**: 75–89 (default: 80.0) — Urgent repair / redesign prospects.
150
+ 3. **Weak / outdated websites**: 50–74 (default: 65.0) — Missing mobile viewport or modern SSL security.
151
+ 4. **Significant SEO deficiencies**: 30–49 (default: 40.0) — Missing meta descriptions, title tags, or slow response times.
152
+ 5. **Modern, established websites**: 5–29 (default: 15.0) — Fast, mobile-ready, HTTPS-secured.
153
+
154
+ - **Tech Stack & Contact Surface detection**: Automated HTML footprint analysis detects underlying CMS platforms (WordPress, Shopify, Wix, Squarespace) and verifies whether direct contact routes (`<a href="...">` with contact, about, or `mailto:`) exist.
155
+
156
+ ### 3. Geographic Precision & Distance
157
+ - **Spherical Haversine calculation**: Every lead includes exact `distance_meters` and `distance_km` from the search centre.
158
+ - **Strict radius enforcement**: Rejects distant municipalities (e.g. Alandi or PCMC when searching Pune city center).
159
+ - **Urban core vs. wider metro**: Standard 6 km urban core radius, with optional `wider_metro=True` (25 km) for full metropolitan exploration.
160
+ - **Road & infrastructure rejection**: Rejects highway ways, bus platforms, and non-commercial geographic objects.
161
+
162
+ ### 4. Local Storage
163
+ Researched businesses from `search_businesses` are automatically persisted to a local `.leadintel.db` SQLite database using upsert semantics. This preserves historical search intelligence across MCP sessions, speeds up pipeline reviews, and prevents redundant external API and scraping calls. Stored leads can be queried directly at any time using the `get_saved_leads` tool.
164
+
165
+ ---
166
+
167
+ ## Requirements
168
+
169
+ - **Python**: 3.11 or newer
170
+ - **uv**: Modern, high-speed Python package manager ([install uv](https://docs.astral.sh/uv/))
171
+ - **Operating System**: macOS, Linux, or Windows
172
+ - **(Optional) Ollama**: Locally installed [Ollama](https://ollama.ai) for local AI features
173
+
174
+ ---
175
+
176
+ ## Installation
177
+
178
+ ```bash
179
+ # 1. Clone the repository
180
+ git clone https://github.com/example/leadintel.git
181
+ cd leadintel
182
+
183
+ # 2. Sync dependencies using uv
184
+ uv sync
185
+
186
+ # 3. Create environment configuration (optional)
187
+ cp .env.example .env
188
+ ```
189
+
190
+ ---
191
+
192
+ ## MCP Client Configuration
193
+
194
+ ### Claude Desktop Setup
195
+
196
+ Add LeadIntel to your Claude Desktop configuration file:
197
+
198
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
199
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
200
+ - **Linux**: `~/.config/Claude/claude_desktop_config.json`
201
+
202
+ ```json
203
+ {
204
+ "mcpServers": {
205
+ "leadintel": {
206
+ "command": "uv",
207
+ "args": [
208
+ "--directory", "/ABSOLUTE/PATH/TO/leadintel",
209
+ "run", "leadintel-server"
210
+ ]
211
+ }
212
+ }
213
+ }
214
+ ```
215
+
216
+ ### Google Antigravity Setup
217
+
218
+ Add LeadIntel to your Antigravity project configuration:
219
+
220
+ ```json
221
+ {
222
+ "mcpServers": {
223
+ "leadintel": {
224
+ "command": "uv",
225
+ "args": [
226
+ "--directory", "/ABSOLUTE/PATH/TO/leadintel",
227
+ "run", "leadintel-server"
228
+ ],
229
+ "env": {
230
+ "LOG_LEVEL": "INFO"
231
+ }
232
+ }
233
+ }
234
+ }
235
+ ```
236
+
237
+ ---
238
+
239
+ ## Optional Local AI Setup (Ollama)
240
+
241
+ LeadIntel includes zero-cost, local AI capabilities via [Ollama](https://ollama.ai):
242
+
243
+ ```bash
244
+ # 1. Install and start Ollama
245
+ ollama serve
246
+
247
+ # 2. Pull a recommended lightweight model
248
+ ollama pull llama3
249
+
250
+ # 3. Enable in .env
251
+ OLLAMA_ENABLED=true
252
+ OLLAMA_BASE_URL=http://localhost:11434
253
+ OLLAMA_MODEL=llama3
254
+ ```
255
+
256
+ > **Privacy Guarantee**: All prompts are sent exclusively to your local loopback interface (`http://localhost:11434`). No business data or prompt information is sent to third-party cloud providers.
257
+
258
+ ---
259
+
260
+ ## Usage Examples
261
+
262
+ ### 1. Discover Businesses & Export to Multi-Sheet Excel
263
+ Ask your AI assistant:
264
+ > *"Search for dental clinics in Austin, TX and export them to an Excel workbook."*
265
+
266
+ Or invoke the tool directly:
267
+ ```python
268
+ await mcp.call_tool("export_leads", {
269
+ "query": "dental clinic",
270
+ "location": "Austin, TX",
271
+ "format": "excel",
272
+ "limit": 20
273
+ })
274
+ ```
275
+
276
+ The resulting Excel workbook includes 7 dedicated worksheets:
277
+ 1. **Dashboard Summary**: Aggregate KPI cards, lead priority distribution, and industry mix.
278
+ 2. **Business Leads**: Address, contact information, phone, email, website, and data attribution.
279
+ 3. **Website Audit**: Availability, HTTPS status, load time, mobile viewport, and contact forms.
280
+ 4. **Competitor Intelligence**: Local competitors, category specialization, and confidence metrics.
281
+ 5. **Lead Scoring**: Overall 100-pt score, priority tier, and evidence completeness percentage.
282
+ 6. **AI Insights**: Executive summaries and strategic service opportunities.
283
+ 7. **Outreach**: Multi-channel draft templates for emails, LinkedIn, and WhatsApp.
284
+
285
+ ### 2. Website & SEO Diagnostic Audit
286
+ > *"Audit the website and technical SEO health for https://example.com."*
287
+
288
+ ```python
289
+ # Analyze technical performance and structure
290
+ website_data = await mcp.call_tool("analyze_website", {"url": "https://example.com"})
291
+
292
+ # Perform 0-100 technical SEO evaluation
293
+ seo_data = await mcp.call_tool("check_seo", {"url": "https://example.com"})
294
+ ```
295
+
296
+ ### 3. Generate Executive Business Intelligence Report
297
+ > *"Create a comprehensive business research report for Apex Solar in Denver, CO in HTML format."*
298
+
299
+ ```python
300
+ report_html = await mcp.call_tool("generate_business_report", {
301
+ "business_info": {
302
+ "name": "Apex Solar Solutions",
303
+ "category": "Solar Energy Equipment",
304
+ "city": "Denver",
305
+ "state": "CO",
306
+ "website": "https://apexsolar.example"
307
+ },
308
+ "output_format": "html"
309
+ })
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Screenshots Placeholder
315
+
316
+ ```
317
+ +--------------------------------------------------------------------------+
318
+ | LeadIntel Dashboard (Excel Export) |
319
+ +--------------------------------------------------------------------------+
320
+ | Total Businesses: 50 | High Priority: 14 | Avg Lead Score: 72/100 |
321
+ +--------------------------------------------------------------------------+
322
+ | [Sheet 1: Dashboard] [Sheet 2: Leads] [Sheet 3: Website Audit] ... |
323
+ +--------------------------------------------------------------------------+
324
+ | (Interactive screenshots will be published with the v0.1 release) |
325
+ +--------------------------------------------------------------------------+
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Security & Ethical Safeguards
331
+
332
+ - **SSRF & DNS Rebinding Mitigation**: Strict validation against loopback, private subnets (RFC 1918), carrier-grade NAT (RFC 6598), and cloud instance metadata (`169.254.169.254`, `fd00:ec2::254`, `metadata.google.internal`). All HTTP redirects are validated before being followed.
333
+ - **Path Traversal Protection**: Export file paths are sanitized against traversal sequences (`..`), null bytes, and sensitive system directories (`/etc`, `/usr`, `~/.ssh`).
334
+ - **Spreadsheet Formula Injection Prevention**: Cell contents starting with `=`, `+`, `-`, `@`, `\t`, or `\r` are sanitized with leading text escapes.
335
+ - **HTML Injection Defense**: Stored XSS defense using strict entity escaping across all dynamic fields in HTML executive reports.
336
+ - **ODbL License Attribution**: Data retrieved from OpenStreetMap contributors is attributed in accordance with the Open Database License.
337
+
338
+ ---
339
+
340
+ ## Limitations
341
+
342
+ - **Search Coverage**: Business discovery relies on OpenStreetMap and Nominatim data, which may vary in coverage density depending on geographic region and country.
343
+ - **On-Page Technical SEO**: The `check_seo` tool evaluates on-page technical factors and source standards. It does not replicate proprietary search engine ranking algorithms or backlinks.
344
+ - **Deterministic Lead Scoring**: Lead scores evaluate observable digital presence gaps to identify service opportunities. They do not predict commercial budget or purchasing authority.
345
+
346
+ ---
347
+
348
+ ## License
349
+
350
+ LeadIntel is free and open-source software licensed under the **[MIT License](LICENSE)**.
351
+ OpenStreetMap data is © [OpenStreetMap contributors](https://www.openstreetmap.org/copyright) licensed under the [Open Database License (ODbL 1.0)](https://opendatacommons.org/licenses/odbl/).