~akshay

work / Chrome extension · lead intelligence

Lead Surf

A LinkedIn lead-intelligence Chrome extension that reads your feed, classifies buying signals in real time, and surfaces the leads worth acting on, without automating replies.

getleadsurf.com
LEAD SURFscan 02:00

Your signal feed

LinkedIn · last 24 hours

143
10 hot leads6 competitors3 hiring
SASarah Chencompetitor mentionWorth connecting
ATAtlas Logisticshiring signalStrong fit
live product previewopen site →

01 / the problem

Why it exists

SDRs, agency owners, and consultants miss buying signals buried in their LinkedIn feed: someone complaining about a competitor, a hiring signal, a client posting. Reading 150-200 posts a day by hand doesn't happen.

02 / what it does

The product

demo

See it run

demo · extension walkthrough

03 / architecture

How it works

PIPELINEDATA ACCESSDaily briefPer-lead dossierOutreach trackernever auto-repliesFeed scan~150–200 posts / runLLM classifierGPT-4.1-mini · JSON01untrusted input · hardenedWatchlist overrideclient_activity02in codeVoyager APILinkedIn internal API03browser onlyBrightDatalocation enrichment04no profile views

01 · Structured JSON classifier

GPT-4.1-mini returns a strict JSON object with a compact schema. Categories are constrained, and client_activity is assigned in code, not by the model.

02 · Deterministic watchlist override

The Clients badge is only applied when the post's author actually matches the user's watched-client list, a lookup, not an LLM guess. Same principle as Ganit's price math.

03 · Voyager API from the browser only

The extension calls LinkedIn's internal Voyager API directly from the client, so LinkedIn cookies never touch the server. Calls are paced and deduped so the activity looks like normal browsing, not a scraping burst.

04 · BrightData for bulk enrichment

Location enrichment runs through BrightData instead of Voyager, specifically to avoid registering about 150 profile views per scan, which would flag the account.

05 · Prompt-injection hardening

Third-party post text is untrusted input flowing into an LLM, so generators that touch user or third-party text are hardened against injection.

04 / principle

The intelligence layer, not a spam bot

Lead Surf never auto-replies. The value is knowing who is worth talking to and why; the outreach is the user's call. And like Ganit: don't ask the model to judge what you can look up.

05 / stack & outcomes

Stack

React / TypeScriptPython / FastAPISupabase PostgresClerk (auth)Stripe (billing)Brevo (email)PostHog + GA4Chrome Web Store + Hetzner VPS (Docker / GHCR / Caddy)

Outcome

Shipped to the Chrome Web Store with a marketing site. Evolved from Keyword Scouter: beta users found multi-platform too scattered, and that feedback is what focused it on LinkedIn. I killed my own feature based on user feedback.

← back to work