skip to content

Follow Up

Draft the follow-up in your voice, with a real next step inside.

What it does

You met someone, the meeting went well, and now the follow-up sits unwritten for a week. This skill drafts it for you: in your voice, referencing what you actually talked about, and always carrying something actionable. Sending the deck, making the intro, proposing a time. Never "would love to stay connected" filler.

It picks the right channel from what's on the person's record (email, LinkedIn, WhatsApp, Telegram, SMS) and respects each one's constraints, like LinkedIn's 300-character cap on connection notes. You get text to copy and paste plus a link to open the chat. The touchpoint is logged only after you confirm it went out, so your history reflects what actually happened.

Use it when

  • You met someone great yesterday and the window is closing
  • You promised to send something and want the message to carry it
  • You need a LinkedIn connection note that doesn't sound like a bot
  • You want every follow-up logged without doing the bookkeeping

Prompts to try

  • Follow up with Claudia from last night's dinner
  • Thank Rui for the meeting and send him our deck
  • Draft a LinkedIn connection note for the designer I met at the meetup
  • Message Tomas about picking a time for that coffee

Install

These skills talk to your noticed network, so you'll need a noticed account first. Request access and sign in, or they will have nothing to talk to.

  1. Add the noticed marketplace:
    /plugin marketplace add noticedso/skills
  2. Install the skills pack (every skill ships together):
    /plugin install noticed-skills@noticed-skills
  3. Run /skills to confirm the skills loaded.
View SKILL.md

follow-up

Draft a follow-up to one person the user recently met IRL. One person at a time. Resolve identity, channel, and angle before writing a word.

Person resolution is shared with add-person — same own → ask order. No web enrichment, no public scope.

flow

  1. Resolve the person. search_people own, multi-word names AND-joined. Strong match → use it. Multiple/no match → surface candidates, never default to new silently. On "new", get a linkedin before drafting so they can be added after the send is confirmed.

  2. Read recent context. get_person({ include: "dossier" }). If nothing logged in ~2 weeks and notes are thin, ask "what was the meeting about?" and wait.

  3. Pick the channel from what's on the record (linkedin_username, a stored email, a stored phone/handle). One usable → use it. Multiple → ask. Nothing stored → ask how they want to reach them. If linkedin, resolve the mode first (it sets the char budget).

  4. Suggest an angle, don't just ask. Read the context and propose the angle(s) that fit ("looks like the natural next step is sending the deck you mentioned — want that, or a quick thank-you?"). Fall back to an open "what's the angle?" only when there's no context. Wait.

  5. Draft:

    • In the user's voice — the agent knows how the user writes; match it, don't impose a house style.
    • Open with a specific callback, not a pleasantry. The first line names a concrete detail from the meeting — a problem they raised, something they said that stuck, a person/project they mentioned. That one detail earns the reply. Banned openers: "Great meeting you", "Great to connect", "Thanks for your time", "It was a pleasure", or any opener that would read the same to anyone else they met that day. If context is too thin to write a specific opener, go back to step 2 and ask what the meeting was about rather than drafting generic.
    • Short — readable in ~30 seconds. DMs under ~80 words; email body under ~150; LinkedIn connection note 300-char hard cap. It's a thread-opener, not a pitch.
    • Always include something actionable — ideally something the user offers to do for the recipient (send the deck, make an intro, share a doc, pick a time). Make it low-friction: one clear ask or offer the recipient can act on without having to figure out what's wanted. A follow-up with no next move is noise. Never generic "would love to stay connected" filler.
    • No em-dashes, no emojis, no AI-tropes.

channels

All channels are copy/paste. The skill produces text the user sends; it doesn't send anything or depend on a connected mail/DM tool.

  • email — produce a subject + body; show both to copy into whatever mail client they use. The subject is specific to the angle or a meeting detail (it drives the open), not generic "Following up" / "Great meeting you".
  • linkedin — two modes, resolve before drafting:
    • connection request note (not yet connected): 300-char hard cap, enforced before drafting; still carries a concrete next move, never empty "let's connect" filler. Show the char count.
    • DM (already connected): longer (~80 words), room for a fuller ask.
    • Pick: in-network/logged or "message/DM X" → DM; just-met/"connect with X" → connection note; unclear → ask one line. Provide the profile link; copy/paste, no pre-fill.
  • whatsapphttps://wa.me/<phone>?text=<urlencoded> (pre-fills).
  • telegramhttps://t.me/<username> (no pre-fill).
  • smssms:<phone>?body=<urlencoded> (mobile).

logging

Never log until the user confirms "sent it". Then:

  • Email → log_interaction(kind: "emailed", payload: { channel, angle, summary }).
  • DM → log_interaction(kind: "messaged", payload: { channel, angle, summary }); for LinkedIn note the mode in the summary so the timeline shows whether the user is now connected.

Brand-new contact: add_to_network fires with the first log_interaction after "sent it", not before. Then read back what was logged (and added).

No default_notes writes, no memory_save calls — interaction-only.

tool needs

  • noticed: search_people, get_person, add_to_network (only on a confirmed brand-new contact), log_interaction
  • No Gmail — email is copy/paste like the DMs.

explicitly NOT in scope

  • Cold outreach / first-touch; reconnects with dormant contacts; batch follow-ups; sending directly / delayed send (everything is copy/paste); calendar invites; scope: "public" searches; writing to default_notes (interaction-only).

your agent is only as good as its memory

These skills run on noticed, the relationship memory behind your agent. Request access and bring your network with you.

Request access