Projects using OutreachProjects using OutreachA LinkedIn connection is not a lead. A reply is not a client.
The real opportunity is in what happens between those two moments.
Most businesses approach LinkedIn as a prospecting platform.
But successful client acquisition requires a complete system:
→ Profile Positioning: Make your profile communicate who you help and why they should trust you.
→ Ideal Client Research: Define your ICP, identify decision-makers, and understand their business challenges.
→ Targeted Prospecting: Use Sales Navigator to find relevant companies instead of collecting random contacts.
→ Strategic Visibility: Publish useful content, demonstrate expertise, and build credibility before reaching out.
→ Personalized Outreach: Start conversations around relevant business needs—not generic sales pitches.
→ Consistent Follow-ups: Build a natural sequence that moves conversations forward without becoming pushy.
→ Lead Qualification: Identify genuine interest, business needs, and decision-making authority.
→ Meeting Conversion: Make the next step clear and turn qualified conversations into booked calls.
→ Proposal & Closing: Present a relevant solution, clarify the scope, and move toward a decision.
I’ve mapped this journey into a 16-step LinkedIn Client Acquisition Framework, covering:
• Profile optimization
• ICP and prospect research
• Connection request strategy
• Content and lead magnets
• Four-message DM framework
• Sales Navigator prospecting
• Meeting booking
• 30-day execution plan
• Weekly performance tracking
• Proposal-to-client conversion
One principle sits behind the entire process:
Don't optimize for more connections. Build a system that creates better business conversations.
I'm curious:
Which stage creates the biggest challenge for you—finding the right prospects, getting responses, or converting conversations into clients?
SaleCraft | Crafting Opportunities.
#Linkedin #SalesFunnel #ClientAcquisition Built a full AI consulting business system — from website to outreach machine.
For a boutique AI consulting firm targeting mid-market companies in the US and Europe, I designed and shipped the full technical
stack:
Production website (React + TypeScript + Express)
Not just a landing page. A conversion machine: lazy-loaded routes, per-page SEO metadata, structured data for Google, a sitemap, an
OG image for social sharing, and Lighthouse-ready performance fixes (including a Framer Motion LCP bug that was silently tanking
search rankings).
AI Diagnostic Tool
A multi-step lead qualification form that calls Claude under the hood, generates a personalized automation ROI report for each
prospect, and delivers it at a unique URL — with prompt injection protection baked in (XML-delimited user inputs, system prompt
hardening).
Security layer
CSP headers, correct trust-proxy config for a Cloudflare + Railway dual-hop topology, hardened email notification logic, and temp
file cleanup that survives errors. Production-grade, not tutorial-grade.
LinkedIn prospecting engine
A Python + Playwright scraper that:
Rotates across 10 industry niches
Qualifies leads by title, location, and post recency
Auto-generates personalized connect requests (≤300 chars) and follow-ups via Anthropic API
Exports to Excel, deduplicates across runs
Currently targeting Property Management decision-makers in Florida & Texas
This is what "full-stack AI consulting infrastructure" actually looks like in practice.
What was built
A production-ready AI consulting business stack, covering six layers end to end.
On the frontend, a React SPA with TypeScript, lazy-loaded routes, per-page SEO metadata via react-helmet-async, and full
internationalization in English, Spanish, and Danish.
The SEO layer included a sitemap, robots.txt, JSON-LD structured data schemas for Google, a custom OG image at 1200×630px for
social sharing, and a performance fix for a Framer Motion bug that was silently blocking the page's Largest Contentful Paint —
meaning Google couldn't properly index the main headline.
The backend is an Express + TypeScript API deployed on Railway, hardened with Content Security Policy headers, correct trust proxy
configuration for a Cloudflare + Railway dual-hop topology, and proper temp file cleanup that survives errors.
The AI feature is a multi-step diagnostic form that sends the prospect's business data to Claude, generates a personalized
automation ROI report, and delivers it at a unique shareable URL — with prompt injection protection built in so user-submitted text
can never hijack the LLM's instructions.
On the security side, all user-controlled fields are wrapped in XML delimiters in the prompt, environment variable handling was
hardened to eliminate silent fallbacks, and no sensitive data leaks through error paths.
Finally, the outreach system is a Python + Playwright scraper that rotates across industry niches, qualifies leads by title,
location, and post recency, then uses the Anthropic API to generate personalized LinkedIn connect requests and follow-up messages
for each lead — exporting everything to Excel with deduplication across runs.
Key technical problems solved
LCP blocked by Framer Motion: opacity:0 on H1 prevented Google from indexing the headline. Fixed by rendering plain HTML on first paint.
Prompt injection risk: All user-submitted fields wrapped in XML delimiters + system prompt instruction to treat them as data, not commands.
Dual-hop proxy misconfiguration: trust proxy: 1 was wrong for a Cloudflare → Railway topology. Corrected to 2 to get real client IPs in logs and rate limiting.
Location-aware lead qualification: Scraper's filter system refactored to support per-niche target_locations, enabling pivot from Danish to US markets without touching core logic.