Case Study

Multi-Source Outreach Agent for a Solo Founder

Solo Consultancy · Tech SalesLinkedIn + Maps + Companies HouseAI Message CompositionSelf-Hosted · Raspberry PiBuild + Train

A solo founder with a long career in tech sales was burning two hours every morning on LinkedIn, manually sending connection requests, scraping profiles, writing follow-ups one at a time, logging it all in spreadsheets. The pipeline depended on him showing up. When client delivery got busy, outreach slipped, which meant the pipeline shrank precisely when it needed to be full. We built a self-hosted outreach agent that pulls leads from LinkedIn, Google Maps and Companies House, drafts personalised follow-ups in his voice with priority-based context selection, and runs the whole grind on a Raspberry Pi he controls. He stayed in the seat for closing. Two hours back per day, consistently.

Sales dashboard · KPIs, activity chart, lead funnel, today’s approval queue

Sales dashboard · KPIs, activity chart, lead funnel, today’s approval queue

Lead sources · LinkedIn, Google Maps and Companies House live integrations with caps and rules

Lead sources · LinkedIn, Google Maps and Companies House live integrations with caps and rules

Campaigns & templates · sequences, send caps, template library with reply-rate metrics

Campaigns & templates · sequences, send caps, template library with reply-rate metrics

Lead deep-dive · three data sources merged, full interaction timeline

Lead deep-dive · three data sources merged, full interaction timeline

Reports & automated flows · reply-rate by template, send-time heatmap, automation engine

Reports & automated flows · reply-rate by template, send-time heatmap, automation engine

At a glance

Industry
Professional services · solo consultancy · tech-sales background
Team size
1
Mode
Build · with a short Train phase for prompt-tuning onboarding
Status
Live, still running · Sales Navigator extension on the next iteration
Friction type
Outbound outreach squeezed by delivery workload. Two hours every morning on LinkedIn. Spreadsheets as state. Pipeline shrank exactly when it needed to be full. He'd tried browser-bound tools (Octopus, Phantom Buster), they worked but he wanted something he controlled, that ran independently, and that fit his specific sequence.

The problem

On the surface: two hours every morning on LinkedIn, manually sending connection requests, checking who'd accepted, scraping profiles to personalise follow-ups, writing messages one at a time, logging everything in spreadsheets. Underneath: the whole pipeline depended on him showing up. When client delivery got busy, outreach slipped, and the pipeline shrank precisely when it needed to be full. Classic solo-founder failure mode. The work that built the business was being squeezed by the work that delivered it.

The solution

An outreach agent that runs his end-to-end workflow but keeps him in the seat when it matters. Three live data sources feed the lead engine. AI does the messaging where it earns its place, and a strict priority order keeps the output sounding like him, not an LLM.

  • Lead sourcing · three live integrations

    LinkedIn (saved searches by occupation + area, daily cap from a dashboard), Google Maps (business listings with phone, hours, rating filters, chain/franchise exclusion), Companies House (registered name + postcode match, SIC-code filter, dormant / liquidation flag). One queue, three sources.

  • Connection requests · templated, deliberately not AI

    The character limit is too tight for meaningful AI personalisation, and using AI on this step makes it harder to track which phrasing is actually working. Templated with light variable insertion is the right tool for this job.

  • Acceptance check + profile scrape

    On every run the agent reviews previously sent requests and logs newly accepted. For each new connection it pulls current role, recent posts, and About section. The data is structured and timestamped, recent posts beat About every time.

  • AI follow-up composition · priority-based

    This is where the AI earns its place. Strict priority order: (1) prior reply → response builds on the reply, (2) recent post → message references the post, (3) About section → light personalisation, (4) generic fallback. Prompt engineering tuned so the output reads like a professional human, not an LLM.

  • Multi-channel sequencing

    LinkedIn opener on accept → email day-3 follow-up → email day-7 final, with calls logged manually. Up to two AI-composed messages per lead. After that a human takes over to nurture toward a booking, the agent delivers warm leads to the inbox, not closed deals.

  • Human-in-the-loop graduating to auto

    Started as one-click approve / edit on every message. Once the founder was comfortable with the tone, he flipped to fully automated. The HITL state lives in the dashboard so flipping back for a new campaign is a switch, not a rebuild.

  • Templates & reports · the strategic layer

    A template library with reply-rate metrics per variant, a reply-by-template bar chart, a send-time heatmap (hours × weekdays) so he could see when responses actually came in, and a per-campaign funnel from scraped → enriched → connected → engaged → booked. The agent runs the activity. The reports turn it into strategy.

  • Automated flows engine

    Six scheduled automations: LinkedIn sweep at 06:00, Maps scrape at 06:30, Companies House enrichment after every scrape, day-3 follow-up triggered on accept+3, weekly performance digest on Mondays, quarterly cold-lead reactivation. Pause / resume from the dashboard.

  • Self-hosted on a Raspberry Pi

    Whole system runs locally. He owns the data, the rate limits, the failure modes. Browser-bound tools were ruled out, he wanted something independent of any single platform's constraints. The agent runs up against the same LinkedIn ceiling a human does, but holds the line at it whether he's busy or not.

What it deliberately isn't

A black-box set-and-forget lead machine. He stayed in the loop for closing, for follow-up timing, and early on for message approval. The agent removed the two hours of grind, not the judgement. Connection requests are templated on purpose. Messages cap at two AI-composed touches per lead, after that, a human takes over.

The outcome

  • Build time: 4 weeks to build · 2 weeks to onboard. Most of the onboarding was coaching on prompt engineering so he could tune the message composition himself as campaigns evolved.
  • Time to value: first week. He felt the two hours back almost immediately.
  • Time saved: ~2 hours per day, consistently.
  • Consistency: outreach stopped being the first thing to slip in a busy week. The agent held the line at the platform ceiling whether he was busy or not.
  • Strategic visibility: reply-rate by template, send-time heatmap, and per-source funnel let him plan future campaigns around real data rather than guessing.
  • Pipeline read (honest): not measurable as a pure lift, LinkedIn caps how many requests can be sent before pushback. The agent runs up against the same ceiling a human does. The real win: as delivery workload grew, a human version would have shrunk. The agent held the line.
  • Status: still running. Next iteration extends to Sales Navigator.

Lessons

The agent isn't there to replace the founder's judgement. It's there to protect the process from the founder's calendar. Build for the moment the client gets busy, because that's when manual processes collapse and when the system has to hold.

Sketcha

Got an idea like this in your own business?

Sketcha is a quick, no-pressure way to talk it through. Tell me where things are sticking and you'll walk away with a sketch of how a system could look, including a flow diagram of the AI bits.

Example Sketcha flow diagram of an AI workflow
SKETCHASKETCHA