Faire de l'outreach LinkedIn à un rythme sûr
De petits créneaux d'envoi dans la journée, un budget quotidien qui monte d'un cran seulement si le compte va bien, et tout envoi stoppé au premier signal.
- Démarre
- Planification quotidienne en petits créneaux
- Étapes
- 7
- Contrôles et conditions
- 1
- Une personne décide
- Jamais, tourne seul
Déclencheur · Planifié
Planification quotidienne en petits créneaux
Plusieurs petites exécutions réparties sur chaque jour ouvré se partagent le budget du jour, pour que rien ne parte en une rafale.
Claude exécute la suite en autonomie
- 1
Vérifier le compte avant tout envoicontrôle
LinkedInLinkedIn
La session doit répondre active, et rien n'est écrit après une pause, un checkpoint ou un blocage plus tôt dans la journée.
- 2
Fixer le budget du jour selon la santé du compte
Une fois par jour le niveau descend au moindre avertissement, monte d'un cran seulement quand chaque test de santé passe, et tout s'arrête sur une restriction.
- 3
Enregistrer les réponses et les acceptations
LinkedInLinkedIn
Toute personne qui a répondu sur l'un ou l'autre canal est marquée comme telle et mise en pause dans la séquence email, et les nouvelles connexions sont datées.
LemlistLemlist
- 4
Envoyer les messages dus
LinkedInLinkedIn
Les relances arrivées à échéance partent d'abord, puis les premiers messages aux personnes qui ont accepté, chacun relu juste avant de partir.
- 5
Inviter après une relecture du profil
LinkedInLinkedIn
Chaque profil en file est relu d'abord, si bien qu'une personne partie est écartée, une connexion déjà faite saute l'invitation, et une invitation en attente n'est jamais envoyée deux fois.
- 6
Retirer les invitations en attente trop anciennes
LinkedInLinkedIn
Les invitations restées en attente des semaines sont retirées quelques-unes à la fois, ce qui garde le stock assez bas pour que le budget puisse monter.
- 7
Publier le récap hebdomadaire
SlackSlack
Une fois par semaine un message donne les invitations, l'acceptation, les messages, les réponses nominatives, le niveau actuel et le stock restant.
La prospection LinkedIn échoue en général de la même façon. Quelqu'un importe une liste dans un outil, le règle sur cinquante invitations par jour dès le premier matin, et deux semaines plus tard le compte demande un code de vérification. Ou l'inverse : l'équipe, échaudée une fois, envoie à la main quand elle y pense, les invitations en attente s'empilent par centaines, et personne ne sait si le compte pourrait en supporter davantage. Aucune des deux versions ne sait comment va réellement le compte, et aucune ne change de rythme quand la réponse change.
Les signaux sont tous là. Le compte dit si sa session est active, les invitations envoyées disent combien ont été acceptées, la messagerie dit qui a répondu, et la liste des invitations en attente dit ce qui reste suspendu. Un rythme fixé à partir de ces signaux, revu chaque matin et consigné par écrit, fait la jonction, et c'est un travail qu'un agent peut faire par petits créneaux toute la journée sans s'en lasser.
What you get
Les invitations et les messages partent de votre propre compte LinkedIn par petits créneaux, sous un budget qui ne monte que si le compte va bien, une réponse sur l'un ou l'autre canal arrête la séquence, les invitations en attente trop anciennes sont retirées, et un récap hebdomadaire fait le point.
Ce que chaque créneau lit avant d'envoyer
Chaque créneau s'ouvre sur le compte lui-même. La session LinkedIn doit répondre active, et une ligne de pilotage dit si l'envoi est actif, en attente ou en pause, à quel niveau, depuis quand et pourquoi. Une pause, une session morte ou un blocage plus tôt dans la journée, et le créneau n'écrit rien du tout.
Il lit ensuite ce qui s'est passé depuis le créneau précédent : les réponses dans la messagerie, jugées sur l'expéditeur du dernier message plutôt que sur l'indicateur du message lui-même, les réponses aux emails des mêmes personnes dans lemlist, et les connexions acceptées. Une réponse sur l'un ou l'autre canal marque la personne comme ayant répondu et met son lead email en pause, pour que personne ne reçoive une relance après avoir répondu. C'est seulement ensuite qu'il envoie : d'abord les relances dues, puis les premiers messages, puis les invitations, chacun dans la part du jour qui revient au créneau. Une fois par semaine, le résultat part à l'équipe dans Slack.
Ce qui rend le rythme d'outreach LinkedIn fiable
Le budget bouge sur des preuves, un cran à la fois. Une échelle comme 5, 8, 12, 15 et 20 invitations par jour ne se gravit qu'après cinq jours ouvrés au niveau actuel, une semaine sans exécution bloquée, un taux d'acceptation qui tient sur des invitations assez anciennes pour avoir reçu une réponse, un stock d'invitations en attente assez bas pour le niveau suivant, et assez de personnes en file pour justifier la vitesse. Un seul avertissement de limite le fait redescendre d'un niveau et l'y maintient une semaine. Un checkpoint ou une restriction met tout en pause jusqu'à ce qu'une personne relance le compte, et l'exécution ne lève jamais une pause d'elle-même.
Chaque invitation est précédée d'une nouvelle lecture du profil. L'identifiant renvoyé doit être celui demandé, car un écart signifie que LinkedIn redirige vers quelqu'un d'autre. Une personne qui a quitté l'entreprise est écartée et son lead email mis en pause. Une personne déjà connectée passe directement au message, et une invitation déjà en attente n'est jamais envoyée une seconde fois. Avant la première invitation du créneau, la liste des invitations envoyées par le compte est comptée pour la journée, ce qui repère tout autre outil ou toute autre personne qui enverrait depuis le même siège.
Le stock d'invitations en attente se vide aussi méthodiquement que la file se remplit. Vos propres invitations sans réponse depuis environ trois semaines sont retirées quelques-unes par créneau, et une fois par semaine les invitations plus anciennes en attente sur le compte sont listées et traitées de la plus ancienne à la plus récente. Deux écritures LinkedIn ne s'enchaînent jamais ni ne tournent en parallèle, une écriture qui échoue n'est jamais retentée dans le même créneau, et un créneau manqué n'est jamais rattrapé.
Un récap que l'équipe lit en dix secondes
Une fois par semaine, après le dernier créneau, un message arrive dans le canal sales : les invitations, les acceptations et le taux d'acceptation, les messages et les réponses, le niveau actuel et tout changement avec sa raison, les invitations en attente retirées et restantes, et les réponses de la semaine par nom et par canal. Sous dix données, un taux affiche « trop tôt » plutôt qu'un pourcentage, et un chiffre qui n'a pas pu être calculé affiche « n/a ». Le récap est construit à partir des horodatages que chaque créneau écrit, et c'est pour cela que chaque créneau les écrit.
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.
# Run LinkedIn outreach at a safe pace
You have access to your own LinkedIn session, your cold email
sequencer, a team messaging tool, and three tables you can read and
write. Run this **[several times each weekday, for example five slots
spread two hours apart]** for **[the outreach queue of people you
want to reach on LinkedIn]**.
## 1. Check the account before any send
### The tables this run keeps
- **The governor**: one row holding `status` (active, hold or
paused), `level`, `invites_per_day`, `messages_per_day`,
`level_since`, `hold_until`, `last_eval`, `last_reason`, and a
`history` field that gets one dated line per change and is never
rewritten.
- **The outreach queue**: one row per person, keyed on the
normalized LinkedIn URL, with the person's provider id once known,
a connection note (200 characters at most), a first message and a
follow-up, written in advance and **sent verbatim, never edited by
the run**. Its LinkedIn stage moves queued → invited → connected →
first message sent → follow-up sent; any of them → replied; invited
→ withdrawn; or skipped. Each move stamps its own timestamp. When
the person is also in an email sequence, the row carries that
lead's id and campaign.
- **The stale invitation backlog**: pending invitations older than
**[30 days]** waiting to be withdrawn, with a status of to
withdraw, withdrawn, gone or error.
**This is the only thing allowed to send from the account
automatically.** Any other LinkedIn campaign becomes a new set of
rows in the queue, under the same budget, never a second sender on
the same seat.
Every slot starts here, and protecting the account comes before
volume. When in doubt, do less and say why in the report.
- Read the governor. `status = paused` means no LinkedIn write at
all in this run: stop and report that a person has to set it back
to active. `status = hold` runs normally at the current level; hold
only blocks promotion.
- Check the LinkedIn session's status. Anything other than alive:
set the governor to paused with the reason and the date, append a
history line, and stop.
- If an earlier slot today stopped on a block, this slot writes
nothing to LinkedIn.
- Weekends and public holidays: do nothing.
## 2. Set the day's budget from account health
Once a day, in the first slot, before any send, review the level and
stamp `last_eval` with today's date. The ladder is **[your levels,
for example 5, 8, 12, 15 and 20 invitations a day, with messages at
the same figures]**. Never skip a level and never go above the top
one.
- **Demote** one level (never below the first) when, since the last
review, a run stopped on a limit-type error (429, "limit", "too
many", "weekly"), or when acceptance on invitations sent **[7 to
21 days]** ago fell under **[10%]** with at least **[20]** of them.
Set `level_since` to today, set `status = hold` with `hold_until`
**[7 days]** out, and append the reason to the history.
- **Pause** everything when any run reported a checkpoint, a
captcha, a verification request, a restriction or a session that is
no longer alive. All writes stop until a person resumes them. The
run never sets `status` from paused back to active itself.
- **Promote** one level only when every test passes: at least
**[5]** weekdays at the current level and any hold has expired; no
blocked run in the last 7 days; acceptance on invitations sent 7 to
21 days ago of at least **[20%]** when there are 10 or more of them
(with fewer, skip this test); a stale backlog small enough for the
level you are moving to (**[the smaller the backlog has to be, the
higher the level]**); and at least twice the new daily cap still
queued, since there is no reason to go faster with nothing to send.
- Otherwise leave the level alone and write the test that failed into
`last_reason`.
Each slot then works within its share of the day: invitations and
messages each capped at the daily figure divided by the number of
slots, rounded up, withdrawals at **[6]** per slot, profile lookups
at twice the slot's invitation cap. The daily caps are counted from
the queue's own timestamps for today.
## 3. Record replies and acceptances
Reads only, plus one email-side pause.
- **Email replies.** For each email campaign the queue's people are
in, list the leads that replied (also those marked interested or
not interested). Match them to queue rows and mark them replied
with the time, unless they already are.
- **LinkedIn replies.** Read the first page of the inbox. For each
row that is invited, connected or mid-sequence, find its thread by
the stored chat id or the attendee's provider id. If the last
message's sender id is not your own account's id, the person
replied: mark the row replied with that message's time, store the
chat id, and **pause that person's lead in the email sequence**.
Never trust the message's "is sender" flag; it has been seen false
on every thread of an account, including the account's own.
- **Acceptances.** Read the first page of your connections, newest
first. A connection matching an invited row, on provider id or on
the slug of its LinkedIn URL, moves to connected with the
connection's own date.
- Add a dated note to each row saying which channel the reply came
from.
## 4. Send the due messages
Up to the slot's message cap, within the day's cap.
1. Follow-ups first: rows whose first message went out at least
**[6 days]** ago get the follow-up, in the existing thread when
there is one, otherwise to the person's provider id.
2. Then first messages: connected rows, oldest connection first.
Store the chat id that comes back.
Re-read each row just before sending it. A row that became replied
or excluded since the slot started is skipped.
## 5. Invite after a fresh profile check
Before the first invitation of the slot, read the first page of
invitations the account has sent and count the ones created today.
That count plus this slot's planned invitations must stay within the
daily cap; lower this slot's number if not. This is what catches any
other sender on the account.
Take queued rows in **[your priority order, for example people with
no email address first, then by fit score with the freshest leads
ahead of the older backlog]**. For each:
1. Read the profile by its public identifier. The identifier that
comes back must be the one you asked for: a mismatch is a redirect
onto someone else. Mismatch or not found → skipped, "profile not
resolved".
2. Clearly left the company → skipped and excluded, with the reason
and the date, and their email lead paused.
3. Already a first-degree connection → connected, nothing to send.
An invitation already pending → invited, nothing to send.
4. Otherwise send the invitation with the stored note, and stamp the
row invited with the provider id, the time and the invitation id
when one comes back.
## 6. Withdraw stale pending invitations
At most the slot's withdrawal cap.
1. Your own rows first: invited more than **[21 days]** ago with an
invitation id → withdraw it and mark the row withdrawn. "Not
found" means it was answered: check the profile once, connected if
first degree, otherwise skipped as declined.
2. Then the backlog, oldest first: withdraw, mark withdrawn with the
time; already gone → gone; any other error → error with a note,
and stop this step for the slot.
3. Once a week, in the first slot, refill the backlog: page through
the account's sent invitations with the returned cursor, at most
**[8 pages]**, stopping at the first page whose old invitations are
all already listed, and add each invitation older than [30 days]
that is not there yet, keyed on its invitation id.
A long tail of pending invitations is one of the things that holds an
account back, which is why the promotion test in step 2 reads the
backlog's size.
### Pacing and stop rules, for every step
- Never two LinkedIn writes back to back: put a read or a table write
between any two sends, invitations or withdrawals. Never send in
parallel calls.
- Any error mentioning 429, "limit", "too many" or "weekly": stop
every LinkedIn write and report the run as blocked, quoting it. The
next daily review demotes.
- Any error mentioning a checkpoint, a captcha, verification, a
restriction or a dead session: stop, set the governor to paused
with the reason, append the history, report blocked.
- An invitation refused because of its note is never resent without
the note: stop and report it.
- Never retry a failed LinkedIn write in the same slot. Never catch
up a missed slot or a missed day.
## 7. Post the weekly recap
Once a week, after the last slot of **[the last working day]**, read
the tables and the week's runs and post **one** message to **[your
team's sales channel]**. Read-only everywhere else.
- Count with aggregates, never by pulling every row: invitations
this week and to date; acceptances this week and to date;
acceptance rate on invitations sent at least 7 days ago ("too
early" under 10 of them); messages this week (first messages plus
follow-ups); replies this week and to date, and the reply rate on
people who received a first message ("too early" under 10); people
still queued, and the weeks of work that leaves at the current daily
cap; stale invitations withdrawn this week and left.
- Replies this week by name, company and channel, at most **[8]**, then
"+N more".
- The level and its daily caps, with any change this week from the
governor's history and its reason.
- Health: green when active with no blocked run this week, amber on
hold or after a limit block, red when paused, with one line saying
why when it is not green.
- Numbers in bold, no commentary, no advice, under **[900]** characters.
A metric that could not be computed shows "n/a"; never estimate
one. If the post is refused, report it; never post twice.
## Never
Send anything that is not stored in the queue, edit the stored copy,
contact a row that replied, was skipped, withdrawn or excluded, start
or resume anything in the email sequencer (pausing a lead on a reply
is its only write there), exceed the governor's caps or top level, or
lift a pause.
## Output
Report, per slot: the governor's level and caps and any change with
its reason, invitations sent (who), messages sent (who, first or
follow-up), acceptances, replies by channel, withdrawals (yours and
backlog), the account's invitations today, skips with their reasons,
the queue's stage counts and the backlog left. Only actions the tools
confirmed.
Pourquoi le faire tourner avec Tulina
Un prompt aide une personne. Un processus fait avancer une équipe.
Collé dans une conversation, le prompt ci-dessus marche une fois, pour celui qui l'a collé. Dans Tulina, « Faire de l'outreach LinkedIn à un rythme sûr » devient un processus que l'équipe partage, qui garde son historique, qui tourne seul, et qui reste dans le même périmètre de sécurité que les outils qu'il appelle.
Toute l'équipe travaille sur le même
PersonnelÉquipeOrganisation
Un processus se range à l'endroit qui lui correspond : à vous, à votre équipe ou à toute l'organisation. Celui qui l'exécute peut l'améliorer, et tout le monde repart de la meilleure version au lieu de réexpliquer le travail à chaque fois.
Chaque modification est une version
v1v2v3
Chaque changement crée une nouvelle version et garde la précédente ; une mauvaise modification se défait en restaurant une version antérieure. Chaque exécution enregistre la version qu'elle a suivie, et ce qu'elle a appris revient dans le processus.
Il tourne sans vous
planifiéwebhookà la demande
Un agent hébergé exécute le processus sur l'infrastructure de Tulina, à heure fixe ou quand un événement arrive, et continue quand vous fermez la conversation. Rien à héberger. Chaque exécution est suivie jusqu'à son résultat.
Dans le même périmètre de sécurité
coffrerôlesjournal
Les identifiants restent dans le coffre, jamais dans le prompt. Les rôles décident qui peut lancer quoi, chaque appel est journalisé, et une étape qu'une personne doit valider attend cette personne.
Questions sur l'automatisation sûre de la prospection LinkedIn
Aussi sur LinkedIn
D'autres processus qui tournent surtout sur LinkedIn. Les outils partagés avec celui-ci sont allumés.
Répondre à chaque conversation LinkedIn
Quatre fois par jour, les fils LinkedIn où l'autre personne a écrit en dernier vous reviennent dans Slack avec une réponse rédigée dans votre style.
- Partage
- LinkedIn, Slack
Planification quotidienne, quatre passages9 étapes →
Écrire aux nouvelles connexions LinkedIn
Chaque nouvelle connexion LinkedIn est vérifiée pour un échange passé, étudiée sur sources publiques, puis reçoit un message et une relance après accord.
- Partage
Planification quotidienne, les matins de semaine9 étapes →