Linkedin Outreach — The Loop and Its Ledger

SkillDocs & knowledge

Use when running LinkedIn social selling as a repeatable motion — Sales Navigator saved searches and trigger alerts, weekly request budgets, fixing a low acceptance rate, turning profile views and post engagers into warm threads, logging every touch. NOT the note or DM copy (that is `cold-outreach`), NOT the deal after a reply (that is `sales-pipeline`).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Linkedin Outreach — The Loop and Its Ledger skill

What this skill tells your AI

The instructions your AI receives, as published by ericrisco/rsc-harness in skills/linkedin-outreach/SKILL.md and read by ahel’s review.

You run the LinkedIn social-selling motion and keep its score: who to touch, when, through what warm-up, and how the loop is run and logged. The thesis is warm-first — engagement before connection, signal before send, ledger before "I'll remember it." The output is a running system plus a touch ledger under 02-DOCS/, never a finished line of copy: when prose is needed you write the brief and hand it off, then stay in the loop.

Boundary

The sharpest line is against ../cold-outreach/SKILL.md, and it splits on message-vs-system:

  • A single message — the connection note (≤300 chars), the DM bump, its wording and per-inbox send cadence → cold-outreach. If the ask is "write this" or "fix this template," it is not yours.
  • The system — who to touch, when, the warm-up, the budget, the ledger → here. When both are in play, this skill drives and delegates the copy.

Also not yours: sourcing / scoring the raw prospect list and ICP definition → ../lead-gen/SKILL.md; the deal after a reply, i.e. stages, forecast, CRM tasks → ../sales-pipeline/SKILL.md; writing or scheduling LinkedIn posts../linkedin-content/SKILL.md; brand growth and positioning → ../linkedin-strategy/SKILL.md.

The loop

Five phases, in order. Each has a why and yields one artifact; the artifact gates the next phase. Skipping a phase is how acceptance collapses.

  1. Targetwhy: outreach timed to a reason beats outreach timed to a calendar. → Yields a Sales Nav saved search + trigger alerts (job change, funding, recent post).
  2. Warmwhy: a cold, context-free request is the worst-accepting move you can make; engaging first is what fixes it. → Yields a logged pre-touch (profile view + one genuine comment/like 1–2 days prior).
  3. Connectwhy: the request is the smallest, most rate-limited move; spend it deliberately. → Yields a sent request inside the weekly budget, note-or-no-note chosen by goal.
  4. Convertwhy: an accept is not a conversation; the choreography turns a signal into a warm 1:1. → Yields a thread with a real reply, copy delegated to cold-outreach when needed.
  5. Logwhy: a motion you can't measure you can't repeat or fix. → Yields a row in the 02-DOCS/ ledger with the outcome.

Each phase gets a section below; the last one compresses all five into a day.

Target with Sales Navigator

Build the saved search from the ICP, not from a name list:

  • Filters that matter: geography, current job title (use the title field, not keywords, to avoid past-role noise), seniority, company headcount, industry, and Posted on LinkedIn in past 30 days (active profiles accept and reply far more). Save it; Sales Nav re-runs it and surfaces new matches.
  • Trigger alerts worth turning on: changed jobs in last 90 days (new role = new budget, new pain), company funding events, and posted recently (a fresh post is your warm-up hook). Time the request to a trigger, never to a Tuesday.
  • InMail reality: Core and Advanced both ship 50 InMail credits/mo, rolling over up to 3 months (max 150 accumulated); an InMail that gets a reply within 90 days is credited back. Spend InMail on out-of-network leads where a connection request can't reach — not on people you could warm up and connect to for free.

Free vs Core vs Advanced — buy on the job, not the brand:

You needTier2025 priceWhy
Run the loop on a tight ICP, manual budgetFree$0Works if you stay disciplined; no saved-search alerts.
Saved searches, 40+ filters, lead/account alerts, 50 InMail/moCore$119.99/mo ($1,079.88/yr)The default for a working social seller.
+ TeamLink, Smart Links, buyer-intent, Account/Lead IQ, CRM syncAdvanced$159.99/mo ($1,799.88/yr)Only when a team or CRM sync is real.

Filter recipes per ICP, trigger-alert setup, and the full Core-vs-Advanced buy math → references/sales-navigator-playbook.md.

The connection motion

Engagement-before-connect ritual. 1–2 days before the request: view the profile, follow the company page, and drop one genuine comment or like on a recent post. This is what moves acceptance from ~20–30% (cold) to ~60%+. Log the pre-touch — it is phase 2, not optional flavor.

Note or no note — read the paradox correctly. A personalized note barely moves acceptance (26.42% with vs 26.37% without; some 2025/26 datasets show no-note accepting higher). But a note with real context nearly doubles the post-accept reply rate (9.36% vs 5.44%). So decide by goal:

Your goalNote?Why
Maximize the accept (build network, retarget later)No note (or near-empty)Notes don't lift acceptance; an empty request often accepts as well or better.
Maximize the reply after acceptShort context noteReal context roughly doubles reply; worth the friction only when you have a true hook.
No genuine hook existsNo noteA generic note is worse than none — it reads as a pitch.

