AI Sales Lead Harvester
AI lead pipeline for the GoHighLevel CRM · 2025 – 2026
Built with: Next.js, SQLite, FastAPI, Ollama, Google Apps Script, Cloudflare Tunnel, GoHighLevel API
The problem
Some of the best sales leads show up as screenshots, like a Facebook post from a local business. Turning one into a usable CRM contact meant retyping names and numbers, looking the business up, and filling in fields by hand, one lead at a time.
What I built
AI Sales Lead Harvester (sold as GSheet Wizard) does all of that in one step. Paste a screenshot, and out comes an enriched, tagged contact in GoHighLevel, the client's sales and marketing CRM. Here's one demo lead making the trip:
Paste
A Facebook post, pasted into the web app or a Google Sheet
Extract
- Business
- Maple & Pine Pressure Washing
- Contact
- Dana Reyes
- Phone
- (555) 214-7788
Enrich
- Google Places match
- Yelp listing found
- Website verified
Push
Dana Reyes
New GoHighLevel contact, screenshot attached
- pressure-washing
Under the hood
- Reading the screenshot. A FastAPI service runs a vision model locally with Ollama and pulls out the business and contact name, phone, email, website, social handles, and the service offered.
- Checking the details. The pipeline matches the business on Google Places, finds its Yelp listing, and tracks down the official website while skipping directories, parked domains, and social links. It cross-checks names, phone numbers, and addresses to score each match.
- Saving the contact. Each lead is created or updated in GoHighLevel, with tags and the original screenshot attached.
- Two ways in. Operators can use a multi-tenant Next.js web app (email or Google sign-in, admin tools, SQLite) or a Google Sheets template backed by a versioned Apps Script library.
Why it's built this way
- The AI runs on my own hardware. The vision model runs on a Mini PC I own, so there's no per-image API bill. Its services only listen locally and are reached through a Cloudflare Tunnel with API-key and session security.
- Secrets stay on the server. Each client's GoHighLevel credentials live server-side. Operators sign in, paste, and push, and never have to touch an API key or Location ID.
- AI agents in the loop. I set up the GoHighLevel MCP server so Cursor agents can work against the live CRM while I build and debug.
Screens

