KodeReach — LinkedIn AI prospecting at scale
A LinkedIn prospecting platform that automates outreach and lead qualification for thousands of prospects a month using Selenium, LangChain agents, and a Chrome extension. Used by 100+ paying clients.
- LangChain
- Automation
- Selenium
- FastAPI
KodeReach is a LinkedIn AI prospecting platform. It automates outreach and lead qualification for roughly 7,000 prospects per month, combining Selenium-driven on-platform actions with LangChain agents that read each profile and decide whether — and how — to reach out. It's in production with 100+ paying clients, and it improved SDR efficiency by about 80% for the teams using it.
The problem
Outbound prospecting on LinkedIn is mostly manual grind: an SDR opens profiles one by one, reads them to judge fit, writes a note that sounds personal, sends it, and then tracks who replied across a spreadsheet. It doesn't scale — the reading and personalizing is the slow part, and it's exactly the part that a generic mail-merge blast gets wrong and burns the account doing it.
The problem to solve wasn't "send more messages." It was "do the reading and judgment automatically, at volume, without acting like a bot." That means qualifying each prospect against the client's criteria and only then generating outreach that references something real about them.
Architecture
KodeReach splits into two halves: a Chrome extension that lives inside the user's own authenticated LinkedIn session and performs the on-platform actions, and a FastAPI backend that runs the pipeline — Selenium for scraping, LangChain agents for qualification and message generation, and PostgreSQL for state and tracking. Driving actions from the client's real browser session, rather than a headless farm, keeps activity tied to a genuine logged-in user.
Scraping with Selenium
The extension navigates to target profiles inside the user's session, and Selenium extracts the structured signal the agent needs: headline, current role and company, past experience, and recent activity. Pacing matters as much as parsing here — the actions are throttled and jittered so the account behaves like a person working through a list, not a script hammering an endpoint.
Qualification with LangChain agents
Each scraped profile is handed to a LangChain agent that scores it against the client's ideal-customer criteria — title, seniority, industry, company size — and returns a decision plus the reasoning behind it. Only prospects that clear the bar move on to outreach; the rest are logged and dropped. This is the step that replaces the SDR's manual read of every profile, and it's where most of the efficiency gain comes from.
{
"prospect_id": "li_8842",
"qualified": true,
"score": 0.86,
"reasons": [
"Title matches ICP (VP Engineering)",
"Company in target range (200-500)",
"Recent post about hiring — timely hook"
],
"outreach_angle": "hiring / team scaling"
}A qualified prospect carries an outreach_angleforward, so the message-generation step isn't writing from a blank slate — it already knows the specific, real hook to open on. That's what keeps the outreach personalized at volume instead of reading like a template.
Chrome extension & backend
The extension is the hands and the backend is the brain. The extension handles everything that has to happen inside a live LinkedIn session — navigation, scraping, and sending — while the FastAPI service owns the queue, runs the LangChain agents, and records outcomes. They talk over a thin API so the browser side stays light and the heavy lifting stays server-side and observable.
Tracking
Every sent message and reply flows back into PostgreSQL so a client can see, per campaign, who was qualified, who was contacted, and who responded — the loop that closes prospecting into a measurable funnel rather than a fire-and-forget blast.
Outcomes
In production, KodeReach runs outreach and qualification for around 7,000 prospects a month and is used by 100+ paying clients. For the SDR teams on it, the automation of the read-qualify-personalize loop cut the manual effort by roughly 80%, which is the number that mattered: their people spend time on conversations, not on opening profiles one at a time.
The leverage isn't sending more — it's automating the judgment. Qualifying each prospect before a single message goes out is what keeps the volume high and the outreach still worth reading.
Stack
- Backend: FastAPI, Django
- Automation: Selenium, Chrome extension
- AI:LangChain agents for qualification & message generation
- Frontend: Next.js
- Data: PostgreSQL