When you do send a note, you do not write it here — hand the brief (the hook, the person, the goal) to ../cold-outreach/SKILL.md.

Weekly request budget — the cap is a rolling weekly limit, not a daily reset.

AccountRealistic weekly capDaily targetHealth rule
Free~100/wk~20/weekday, stay under ~80/wkPause and warm more if acceptance drops below ~30%.
Premium / Sales Navup to ~200/wkup to ~40/dayOnly with strong SSI and acceptance >40%; otherwise treat as free.

Over the cap, requests get throttled or the account flagged. Below ~30% acceptance you are spraying — go back to phase 2 instead of pushing volume, and withdraw stale pending requests before they pile up.

Engagement → conversation

A signal is an opening. Match the signal to a play; the play is choreography (timing, sequence, what to reference), never finished prose.

SignalPlayCopy?
Connection just acceptedWait, don't pitch. Reference why you reached out (their post/role/trigger), ask one genuine question.Brief → cold-outreach
Profile viewer (they viewed you)Soft, warm reply: "Saw you stopped by — noticed [their thing], curious how you handle X?"Brief → cold-outreach
Post engager (liked/commented your post)Thank or build on their comment, then DM a related question tied to their work.Brief → cold-outreach
Comment thread (they engaged a third party's post)Add value in-thread first, connect with that context the next day.Brief → cold-outreach

Worked example — the move, not the words:

Bad  (pitch-on-accept):
  Accepted → "Thanks for connecting! We help teams like yours cut reporting
  time 40% with our analytics platform — open to a 15-min demo Thursday?"
  Reads as a trap; reply rate craters.

Good (reference-then-ask):
  Accepted → "Appreciate the connect — your post on attribution gaps in
  ecommerce hit home. How are you splitting paid vs organic credit right now?"
  Opens a real thread; the product never comes up until they ask.

Hand off to pipeline

You run the loop up to a warm intro or a booked call — then you stop and hand off.

Buying-signal tells in a thread: they ask about price/timeline, mention an active project or pain, reference budget or a decision date, or say "send me more." When you see one:

  1. Book the call or send the warm intro.
  2. Log the outcome (call_booked) in the ledger.
  3. Hand the thread + context to ../sales-pipeline/SKILL.md — the moment a deal exists it is theirs, and you set no stages or forecasts.

The ledger (02-DOCS)

One file. Path: 02-DOCS/linkedin-outreach/touches.csv. The header row is fixed (verify.sh checks it verbatim):

date,name,profile_url,channel,trigger,action,stage,outcome,next_touch
  • channel: connect | inmail | dm | comment | view.
  • outcome (enum, no blanks): requested | accepted | replied | conversation | call_booked | dead.
  • Never leave a literal merge token ({first_name}, [company], XXXX, TODO) in a cell — verify.sh fails on it.

Full column spec, the outcome enum, a filled 5-row example, and the weekly-review formulas → references/ledger-schema.md.

Weekly review ritual (15 min, same day each week). Compute from the ledger:

  • Acceptance % = accepted ÷ requested.
  • Post-accept reply % = replied ÷ accepted.
  • Conversations → calls % = call_booked ÷ conversation.
  • Touches/week = rows added this week (is the loop actually running?).

If acceptance < ~30%, warm harder (phase 2). If reply < ~10%, your hooks are weak (better brief to cold-outreach). If touches/week is near zero, the loop stopped — that's the real failure.

Anti-patterns

BadWhy it bitesDo instead
Spray connection requests over the capRolling weekly limit; throttled or account-flaggedStay under ~80/wk free, ~200 Premium with >40% accept
Pitch the instant a connection acceptsReads as a trap; reply rate cratersReference their context, ask one real question first
Automation that ignores the rolling limitBursts trip LinkedIn's detection; account at riskPace within the budget; warm-up beats volume
Read "notes don't help" as "context never helps"Notes don't lift accept, but context doubles replyDecide note by goal: accept→none, reply→context
Chase SSI as the goalSSI is a lagging proxy; high SSI ≠ pipelineTrack acceptance/reply/calls; let SSI follow
Run outreach with no ledgerNo measurement → no repeatable motionLog every touch + outcome to 02-DOCS/

Daily 30-minute routine

Run this as a checklist; it is the loop compressed into a day.

  • Engage (10 min): comment genuinely on 5–8 posts from your saved search and from people you plan to connect with this week (phase 2 warm-up bank).
  • Connect (5 min): send today's requests from the saved search / trigger alerts, inside the weekly budget; note-or-no-note by goal (phase 3).
  • Convert (10 min): progress 2–3 warm threads — accepted connections, profile viewers, post engagers — using the signal→play table; delegate any copy to cold-outreach.
  • Hand off (2 min): any buying signal → book/intro, then route to sales-pipeline.
  • Log (3 min): write every touch and outcome to 02-DOCS/linkedin-outreach/touches.csv.

Weekly, run the review ritual and adjust the next week's targeting. That closes the loop back to phase 1.

Signals

GitHub stars
82
Forks
3
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
linkedin-outreach
Source
github.com/ericrisco/rsc-harness