
Sales Navigator Outreach System · TrustNet · 2026
A ToS-safe Sales Navigator outreach system with a human send gate
Sales Navigator's expensive tier still hands you a worse workflow than a free Sheet. This rebuilds the integration LinkedIn won't sell, inside ToS, and keeps the send button mine.
Enrich in Sheet
Apps Script, zero tokens
Approve rows
the Sheet is the dashboard
Agent composes
in a trusted browser
You hit send
no send primitive exists
- 3 hrs → 30 min
- daily workflow, compressed
- $0
- tokens spent on enrichment
- In-ToS
- no third-party account risk
01 · Problem
The priciest tool in prospecting, a worse workflow than a free Sheet
The Sales Nav tier I paid for couldn’t sync to HubSpot; the tier that could was a different price bracket. Below Advanced Plus, every request, message, and comment becomes a row you track by hand. Running the full cycle solo for three years, that tracker ate two to three hours a day.
Third-party tools
Promise to fix it, but break ToS in ways that range from “you'll get flagged” to “you'll lose your account.”
In-session, trusted browser
Work through a Chrome the platform already trusts. Nothing to detect, because nothing is pretending to be someone else.
02 · Solution
Reject the tier ladder: build the integration myself, inside ToS
The system is two halves with a clean handoff. The generation halfis a Google Apps Script bound to a Sheet: enrichment runs in-Sheet at zero token cost, and approved rows flip a column to ready-to-send. The Sheet is the dashboard, so there’s no separate UI to build.
The action half is a local TypeScript agent driving a persistent Playwright Chrome profile: a real instance logged into LinkedIn for months, with the cookies and fingerprint of a returning user. No detection signal to fire on.
03 · How I built it
Three layers, one of them the only place tokens get spent
Dispatcher
reads the Sheet, finds approved rows
Reasoning
LLM, what to say to this lead
Browser primitives
open, compose, stop at send
When LinkedIn changes its DOM, only the inner layer needs work. When message quality drifts, only the middle layer needs adjustment. The inner layer has no send primitive: the agent composes inside the LinkedIn dialog and leaves the cursor on send. The send is mine.
04 · The point
The headline isn't time saved. It's cost architecture.
The deterministic work (cleaning, structuring, scoring, formatting) runs at zero variable cost. Tokens only get spent on the one part that actually requires reasoning. That separation is the result of asking where does intelligence actually need to be? and routing everything else to free deterministic compute. Most builds skip the question and default to LLM-everywhere.
I paid for the tier LinkedIn won’t integrate. So I built the integration myself, inside ToS.
05 · Proof
A three-hour workflow, down to thirty minutes of review
Message quality holds across leads because each one is generated against its own signal set. Response rates run higher than templated outreach, though attribution is qualitative at this volume. The point isn’t infinite scale; it’s taking a three-hour daily workflow and compressing it to thirty minutes of review.
06 · What's next
Move the human gate from the action to the judgment
The bigger move: drop the approved column and let the agent decide whethera lead is worth messaging at all. Then I approve the agent’s reasoning, not the lead. Higher leverage, and a more honest test of whether the reasoning is good enough to trust.
The build is always the easy part. The judgment layer is the work.
Want the code, or a version tuned for your team? The build is on request.
Request the code