Data will appear after customers access their dashboards
No browser data available yet
Data will appear after visitors access the landing page or dashboards
Active Crawls
-
Currently Running
Success Rate
-%
Last 24h
Avg Duration
-
Completed
Throughput
-
Pages/min
Crawl Duration Distribution
Success/Failure Trend
Crawl Throughput (pages/min)
Crawls Over Time
Currently Running Crawls
Domain
Customer
Started
Products Found
Products Crawled
No active crawls
Recent Crawl Errors by Domain
Domain
Error Count
Error Messages
No errors
P50 Latency
- ms
Median
P95 Latency
- ms
95th Percentile
P99 Latency
- ms
99th Percentile
Requests/sec
-
Throughput
Response Time by Endpoint
Error Rate by Endpoint
Throughput by Endpoint
Latency Over Time
All Endpoints
Endpoint
Avg (ms)
P95 (ms)
Error %
Requests
Loading...
CPU Usage
-%
Current
Memory Usage
-%
Current
Disk Usage
-%
- GB free
DB Size
- MB
Database
CPU Usage Over Time
Memory Usage Over Time
Disk Usage Over Time
Active Crawls Over Time
System Health
Component
Status
Uptime
Last Check
Loading...
Backend (API Server)
Avg Response Time
-
Main Server
Error Rate
-
Transactions
CPU Usage
-
Server
Memory Usage
-
Server
Response Time (ms)
Throughput (req/min)
Error Rate (%)
CPU & Memory (%)
Slowest Endpoints
Endpoint
Avg Response (ms)
Count
Loading...
No backend data available yet
Data will appear once API traffic flows through the system
Customer Analytics
Tier Distribution
Content Tier
-
$0/mo
Content + Commerce
-
$0/mo
Enterprise
-
Custom
Total MRR
-
Monthly Revenue
Data & Crawl Stats
Total Products
-
Total Data
-
Crawls (30d)
-
Avg Products/Customer
-
Engagement Summary
Active (30d)
-
High Engagement
-
Inactive
-
Total Customers
-
AI Enhancement API Usage
This Month Jobs
-
This Month Tokens
-
Total Jobs (All Time)
-
Total Tokens (All Time)
-
Usage by Type (30 days)
Type
Jobs
Tokens
Loading...
Top Clients by Usage (30 days)
Client
Jobs
Tokens
Loading...
Recent Enhancement Jobs
Time
Client
Type
Status
Tokens
Loading...
Customer
Logins (30d)
Total Logins
Avg Session
Last Active
Engagement
Loading analytics...
Enterprise Leads
Total Leads
-
New
-
Synced to HubSpot
-
Filter:
Name
Email
Company
Website
Status
HubSpot
Source
Date
Loading enterprise leads...
Audit Leads
Total Audits
-
Last 24 Hours
-
Avg Score
-
Conversions
-
0% rate
Filter:
Email
Domain
Score
Status
Converted
Date
Actions
Loading audit leads...
Audit Details
Lead Details
Settings
Tier Pricing
Configure monthly pricing for each subscription tier. These prices are used to calculate token allocations.
Content
Blogs, FAQs & Marketing
$/mo
Content + Commerce
Full e-commerce support
$/mo
Enterprise
Custom solutions
$/mo
Token Economy
Token value is established by Content price ÷ base tokens. Higher tiers get tokens based on their price, plus optional bonus.
Sets token value: Content Price ÷ Base Tokens
tokens
Token Value:$0.0099per token
Setting
Content
Content + Commerce
Enterprise
Tokens at Price
Tier price ÷ token value
10,000
16,061
TBD
Bonus Tokens
Extra % on top of tokens at price
+%
+0 tokens
+%
+0 tokens
+%
TBD
Token Rollover
Unused tokens roll to next month
% max
% max
% max
Total Tokens
Tokens at price + bonus
10,000
16,061
TBD
API Cost Limit
%
Max % of tier price for API calls
$9.90
$15.90
TBD
Token Usage Overview (Top 10 Clients)
Total Allocated
--
Total Used
--
Overall Usage
--%
Client
Tier
Used
Allocation
Progress
Remaining
Loading...
Token Costs per Operation
Token costs deducted for each AI operation. All operations are free during initial setup until the first crawl completes.
Free Initial Setup
All AI operations are free for new customers until their first crawl completes. After setup, tokens are deducted per the costs below.
AI Visibility Scans
Per prompt per platform
AI Enhancements
Improve content with AI
Content Generation
Create new content with AI
Crawl & Other
Misc AI operations
Tier Recommendation Thresholds
Set the product catalog threshold between Content + Commerce and Enterprise tiers. This also controls the "Up to X product catalog" and "Over X product catalog" feature text.
How it works:
Content Tier — For blogs, marketing, FAQs, and educational content (no product catalog).
Content + Commerce — For e-commerce sites with up to the threshold number of products.
Enterprise — For large e-commerce sites exceeding the threshold.
Sites with more products than this will be recommended Enterprise
Current Thresholds Preview
Content Tier: No products
Content + Commerce: Up to 1000 products
Enterprise: Over 1000 products
Tier File Configuration
Configure which file types are available for each pricing tier.
Files are always generated during crawl. Check/uncheck tiers to control which plans can access each file type via API.
Unchecked tiers will receive a 403 Forbidden response.
File Type
Content Tier
Content + Commerce
Enterprise
Loading configuration...
✓ Auto-saves
Integrations
AI Scan Platforms
CRM
Coming Soon
Slack Notifications
Zapier Webhooks
Freshdesk API
Payments
Email
AI Scans
CRM
System
Stripe Payments
Off
Email & SMTP
Off
Configure each email the system sends. Tags are appended to From Address as user+tag@domain
Claude (Anthropic)
Off
Core AI engine for GEO file generation and enhancement. Get API key
Enterprise contact form leads sync to HubSpot as contacts + deals. Leads always save locally even if HubSpot is offline.
Remove integration
Default Behaviors
Auto-saves when you make changes
Token-Based Usage Model
AI operations are now token-based
Instead of count-based limits, customers receive a monthly token allocation based on their tier. Each AI operation (scans, enhancements, content generation) deducts tokens from their balance. All operations are free during initial setup until the first crawl completes.
✓ That's it! GEO optimization is now live and will auto-update.
Platform-Specific Instructions
WordPress
Appearance → Theme Editor → header.php, or use "Insert Headers and Footers" plugin
Shopify
Online Store → Themes → Edit Code → theme.liquid, add before </head>
Squarespace
Settings → Advanced → Code Injection → Header
Wix
Settings → Advanced → Custom Code → Head
Webflow
Project Settings → Custom Code → Head Code
Custom / React / Next.js
Add to _document.js, index.html, or layout component's <head>
Complete visual reference for checkout, setup, and dashboard UI
Single source: shared.js for logos · shared-ui.js for icons, buttons & badges · Tailwind CSS for utilities
1. Complete Color Reference
Swatch
Hex
Tailwind
Name
Usage
Brand / Accent
#F9A832
amber-500 / accent-gold
Gold
Primary CTA, bolt bg, active tabs, progress bars
#e89a1d
--
Amber Dark
Gradient end for CTAs
#b8780e
--tab-accent-dark
Bronze
Dark-mode tab accent fallback
Brand Palette (7 colors)
#1CAAA0
accent-teal
Teal
Tab color, logo cycle 25%, install
#00B0EF
accent-sky
Sky
Tab color, logo cycle 50%, analytics
#ED3C80
accent-pink
Pink
Accent only — NOT a tab color. Logo cycle 75%, Enterprise CTA
#D7DF38
accent-lime
Lime
Accent only — NOT a tab color. Marketing pages
#DACDA5
accent-tan
Tan
Tab color, warm neutral
#BDBEC1
accent-gray
Gray
Tab color, neutral
Extended Tab Colors
#6882A0
--
Slate-blue
Products tab
#A08068
--
Warm-brown
Schemas tab
Semantic / Action
#0ea5e9
sky-500
Sky Blue
Edit buttons, analytics tabs, info accents
#0284c7
sky-600
Sky Dark
Edit button text (light mode)
#14b8a6
teal-500
Teal
View buttons, copy/schema, install tabs
#0d9488
teal-600
Teal Dark
View button text, teal CTA
#10b981
emerald-500
Emerald
Success states, trust icons, completion
#84cc16
lime-500
Lime
FAQ best practices icon
#ef4444
red-500
Red
Delete hover, error toast, destructive
#f87171
red-400
Red Light
Error toast border
#ec4899
pink-500
Pink
Product crawl icon
#818cf8
indigo-400
Indigo
Content crawl icon
Slate Scale (Neutrals)
#f8fafc
slate-50
Ghost White
Page bg (light), table header bg
#f1f5f9
slate-100
Whisper
Pill/tag bg, suggested topic bg
#e2e8f0
slate-200
Platinum
Borders (light), dividers, input borders
#cbd5e1
slate-300
Silver
Pagination borders, GTM path borders
#94a3b8
slate-400
Cadet Grey
Placeholder text, secondary icons, captions
#64748b
slate-500
Slate
Delete icon default, muted text
#475569
slate-600
Storm
Body text (light), tab text, nav links
#334155
slate-700
Gunmetal
Dark card bg, borders (dark), pill bg (dark)
#1e293b
slate-800
Oxford Blue
Dashboard bg (dark), header bg (dark)
#0f172a
slate-900
Midnight
CTA text, headings, deep dark bg
#020617
slate-950
Void
Deepest dark bg accent
Bolt / Logo
#1a2332
--
Ink
Bolt color on light backgrounds
#ffffff
white
White
Bolt color on dark backgrounds
2. SVG Icon Library
All icons used in the dashboard. Heroicons outline style, stroke="currentColor". Standard sizes: w-4 h-4 (action), w-5 h-5 (tab/nav), w-6 h-6 (feature).
Navigation & UI
chevron-down
chevron-right
x-close
plus
search
info-circle
external-link
Actions
edit-pencil
trash-delete
eye-view
copy-clipboard
download
refresh-rotate
Status & Feedback
checkmark
check-circle
alert-circle
clock
lightning-bolt
trending-up
Content & Files
document
code-brackets
cube-database
server-stack
User & Account
user-profile
login
logout
settings-gear
credit-card
lock-security
coins-tokens
Theme & Display
sun (light)
moon (dark)
lightbulb
mobile-api
award-badge
Filled Mini Icons (20×20)
arrow-up-circle
arrow-down-circle
minus-circle
plus-circle
GEOPro.icon('arrow-up-circle', {size: 14}) · Used for sentiment indicators and status badges
3. Dashboard Buttons — All Variants
Every button type, size, and accent color. One rule, no exceptions:
Light bg = black text + black border · Dark bg = white text + white border. Accent color lives in the button background only. All borders are 2px.
Complete Size Matrix
Light Background
px-2 py-1
10px
px-3 py-1.5
12px
px-4 py-2
14px
px-4 py-2.5
14px
px-4 py-3
14px
px-6 py-3
16px
Light: border-slate-800/20 text-slate-900
Dark Background
px-2 py-1
10px
px-3 py-1.5
12px
px-4 py-2
14px
px-4 py-2.5
14px
px-4 py-3
14px
px-6 py-3
16px
Dark: border-white/25 text-white
Filled Accent Buttons — All Colors
Background = accent color. Text & border follow the light/dark rule.
Light Background
bg-{accent} text-slate-900 border-slate-800/20
Dark Background
bg-{accent} text-white border-white/25
Outline Accent Buttons — All Colors
Transparent bg with a subtle accent tint. Text & border still follow the rule.
Light Background
bg-{accent}-50 text-slate-900 border-slate-800/20
Dark Background
bg-{accent}-500/15 text-white border-white/25
Pure Outline Buttons — No Accent Fill
bg-white text-slate-900 border-slate-800/20
bg-transparent text-white border-white/25
Icon Action Buttons (Row Actions)
Rule: light bg = dark text (#334155) + colored bg fill + colored border | dark bg = light text (#e2e8f0) + tinted bg + colored border
Monospace: ui-monospace, monospace — used for code snippets, file names, technical values
Light Context
Page Heading 2xl bold slate-800
Card Heading xl bold
Section Title base semibold slate-700
Body text sm slate-600
Caption xs slate-400
Dark Context
Page Heading white
Card Heading white
Section Title slate-200
Body text slate-300
Caption slate-500
GEOPro Premium
class="gradient-text"
12. Toast Notifications
Account created successfully!
Please enter a valid email
Domain already registered
13. Trust Badges
7-day free trialSecureCancel anytime
7-day free trialSecureCancel anytime
14. Progress Bars
Scanning...60%
Complete100%
Setting up...60%
Complete100%
15. Page Flow & Theme Map
User journey from checkout to dashboard. Hover any node to highlight it.
Customer Journey
Form
Light
slate
Analysis
Light
sky
Recommend
Light
gold
$
Stripe
External
indigo
Setup
Dark
emerald
Dashboard
Dark
pink
Live GEO
Dark
teal
Light · Black text · Black border
Customer Journey
Form
Light
slate
Analysis
Light
sky
Recommend
Light
gold
$
Stripe
External
indigo
Setup
Dark
emerald
Dashboard
Dark
pink
Live GEO
Dark
teal
Dark · White text · White border
Accent Palette
Gold
CTA, progress, primary
Sky
Edit, analytics, info
Teal
View, copy, install
Emerald
Success, trust, done
Red
Delete, error, warn
Indigo
Schemas, content
Pink
Products, commerce
Slate
Neutral, secondary
Universal Button Rule
Light Background
Text: text-slate-900 (black)
Border: border-slate-800/20 (black)
Inactive: text-slate-900/50
Dark Background
Text: text-white (white)
Border: border-white/25 (white)
Inactive: text-white/50
16. UI Component Engine shared-ui.js
Centralized factory for icons, buttons, icon-buttons, action groups, and badges. All colors use inline styles (immune to Tailwind purge). Universal rule: light bg = dark text/border, dark bg = white text/border. Icon buttons are the exception — they keep semantic accent colors on both backgrounds.
// Re-scan after dynamic content: GEOPro.UI.init()
17. Tab System — .db-tab & .db-subtab
Unified pill/chip tabs used across the dashboard. Main tabs use .db-tab for the top navigation bar. Sub-tabs use .db-subtab for analytics, platform, and upload sections. Active state driven by CSS custom property --tab-accent.
Main Tabs — .db-tab + .tab-active
Active tabs are filled accent buttons — text & border follow the light/dark rule.
Active tabs follow the filled accent button light/dark rule: • Light bg: color: #0f172a; border: rgba(30,41,59,0.2) • Dark bg: color: #ffffff; border: rgba(255,255,255,0.25) • Icons inherit text color via currentColor
Tab Accent Spectrum — All Colors
Each tab has its own accent color. When active, the accent fills the background and the 2px border frames it.
Active state: tinted accent bg + accent border via --tab-accent-light and --tab-accent. Used for analytics sub-tabs, install platform tabs, upload platform tabs, and API Usage/Performance sub-tabs.
Left Border Accents — Tab Color vs Rainbow (AI-Enhanceable)
Every module/component gets a left-border accent. The border type signals whether the content supports AI enhancement.
Border Accent Rules
Tab Accent Border .tab-accent-header
Standard modules — solid color matching the active tab.
Company
Install
AI Visibility
API Usage
Token Usage
Recommendations
Rainbow Border .rainbow-border-l
AI-enhanceable modules — rainbow gradient signals AI enhancement is available.
Products
Content Pages
FAQs
Blogs
GEO Files
Schemas
Tab Accent Border — Standard Modules .tab-accent-header
Each dashboard main tab has a dedicated accent color defined in TAB_THEMES (dashboard.js). These colors drive --tab-accent, --tab-accent-dark, and --tab-accent-light CSS custom properties. Pink and Lime are never used as tab colors — accent only.
Tab → Color Assignments
Tab
Color
Hex
Dark
Light
Company
Gold
#F9A832
#b8780e
#fef3c7
Install
Teal
#1CAAA0
#0f766e
#ccfbf1
AI Visibility
Sky
#00B0EF
#0369a1
#e0f2fe
Recommendations
Gray
#BDBEC1
#64748b
#f1f5f9
Products
Slate-blue
#6882A0
#3d5570
#edf1f5
Content
Teal
#1CAAA0
#0f766e
#ccfbf1
FAQs
Tan
#DACDA5
#8b7a3e
#fdf8ea
Blogs
Sky
#00B0EF
#0369a1
#e0f2fe
GEO Files
Gold
#F9A832
#b8780e
#fef3c7
Schemas
Warm-brown
#A08068
#6b503e
#f5f0ec
APIs
Teal
#1CAAA0
#0f766e
#ccfbf1
Usage
Tan
#DACDA5
#8b7a3e
#fdf8ea
FORBIDDEN as tab colors:
Pink (#ED3C80) and Lime (#D7DF38) are accent-only. They may appear in logos, Enterprise CTAs, and marketing highlights, but NEVER as a TAB_THEMES entry.
22. Border & Text Constants — shared-ui.js
All shared-ui.js components use these constants for text and border colors. Standard border width is 2px. Minimum border opacity is 40% on light and 50% on dark. No invisible/ghost borders.
Constant
Value
Context
Used By
LIGHT_TEXT
#0f172a
Light bg
All buttons & badges
LIGHT_BORDER
rgba(30,41,59,0.4)
Light bg
button(), badge(), pure-outline
DARK_TEXT
#ffffff
Dark bg
All buttons & badges
DARK_BORDER
rgba(255,255,255,0.5)
Dark bg
button(), badge(), pure-outline
iconButton border (light)
rgba(30,41,59,0.4)
Light bg
iconButton()
iconButton border (dark)
rgba(255,255,255,0.5)
Dark bg
iconButton()
Universal rule:
All button borders are 2px (set via .db-btn { border-width: 2px } and inline in shared-ui.js). Light bg → dark text (#0f172a) + dark border (40% opacity). Dark bg → white text (#ffffff) + white border (50% opacity). Exception: icon buttons keep semantic accent icon colors, but still use the universal border opacities.
23. Upgrade Modal & CTA Patterns
Upgrade-related UI elements use brand colors exclusively. Gold for primary CTAs, Pink for Enterprise/premium-only CTAs.
Dark bg overlay → white text + white/50 border (follows universal dark-bg rule).
25. Token Badge & Gating
Header token badge shows remaining balance with color-coded status. Buttons are gated (disabled + lock icon) when tokens are insufficient.
Token Badge States
Free Setup
7,240tokens
3,100tokens
980tokens
0tokens
Color thresholds (inline styles, purge-safe): Green #10b981 — >50% remaining Amber #f59e0b — 20-50% remaining Red #ef4444 — <20% remaining Gray #9ca3af — 0 tokens (depleted)
Free Setup badge shown when setup_complete=0. Click navigates to Usage tab.
Gated Button (Insufficient Tokens)
Gated buttons: opacity: 0.45; cursor: not-allowed; pointer-events: none
Prepend lock icon (12px, #9ca3af) + tooltip with cost/balance info. applyTokenGating() runs after every loadTokenBalance() call.
Skipped entirely during free setup (setup_complete=0).
GEOPro Documentation · All components rendered live from shared.js + shared-ui.js · Tailwind CSS
SVG logos and profile images for Freshdesk helpdesk portal branding. Right-click any image and "Save as" SVG, or copy the markup.
Recommended Portal Font
Inter
Matches GEOPro site & dashboard. Available in Freshdesk font picker.
Freshdesk path: Admin > Channels > Portals > Customize > Appearance > Font family
Select "Inter" if available, otherwise use "Segoe UI" or "Helvetica" as closest alternatives.
Regular 400Semibold 600Bold 700
Recommended Portal Colors
Setting
Color
Hex
Primary color
#F9A832
Body
#f5f7f9
Link color
#1CAAA0
Hover state
#179990
Header text color
#ffffff
Text color
#264966
Header color
#1e293b
Footer color
#1e293b
Portal Logo (Header)
Recommended: 240×60px. Transparent fade on edges. For Freshdesk Admin > Channels > Portals > Customize > Logo.
Gold rounded square with filled bolt. Upload at Admin > Channels > Portals > Customize > Favicon.
favicon-light.svg (dark bolt, for light backgrounds)
favicon-dark.svg (white bolt, for dark backgrounds)
Profile Picture / Avatar
Circular avatars with radial gradient + glow effect. 128×128px. Every brand color × white / black / gold bolt (same-color combos excluded). For Freshdesk Admin > Team > Agents > Edit > Profile picture.
Gold #F9A832
White bolt
Black bolt
Teal #1CAAA0
White bolt
Black bolt
Gold bolt
Sky #00B0EF
White bolt
Black bolt
Gold bolt
Pink #ED3C80
White bolt
Black bolt
Gold bolt
Lime #D7DF38
White bolt
Black bolt
Gold bolt
Tan #DACDA5
White bolt
Black bolt
Gold bolt
Gray #BDBEC1
White bolt
Black bolt
Gold bolt
Dark Slate #1e293b
White bolt
Gold bolt
Accent Color Circles
Plain brand color circles for use as placeholders, avatars, or decorative elements.
"best CRM software" "top AI tools 2026" + AI-generated
→
analytics_scraper.py
Claude
ChatGPT
Gemini
Perplexity
Bing
→
NLP Analysis
Brand mentions Citations · Sentiment Position scoring
Visibility Score
0–100
Token Economy
Monthly Token Budgets
Content
10K
$129/mo
Commerce
24.1K
$249/mo (+25%)
Enterprise
Custom
Custom pricing
10% Rule
100% token usage = 10% of subscription revenue in Claude API cost
Free during setup
setup_complete = 0
Hosting Model
Customer-Hosted (Static)
Client downloads & uploads to their site root: https://{domain}/llms.txt https://{domain}/.well-known/ai-resources.json https://{domain}/organization.json
GEOPro-Hosted (Dynamic)
Live API served by GEOPro: geopro.eyemagine.ai/{domain}/blogs/ geopro.eyemagine.ai/{domain}/faqs/ geopro.eyemagine.ai/{domain}/products/
GEO Pro Platform Architecture · Updated Mar 13, 2026
Started Feb 2, 2026. Platform core, billing, analytics, admin console, and customer onboarding all complete. Currently in lead gen integration phase. Today: Mar 19
Task
Feb 3
Feb 17
Mar 3
Mar 10
Mar 17
Mar 24
Mar 31
Apr 7
Platform Core
COMPLETED
Server, crawlers, GEO gen
Dashboard + admin console
AI Visibility analytics
Token economy
Billing & Onboarding
COMPLETED
Stripe integration
Cancel / resubscribe flow
Promo codes + free checkout
Onboarding reminders
Support & Ops
COMPLETED
Freshdesk + GA4 integration
Production deploy + fixes
Admin Docs tab + styleguide
Active Campaigns (running since Mar 2)
Apollo cold sequences
▶ Phase: Lead Gen Integration (in progress)
Enterprise contact form
HubSpot CRM integration
Admin Leads + CRM settings
QA & Polish
Full funnel QA
PRODUCTION LAUNCH
Apr 4
Monitor + tune
Platform Core
Billing & Onboarding
Support & Ops
Active Campaigns
Lead Gen (in progress)
QA & Polish
Production Launch (Apr 4)
Lead Gen & CRM Flow
Apollo.io · Cold Outbound
Prospecting DB → 5 email sequences → auto-follow-up
No API integration — runs independently
HubSpot · Warm Campaigns
EYEMAGINE current & past customers + GEO Pro warm prospects
Upsell · Re-engagement · Cross-sell GEO Pro
↓
↓
geoprodev.eyemagine.ai
Marketing site · Pricing page · Feature pages
↓
↓
Stripe Checkout
Paid subscription · or free (promo code)
Webhook → HubSpot
Enterprise Contact Form
pricing.html → POST /api/leads/enterprise
Creates HubSpot contact + deal
HubSpot CRM
All contacts, deals, lifecycle stages, and automation
ContactsDealsWorkflowsReports
↓
Sales Pipeline
New Lead → Contacted → Demo → Proposal → Won/Lost
Customer Pipeline
Onboarding → Active → At Risk → Churned
Lifecycle Automation
Lead → MQL → SQL → Customer
Key rule: Apollo runs cold outbound independently (no API integration). HubSpot owns all enterprise leads, paying clients, and warm campaigns (including EYEMAGINE current & past customers). Enterprise form → HubSpot directly. Stripe purchases → HubSpot directly.
Implementation Timeline
✓
Active Campaigns
Live since Mar 2, 2026. No code integration needed.
Apollo.io — Cold Outbound: Sequences, prospecting lists, domain warmup all running. Targeting new prospects.
HubSpot — Warm Campaigns: Starting Mar 17, 2026. EYEMAGINE current & past customers + GEO Pro warm prospects. Upsell, re-engagement, and cross-sell flows.
1
Enterprise Contact Form
Mar 17, 2026 (1 day — Claude)
Date
Task
Owner
Mar 17
Enterprise contact form on pricing.html (inside Enterprise card): Name, Email, Company, Website, Phone, Message. POST /api/leads/enterprise → creates HubSpot contact + deal in Sales pipeline. Hidden UTM fields. Mobile QA
Claude
2
HubSpot CRM Integration
Mar 18 – Mar 27, 2026 (code: 2 days Claude | config: parallel)
Date
Task
Owner
Mar 19–20
Create hubspot_service.py — API v3 client. Enterprise form → HubSpot contact + deal. Stripe/free-checkout webhooks → HubSpot. Nightly sync job
Claude
Mar 24–25
Configure HubSpot custom properties + pipelines: • Sales: New Lead → Contacted → Demo Scheduled → Proposal → Closed Won / Lost • Customer: Onboarding → Active → At Risk → Churned
Admin
Mar 26
HubSpot lead scoring model + lifecycle stage automation workflows (Lead → MQL → SQL → Customer)
Admin
Mar 27
Test full flow: enterprise form → HubSpot deal, Stripe purchase → HubSpot contact. Verify lifecycle automation
Claude + Sales
3
Admin Console & Production Deploy
Mar 31 – Apr 4, 2026 (code: 1 day | launch immediately after QA)
Design: Match existing dark card style. Gold accent submit button. Form inline within the Enterprise card — no modal, no popup. Success state: “We’ll be in touch within 24 hours.”
Hidden fields: UTM source, medium, campaign, content, term; referrer URL; page URL; timestamp. Stored in leads table and pushed to HubSpot as contact properties.
HubSpot flow:POST /api/leads/enterprise → creates HubSpot contact + deal in Sales pipeline (stage: “New Lead”). Admin notified via HubSpot workflow. No Apollo involvement — enterprise leads go straight to CRM.
Apollo Email Sequences
Sequence
Target
Cadence
Emails
Inbound — Enterprise
Enterprise form submitters (via HubSpot)
Day 0, 1, 3, 7
4 — personal follow-up → demo → ROI calc → exec intro
Cold — E-commerce
E-commerce decision makers
Day 0, 3, 6, 10, 15, 21
6 — pain point → solution → social proof → case study → pricing → breakup
Cold — SaaS / Publishers
Content-heavy sites
Day 0, 3, 7, 14, 21
5 — AI gap → before/after → competitor → demo → breakup
Re-engagement
Opened but no reply
Day 30, 37, 45
3 — new feature → case study → final offer
Apollo Prospecting Lists
List
Company Criteria
Target Titles
E-commerce Brands
$5M–$500M revenue, B2C retail
VP Marketing, Head of Digital, CMO
SaaS w/ Blogs
Active content marketing, B2B SaaS
Content Marketing Mgr, VP Growth
D2C Brands
Shopify Plus / BigCommerce / Magento
E-commerce Director, Digital Director
Publishers / Media
News, lifestyle, niche publishers
SEO Manager, Digital Director
HubSpot Contact Properties
Property
Source
Updates
Email
Registration
Once
Domain
Registration
Once
Company Name
Registration
Once
Plan Tier
Stripe / DB
On change
Subscription Status
Stripe / DB
On change
MRR
Stripe
On change
Signup Date
DB
Once
Setup Complete
DB
On change
AI Visibility Score
Analytics
Weekly (nightly sync)
Products Crawled
DB
On crawl
Last Login
DB
On login
Apollo → HubSpot Conversion Triggers
Event
Action
Stripe checkout completed
Create HubSpot contact + Deal (Closed Won). Mark converted in Apollo
Free promo checkout completed
Create HubSpot contact + Deal (Closed Won – Free). Mark converted in Apollo
Enterprise form submitted
Create HubSpot contact + Deal (Sales Pipeline → New Lead)
Apollo lead replies positively
Manual move or Apollo↔HubSpot native sync
Subscription cancelled
Update HubSpot deal stage → Churned
Resubscription
Update HubSpot deal stage → Active. Create new deal
New Files & Endpoints
New Backend Modules
hubspot_service.py — HubSpot API v3 client
leads table in geopro.db
New API Endpoints
POST /api/leads/enterprise — enterprise contact form → HubSpot
GET /api/admin/leads — admin leads list
GET /api/admin/leads/export — CSV export
GET /api/admin/crm/sync-status — sync info
POST /api/admin/crm/sync-all — manual sync
Platform Tiers (Confirmed)
Apollo.io — Pro/Enterprise
✓ Full REST API access
✓ Unlimited sequences & A/B testing
✓ Advanced filters & intent signals
✓ Dialer + call recording
✓ Native HubSpot bi-directional sync
✓ Custom fields & webhooks
✓ Buying intent data & job change alerts
✓ Team mailboxes & sending rotation
HubSpot — Pro/Enterprise
✓ Full CRM API + custom objects
✓ Workflows & automated sequences
✓ Deal pipelines & forecasting
✓ Lead scoring & behavioral triggers
✓ Custom reports & dashboards
✓ HubSpot forms with progressive profiling
✓ List segmentation & smart content
✓ Lifecycle stage automation
Key unlock: Apollo↔HubSpot native bi-directional sync eliminates custom sync code. Apollo contacts auto-flow to HubSpot on conversion. HubSpot workflows can trigger lifecycle stage changes, lead scoring, and automated follow-up without custom backend logic.
Remaining Decisions
Sending domain: Use geopro.eyemagine.ai or separate mail.geopro.eyemagine.ai? (Separate recommended to protect main domain reputation)
Free report lead magnet: Actually run a quick scan and deliver results via email, or hook into existing free analysis flow?
Apollo↔HubSpot sync: Use native bi-directional connector (recommended with Pro+) or custom API for more control?
HubSpot forms vs custom: Use HubSpot embedded forms (tracking + progressive profiling built-in) or custom forms that POST to our API then push to both platforms?
Lead scoring model: Define scoring criteria in HubSpot — e.g. form fill (+10), email open (+5), link click (+15), pricing page visit (+20), enterprise form (+30)?
GEOPro Lead Gen & CRM Roadmap · Started Mar 2, 2026
System Optimization Plan
Architecture hardening, code quality, and performance · No feature changes
Audit completed Mar 20, 2026. Codebase: ~61K Python + ~30K JavaScript across 24 DB tables, 234 API routes, 30+ files. Overall grade: C+ — production-ready but needs hardening for scale. All work by Claude Code. All 4 phases completed Mar 20-23.
Codebase Audit Summary
Component
Lines of Code
Grade
server.py (main API)
16,751
C
admin_server.py
7,237
C
dashboard.js
13,610
C
admin.js
10,607
C
Crawlers (4 modules)
14,480
B
Analytics (4 modules)
6,594
B
Other backend modules (8)
5,132
B
Database
24 tables
C+
Total
~91K
C+
Critical Findings
Security
Password hashing uses SHA-256 (should be bcrypt)
PRAGMA foreign_keys NOT enabled — FK constraints silently ignored
API keys / SMTP passwords stored plaintext in system_config
12 bare except: clauses silently swallow errors
Architecture
server.py is a 16.7K-line monolith with 200+ routes, no Flask blueprints
~40% code duplication between server.py and admin_server.py
dashboard.js (13.6K) and admin.js (10.6K) also monolithic
No centralized API client — 148 fetch() calls with duplicated headers
Database
clients table has 45+ columns (25+ ALTER TABLE migrations)
7 missing indexes on frequently queried columns
No transaction management for multi-step operations
SQLite single-writer bottleneck
Performance
N+1 query patterns in file listing and FAQ loading
In-memory LRU cache only, lost on restart
APScheduler jobs not persisted (lost on restart)
requirements.txt uses >= not == — no version pinning
Optimization Timeline
All work by Claude Code. Timelines reflect automated refactoring with human review at each phase gate. Start: Mar 20, 2026
Phase
Mar 20
Mar 24
Mar 31
Apr 7
Apr 14
Phase 1: Critical Fixes
COMPLETED
All 7 tasks (FK, indexes, bcrypt, bare excepts, deps, token guard, cascades)
Phase 2: Reduce Duplication
COMPLETED
All 5 tasks (db_helpers, authFetch, shared.js, modals, transactions)