Reply to every LinkedIn conversation
Four times a day, LinkedIn threads where the other person wrote last come back to you in Slack with a reply drafted in your style. Nothing is sent for you.
- Starts
- Daily schedule, four passes
- Steps
- 9
- Checks and gates
- 2
- A person decides
- 1
Trigger · Schedule
Daily schedule, four passes
Four times a day the run picks up every message that arrived since the last pass, never a fixed depth of history.
Claude runs the rest autonomously
- 1
AI pages the inbox back to the last pass.
LinkedInLinkedIn
Threads come back newest first, page by page, until a page falls behind the point the last pass reached.
- 2
AI keeps threads where they wrote last.check
LinkedInLinkedIn
A thread is kept when the last message came from the other person, judged on the sender rather than on the read status.
- 3
AI reads and classifies each thread.
The whole conversation is read and each one is sorted into a refusal, a question, interest, off-topic or other.
- only when a lukewarm reply from someone who runs a company
- 4
AI qualifies the sender's company first.
INSEE SireneINSEE Sirene
The company's registry record and its own page give its size, trend and directors, matched to the person before any of it is used.
INPIINPI
LinkedInLinkedIn
- 5
AI drafts a reply in your style.
Each thread gets a short reply in your own voice, and a lukewarm one gets two variants built on one concrete deliverable.
- 6
AI delivers each draft in a direct message.
SlackSlack
You get the name, profile link, last message and draft for every waiting thread, or one line saying nothing is waiting.
- 7
AI logs each thread, moves the watermark.
Every delivered thread is logged with its exact draft, and the marker moves forward so the next pass starts where this one stopped.
Send the reply yourself. A person steps in here.handover
You copy, edit or ignore the draft and answer in the thread yourself, since the run never sends a message.
- 9
AI learns from what you actually sent.
LinkedInLinkedIn
Later passes compare the reply you sent with the draft, and a style rule changes only when three of those differences agree.
A reply on LinkedIn says "sounds interesting, tell me more" on Tuesday afternoon, between two meetings. By Thursday it is six threads down, under a recruiter and two congratulations, and the person who wrote it has decided you were not that interested after all. Nobody ignored it. The inbox just has no notion of whose turn it is, and the unread counter goes to zero the moment you glance at it on your phone.
Everything needed to fix that is already in the inbox. Every thread says who sent its last message, and your own past messages say how you write. The work is reading the inbox four times a day from where the last pass stopped, keeping only the threads waiting on you, and putting a reply you would actually send in front of you, in the place you already look.
What you get
No LinkedIn thread waits on you for more than a few hours, each one arrives in a Slack DM with the last message and a reply ready to copy, and the drafts get closer to how you write every time you answer.
What each waiting thread is checked against
Each pass pages through your LinkedIn inbox, newest first, back to a watermark: the newest message the previous pass handled. A first pass with no watermark reads the last 50 threads and stops there. A thread is kept when the sender of its last message is not your own account, compared on the sender's id. The message's own "sent by me" flag has been seen false on every thread of an account, and the unread count is zero on threads you opened and never answered, so neither one decides anything.
Each kept thread is read in full and sorted: a refusal, a real question, interest, off-topic, or other when it is neither a sale nor a refusal. When the reply is lukewarm and the person runs a company, the company is looked up before a word is drafted: its identity, size and establishments in INSEE Sirene, its directors and filed accounts in INPI, its headcount trend and how it describes itself on its LinkedIn page. The drafts reach you as one direct message in Slack.
What makes AI-drafted LinkedIn replies hold up
The drafts start from how you actually write. Before the first pass, a few dozen of your own sent messages are read and turned into style notes: how long, how you open, whether you sign off, how you end. A reply is one to three sentences, opens on the first name and ends on a question or a link, in the thread's own language. A proof point appears only when you are selling, and only one you can cite.
A lukewarm reply gets a different draft. "Why not" is a door left ajar out of politeness, and a calendar link shuts it. The draft instead names one result tied to how that company makes money, offers to deliver it by a date, and ends on a question that takes three words to answer, with no conditional tense and no list. The person is matched to the company first, by name among the directors or a headline naming it, because the facts of a namesake company are worse than none. Two variants come back, one committing to a deliverable and one that costs them nothing, and you choose.
The watermark is what keeps the DM honest. It moves only after the message went out, so a pass that failed to deliver leaves the same threads for the next one, and it moves even when nothing was kept, so the next pass does not rescan the same window. An empty pass still sends one line saying nothing is waiting, because silence looks the same as a broken run.
Drafts that get closer to how you write
Nothing is ever sent on LinkedIn by the run: you copy the draft, edit it or ignore it, and answer yourself. That reply is the feedback. Each later pass rereads the threads it delivered, finds the message you sent after the draft arrived, and stores it next to the draft with what changed: length, opener, tone, what you kept or cut. A style rule only changes when three or more of those differences point the same way, so one edit on one thread never rewrites how you sound. A thread left unanswered for a week is closed for learning, so a dead conversation is not rechecked forever.
For the other half, writing the first message and what LinkedIn allows a free account to send, see LinkedIn outreach with Claude or ChatGPT.
The prompt
The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.
# Reply to every LinkedIn conversation
You have access to your own LinkedIn session, a company registry,
a team messaging tool, and one table you can read and write. Run this
**[four times a day, for example morning, midday, afternoon and
evening]** on **[your own LinkedIn account]**.
## 1. Page the inbox back to the last pass
### Before the first pass
- **Your own id.** Read your own LinkedIn profile and store the
provider id of the connected account. Step 2 compares every thread
against it and step 9 looks for it; nothing else on a message
reliably says who wrote it.
- **The workspace.** Pass the workspace that holds the LinkedIn
connection explicitly on every call. A scheduled session that
starts elsewhere does not resolve it and fails as if the account
were not connected.
- **The log table.** One table keyed on the thread's chat id, with
`contact`, `profile_url`, `last_message_at`, `delivered_at`,
`status`, `draft`, `actual_reply` and `learned`. It also holds two
kinds of control rows: one `__watermark__` row and one
`__run__<timestamp>` row per pass. A table an agent creates can
belong to that person by default even inside a shared workspace:
move it to the workspace straight away, or the next scheduled
session will not find it and will create a second one.
- **The DM channel.** Look yourself up in the messaging tool by the
email you use there (often not the one your other accounts sign in
with), open a direct message, and store the channel id.
- **Your style notes.** Read a few dozen of your own sent LinkedIn
messages (the ones whose sender id is yours) and write down how you
actually write: length, how you open, whether you sign off, how
you end. Step 6 starts from these, and step 9 corrects them.
- Read the `__watermark__` row: its `last_message_at` is the newest
message the previous pass handled.
- **No watermark means the last 50 threads, and nothing more.** A
first pass that surfaces two years of threads is a digest nobody
reads.
- List threads 20 at a page, newest first, and keep paging with the
cursor for as long as the last thread on the page is newer than the
watermark. The first page that falls behind it is the last one
read. Larger pages have been refused outright on real accounts, and
20 is also the default.
- **A hard cap of 200 threads a pass.** Past it, deliver what you
have and say so in the DM: a pass that never finishes delivers
nothing.
- A page of 20 threads is too large to read whole. Extract only the
chat id, the attendee's name, headline and profile URL, the last
message's time, sender id and text. When the attendee names come
back with an error status, the name lookup did not run: fall back on
the thread's own name or the last message's sender rather than
concluding there is nobody on the other end.
## 2. Keep threads where they wrote last
- A thread is waiting on you when the last message's sender id is
**not** your provider id.
- **Never use the message's "is sender" flag.** It has been observed
false on every thread of an account, including the ones where the
account itself wrote last. Trusting it surfaces the whole inbox.
- **The unread count is not a criterion either.** It reads 0 on a
thread you opened on your phone and did not answer, which is
exactly the thread this process exists to catch.
- You wrote last: nothing is waiting on you. Following up on silence
after your own message is a different process.
## 3. Read and classify each thread
- Read the whole thread. "Yes, interested" means nothing without
knowing what was proposed three messages up.
- A last message that is only a voice note cannot be transcribed:
flag it in the DM and draft a line asking for the gist in writing.
Never invent what the note said.
| Class | Looks like | The draft |
|---|---|---|
| Refusal | "no thank you", "not interested" | Short and gracious. No nudge, no pitch. |
| Question | A real question about your offer, how it works, the price | Answers it, then offers a slot. |
| Interest | "sounds good", "send it over", "let's talk", a thumbs-up on a pitch | **[Your calendar link]**, or a light next step. |
| Off-topic | An inbound pitch, spam, an automated sequence | Flagged, draft left empty: you decide. |
| Other | Neither sale nor refusal: a recruiting thread ending on a pleasantry, a congratulation | A minimal draft if one makes sense, and the DM says it was not forced into a class. |
## 4. Qualify the sender's company first
"Why not", "you never know" and "send it anyway" are not interest.
They are a door left ajar out of politeness, and a calendar link
closes it. For these threads, and for any thread where the person
runs an identifiable company, qualify the company before writing:
- **The registry.** Search the company by name to get its
registration number, then read its identity: headcount band,
activity code, open establishments. Read its directors and its
filed accounts; the latest filing can be a simplified one with no
revenue line, so walk back to the first year that carries one
before writing "no revenue". In France this is the national company
registry; elsewhere, use your country's equivalent.
- **The company page** on LinkedIn: current headcount, twelve-month
growth, industries, and the words the company uses about itself.
Company lookups are cached for a few hours and their quota is
small, so qualify the threads that need it, not the whole inbox.
- **Match the person to the company before using any of it**: their
name among the directors, or their headline naming the company. The
facts of a namesake company are worse than no facts.
## 5. Draft a reply in your style
**The general rules**, from your style notes:
- One to three sentences, never a paragraph.
- Open on the first name. No "Dear", no "I hope this finds you
well", no signature.
- End on a question or a link.
- Write in the thread's language.
- A proof point only when selling, and only **[your citable proof
point]**, never a figure made up for the occasion.
**The lukewarm format**, for the threads step 4 qualified:
- One play, never a list: the one that touches their P&L, worked out
from how the company makes money rather than from your catalogue.
- Never use their trade's vocabulary unless you are sure of it. A
term used slightly wrong in front of someone who has done the job
for fifteen years costs more than the proposal earns.
- Offer a deliverable, not a capability: "I'll send you [the result]
for one of your [sites] by [day], you take a look" beats "AI could
automate [task]". End on a question answerable in three words.
- No conditional tense, no bullet points, no "etc.".
- Keep the hook of your first message. If you opened on something
personal, it has to survive into the reply.
- Proofread.
- Deliver **two variants**: one that commits to a dated deliverable,
one that costs them nothing and lets them choose the ground. This
format runs past three sentences on purpose: it only applies to
threads worth a real message.
## 6. Deliver each draft in a direct message
Post to the stored DM channel, one block per thread:
```text
*<Name>* — <headline>
<profile link>
Received <date>: "<last message>"
Draft: <text ready to copy>
```
- For a lukewarm thread, add one factual line about the company
before the draft (headcount, trend, sites, revenue when filed) and
label the two variants.
- Above roughly four thousand characters the messaging tool splits
the message and says so in its response. Read that before
re-posting: a message can be deleted but not edited, so a re-post is
a duplicate.
- **An empty pass still sends one line**: "nothing waiting". Silence
cannot be told apart from a broken run.
## 7. Log each thread, move the watermark
- One row per delivered thread, keyed on the chat id: contact,
profile URL, when the last message arrived, `delivered_at`, the
class in `status`, the exact `draft` as delivered, `actual_reply`
empty and `learned` false. Store the draft verbatim, or step 9 has
nothing to compare against.
- **Then move the watermark** to the newest message time seen this
pass, even when no thread was kept, or the next pass rescans the
same window. Move it only after the DM went out: a pass that failed
to deliver leaves the mark where it was.
- Write a `__run__<timestamp>` row with threads scanned, kept and
delivered. A scheduled run that finishes green has not necessarily
done its job; this dated line makes the history readable.
- The watermark is the only thing preventing duplicates. Do not fire
a manual pass while a scheduled one is running.
## 8. Send the reply yourself
You copy the draft, edit it or ignore it, and answer on LinkedIn.
This process never sends a LinkedIn message: keep the send action
out of the scheduled run's allowed tools entirely. It writes to no
CRM, and it never nudges threads where you wrote last.
## 9. Learn from what you actually sent
The DM has no checkbox to tick. The signal that you handled a thread
is LinkedIn itself.
- Take the log rows where `learned` is not true, skipping the control
rows.
- Read each thread and look for a message whose sender id is yours
and whose time is **after** the row's `delivered_at`.
- Nothing found: try again next pass. After **[7 days]** with no
reply, set `learned` to true with a status saying so, so a dead
thread is not rechecked forever.
- Found: write it to `actual_reply` and compare it with the draft.
Identical or nearly: nothing to learn. Different: note what changed
(length, opener, tone, what you kept, cut or added). Either way set
`learned` to true.
- **A style rule changes only when three or more deltas point the
same way.** Then update the rules in step 5, with the date and the
threads that established the pattern. One edit on one thread is
not a pattern.
## Output
Each pass: one DM with a block per waiting thread, or a single
"nothing waiting" line, plus voice notes that could not be read and
whether the 200-thread cap was hit. In the log table: one row per
delivered thread, the moved watermark, a dated run line, and, as you
reply, what you actually sent next to what was drafted.
Why run it with Tulina
A prompt helps one person. A process moves a team.
Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Reply to every LinkedIn conversation" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.
The whole team works on the same one
PersonalTeamOrganisation
A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.
Every edit is a version
v1v2v3
Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.
It runs without you
schedulewebhookon demand
A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.
Inside the same security perimeter
vaultrolesrun log
Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.
Questions about AI replies to LinkedIn messages
Also on LinkedIn
Other processes that run mainly on LinkedIn. The tools they share with this one are lit.
Run LinkedIn outreach at a safe pace
Small sending slots through the day, a daily budget that climbs one step only while the account stays healthy, and every send stopped at the first warning.
- Shares
- LinkedIn, Slack
Daily schedule in short slots7 steps →
Message new LinkedIn connections
Each new LinkedIn connection is checked for past conversations, researched on public sources and given a first message and a follow-up, sent once approved.
- Shares
Daily schedule on weekday mornings9 steps →