Skip to content
← Processes

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.

LinkedIn→INSEE Sirene→INPI→Slack
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. 1

    AI pages the inbox back to the last pass.

    LinkedIn

    LinkedIn

    Threads come back newest first, page by page, until a page falls behind the point the last pass reached.

  2. 2

    AI keeps threads where they wrote last.check

    LinkedIn

    LinkedIn

    A thread is kept when the last message came from the other person, judged on the sender rather than on the read status.

  3. 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.

  4. only when a lukewarm reply from someone who runs a company
  5. 4

    AI qualifies the sender's company first.

    INSEE Sirene

    INSEE 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.

    INPI

    INPI

    LinkedIn

    LinkedIn

  6. 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.

  7. 6

    AI delivers each draft in a direct message.

    Slack

    Slack

    You get the name, profile link, last message and draft for every waiting thread, or one line saying nothing is waiting.

  8. 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.

  9. 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.

  10. 9

    AI learns from what you actually sent.

    LinkedIn

    LinkedIn

    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

It can draft them, and this process stops there on purpose. Four times a day it finds the threads where the other person wrote last, drafts a reply in your style, and sends it to you in a Slack DM with the last message and the profile link. You copy, edit or ignore it, and answer yourself.

By comparing the sender of each thread's last message with your own account id. The message's own sender flag has been seen false on every thread of an account, and the unread count reads zero on a thread you opened on your phone and never answered, so neither one can be trusted to say who is waiting.

Yes, from what you actually send. Each pass rereads the threads it already delivered and compares the reply you sent with the draft it proposed. A style rule only changes once three or more of those differences point the same way, so one edit on one thread never rewrites how it drafts.

A deliverable rather than a calendar link. When someone says "why not", the company is qualified first from the registry and its company page, and the draft offers one concrete result tied to how that company makes money, with a date, ending on a question that takes three words to answer. Two variants come back, and you pick.

Other processes that run mainly on LinkedIn. The tools they share with this one are lit.

See Tulina in a 30-minute demo.

Book a demo