eebase / outreach
A recruiting co-worker by Base to Base
Install
Free & open source — not $99/seatOpen source

Outreach that won’t
get you flagged.

ebase runs candidate outreach from inside Claude Code — in your own signed-in Chrome, under LinkedIn’s safe limits, so your account never gets flagged.

Live · a real session, start to booked call
ebase · claude codelive

That whole session starts with one command.

$curl -fsSL https://raw.githubusercontent.com/embeddingvc/ebase/main/install.sh | bash
macOS · Python 3.10+ · Claude Code · under five minutes
What happens next

Say “connect.” Agents deliver the meeting.

You say one thing — “connect with this person.” Routines handle accepts, follow-ups, conversations, and meeting booking automatically. No manual steps in between.

You do once
SetupSet sync-pending-connections and conversation-planner as routines.
Input“Connect with these 5 profiles.”
ebase handles forever
AutoSyncs accepts, sends follow-ups, drives conversations, books meetings — overnight, every night.
ResultMeetings land on your calendar. You never opened LinkedIn.
You
"Connect with maya-khatri"
Reads her profile, writes a personalized note, sends the request
personalizedin your voicerate-limited
routines take over
Auto
Routine syncs accepts
Checks daily for acceptance — backoff 30m → 24h
30m1h4h24h
accepted
Auto
Routine sends follow-up
Drafts a natural message in your voice, sends it automatically
Glad we connected, Maya…
Sounds interesting, this week?
replied
Auto
Routine drives to meeting
Multi-touch sequence until a call is booked
Open to a quick chat?
Sure, I'm free Thursday
confirmed
Meeting booked
Maya Khatri · Tue 10:00 · 30 min
coldconnectedconversationcall booked
01 — Why ebase

Not a spam bot — a careful one.

Every other outreach tool eventually gets your account flagged. ebase doesn’t blast — daily caps match what LinkedIn tolerates (25 requests, 50 messages, 100 views), and it stops at the cap with “resume tomorrow.”

It’s a purpose-built LinkedIn MCP server — not generic computer use that screenshots and guesses where to click. It drives your real, signed-in Chrome over CDP with structured operations. Nothing headless, nothing to fingerprint. The thing you can’t afford to lose stays safe.

Today · live countsWithin limits
Connection requests9 / 25 / day
Direct messages14 / 50 / day
Profile views41 / 100 / day
02 — The interface

Say what you want. It does the reading, drafting, and sending.

“Connect to this candidate.” “Book a call.” “Ask for a resume.” Each is one sentence — ebase reads the profile, writes in your voice, sends, and logs it to your pipeline.

Each ask runs as a skill — call it directly, like /send-connection-request linkedin.com/in/…, or just say it in plain English. ebase chains the follow-up skills from there.

connect to linkedin.com/in/maya-khatri
Reads her profile and sends a connection request, noted in your voice.
/send-connection-request
book a meeting with linkedin.com/in/jordan-liu
Sends the request, waits for the accept, then plans the thread toward a call.
/send-connection-request/sync-pending-connection/conversation-planner
ask linkedin.com/in/sara-ramos for her resume
Drafts a warm, specific ask and sends it once she's connected.
/send-connection-request/conversation-planner
gauge if linkedin.com/in/diego-ortiz is open to a move
Reads recent activity and signals before you spend a touch.
/conversation-planner
reply to jordan-liu’s latest post about hiring
Writes a comment in your voice, confirms with you, posts it.
/reply-to-post
03 — Co-work mode

It works in your Chrome, right alongside you.

ebase doesn’t spin up a separate bot account. It runs inside the same Chrome you’re signed into — so you can keep browsing and adding people by hand while it works the pipeline.

You keep using LinkedIn normally. ebase just paces its own actions under the platform’s safe limits — and it’s selective, skipping anyone who hasn’t accepted yet, so it never re-pings or looks automated.

Today · same Chrome sessionCo-work
Youbrowsing and adding people, as usual
ebasesent 6 · skipped 2 not yet accepted
ebase requests today · self-paced6 / 25
Why ebase

Why not the tools you already know?

You’ve seen what ebase does. Here’s why the usual options don’t fit the way you actually recruit.

  • LinkedIn Recruiter — powerful, but priced for the enterprise.
  • Outreach SaaS (Dux-Soup, HeyReach) — per-seat fees and yet another UI to learn.
  • MCP-native tools — expose API calls, but you still assemble the outreach yourself.
  • Custom scripts — fast to automate, but they blast the network like a bot.
What we believe

Built around people, not volume.

01 — Human connection

Hiring is human.

The best teams are built through real conversations between people. ebase exists to start more of them — never to stand in for the human on either end.

02 — Your call, not the bot’s

You decide who.

ebase never picks targets or sprays the network. You choose every person worth reaching out to — the agent just runs the outreach you’ve decided on.

03 — Agent co-workers

Agents carry the load.

A good co-worker absorbs the busywork — tracking, follow-ups, drafts — so your attention goes where only you can: connecting with people.

How it works

Four steps. Then a sentence.

01

Install once

One curl command. uv, Playwright, the MCP server and the skills register with Claude Code in under five minutes.

02

Sign in to Chrome

It drives your real, authenticated Chrome session over CDP — no headless browser, nothing for LinkedIn to flag.

03

Just ask Claude

“Connect to this profile.” “Follow up with last week’s accepts.” Natural language in, real outreach out.

04

It stays safe

Every action is logged and capped to LinkedIn-safe daily limits. The agent refuses to cross them.

What’s inside

The whole package.

LinkedIn MCP serverProfiles, connect, message, engage, persist
30 tools
Claude skillsChainable workflows in ~/.claude/skills
5 skills
Queue workerBatch automation from JSON queue files
worker.py
Claude RoutineAuto-syncs accepts, respects rate limits, follows through
scheduled
Per-user stateIsolated prospects, threads, logs
JSON / JSONL
One-command installeruv · Playwright · MCP register
install.sh
Free & open sourceNo seats, no license fees — fork it, read it, ship it
MIT

Install it. Send one request.

That’s the whole pitch. Five minutes from this command to a connection request written in your voice.

$curl -fsSL https://raw.githubusercontent.com/embeddingvc/ebase/main/install.sh | bash

Open source, MIT-licensed — read every line before it ever touches your LinkedIn account.