Lists and CRM

Log your LinkedIn chats in your CRM with Unipile

What it does: Has Claude Code build a small script that reads your LinkedIn chats through Unipile, matches them to CRM leads and writes a note and next step for each after a dry run.

Use it when: Your sales talks happen in LinkedIn messages and your CRM has no record of them.

You get: A read-only script, a preview file of every note, and notes in your CRM after your yes.

This one runs in Unipile: paste it there.

The prompt
You are my developer, a senior engineer with 10 years of building small sales tools that keep a CRM in step with real conversations.

Goal: build a small script in Claude Code that reads my LinkedIn chats from the last 7 days through Unipile, matches each one to a lead in my CRM, and writes a short note and next step for each, so I have every LinkedIn talk in my CRM without copying anything by hand.
Context: I sell [what you sell] to [who you sell to]. Many of my real sales talks happen in LinkedIn messages. People who write to me want the reply I promised, because they asked for it. If the talks never reach my CRM, I lose track of who asked what, and they hear nothing.

First, check that you can open the Unipile API with my key. The key and my Unipile address (the DSN) live in a .env file in this project as UNIPILE_API_KEY and UNIPILE_DSN. Never print the key. Tell me which LinkedIn account is connected and how many chats from the last 7 days you found. If you can't reach it, stop and follow the steps at simpleai.community/connect/, or ask me to paste the chats instead.
Then check that you can reach my CRM's API with the key in the same .env file. Tell me how many leads you can read. If you can't, stop and follow the CRM steps at simpleai.community/connect/#crm.

Ask me these, then run. Skip any I already answered.
1. Which days count? (Default: the last 7 days.)
2. Which CRM field holds the LinkedIn profile link? (Default: read the lead fields and tell me which one you think it is. Wait for my yes before you use it.)

Do this:
1. Read the project first. Tell me in 3 lines what is already there, so you don't break or repeat anything.
2. Write the script to read only: list the chats from the last 7 days, and for each one the other person's name, profile link, the messages and dates.
3. Match each chat to a CRM lead by profile link first. Only if there is no link, match by full name and company, and mark it Name match. No match: put it on a New people list. Never make a new lead without my yes.
4. For each matched chat, write a note of 2 to 4 lines: what they said, what I said, any promise I made with its date, and who owes the next reply. Then a next step with a date. If I owe them a reply, put them at the top of an I owe a reply list.
5. Skip chats with no messages from them and chats that are only an invite. List them as Skipped with the count.
6. Run it as a dry run first. Write every planned note to a file called crm_notes_preview.csv and change nothing. Show me the file.
7. Only after my yes, add the notes to the CRM, one lead at a time. Log each one written, and stop on the first error.

Example note, match this tone: "Oct 22, LinkedIn: Sam asked if we work with clinics under 5 staff. I said yes and promised a price sheet by Friday. I owe the next reply. Next step: send the price sheet, Oct 24."

Give me: a 3 line read of the project, the script, the preview file, and a count line (chats found, matched, Name match, New people, Skipped). Each note under 60 words.

Before you show me, check:
- Matched plus New people plus Skipped equals the chats found.
- The script never sends a message, an invite or a reply. It only reads chats and writes notes after my yes.
- The key never shows in the code, the logs or the output, and .env is in .gitignore.

Rules:
- Ask me before you send, post, change or delete anything, and before any write to my CRM.
- Read only from Unipile. Never send LinkedIn messages or invites from this script.
- Never make up a name, number, date, price, link or promise. Use only the chats, my CRM and what I tell you.
- If someone asked me to stop, write no next step to contact them, and list them to mark do not contact after my yes.
- If something is missing, write [check: what is missing] in that spot and keep going.

Last, save these steps as a skill called 'LinkedIn Chats To CRM' so you do it this way each time I want my LinkedIn talks in my CRM.
To run it again, just say: "Run my LinkedIn Chats To CRM skill." Run it each Friday.

You needYour CRMUnipileClaude CodeTested on sample data

Connect first: your CRM and LinkedIn. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.

Built on Fanatical Prospecting's rule to own your database.

Copilot version

There is no separate Copilot version of this one yet. Paste the prompt above into Microsoft 365 Copilot Chat.

See a real example

Tested on sample data Sample data run (simulated tool).

Watch: no video for this one yet.

AuthorCorey Leon

Related prompts

+2Lists and CRMKeep customers

Keep client pages up to date so clients never have to ask

What it does: Reads today's client talks in Close and, after your yes, adds them to their Notion page, newest first.

Use it when: Clients keep asking where things stand.

You get: New rows and a fresh top line for the client page, added after your OK, with a count of rows added.

Open in
See the prompt
You are my client success lead, a senior account manager who has kept clients up to date for 10 years.

Goal: add today's real client talks to the client's Notion page, newest first, so I end with a page that shows where things stand and clients don't have to ask me. Read the client's goal from Close and show progress toward it in the top line, like 4 of 10 meetings booked. No goal in Close? Write [check: client goal].
Context: I run work for clients. They want to see what happened this week and what's next, because a client who has to ask feels left out.

First, check that you can open our Close account and the client's Smart View. Tell me how many leads are in it and how many had a real conversation today. If you can't open it, stop and follow the Close steps at simpleai.community/connect/claude/close/, or ask me to paste today's conversations instead.
Then check that you can open the client's Notion page. Tell me the title and the date of the newest row. If you can't open it, stop and follow the Notion steps at simpleai.community/connect/claude/notion/, or ask me to paste the page instead.

Ask me these, then run. Skip any I already answered.
1. Which client? (No default. If I don't say, stop and ask.)
2. Their Smart View in Close? (Default: the Smart View with the client's name in it.)
3. Their Notion page? (Default: the Notion page with the client's name in its title.)

Do this:
1. Find today's real conversations in Close, only for the leads in that Smart View. Skip calls with no talk, like voicemails and no answers.
2. Use only that client's conversations, not every lead in the Smart View. Check each lead belongs to this client before you use it.
3. Write each one as a row: date, person, company, what they said in one line, next step. If the next step is blank in Close, write [check: next step].
4. Newest at the top.
5. Write the line for the top of the page: where we are in the plan this week and what happens next.
6. Show me the rows and the top line first. Wait for my yes. Then add the rows to the page and update the top line.

Example of a row, match this: "Oct 29 | Sam Lee | Acme | Wants a demo for his team | Demo set, date [check: demo date]"

Give me the new rows and the top line, under 200 words. After you add them, tell me how many rows you added.

Before you show me, check:
- Every row comes from a real conversation in that client's Smart View today.
- Nothing on the page names or hints at my other clients.

Rules:
- Plain words.
- Never put anything about my other clients on this page.
- Add rows only. Never move or delete a page. Ask me before you add, send, post or change anything.
- Use only what is in my data and what I tell you. Never make up a name, number, date, price, link or promise.
- If something you need is missing, write [check: what is missing] in that spot and keep going.

Last, save these steps as a skill called 'Update Client Page' so you do it this way each time I update a client's page.
To run it again, just say: "Run my Update Client Page skill."

Connect first: your CRM. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.

Built on Never Lose a Customer Again's Accomplish phase: help the customer reach their goal.

You needCloseNotionAny AITested on sample data

AuthorCorey Leon

+3Lists and CRMKeep customers

Find at-risk clients before they renew

What it does: Reads your CRM and email to list clients with renewals in the next 90 days and flags the risky ones.

Use it when: You don't know who might leave before renewal.

You get: A sorted list of risky clients, why each is at risk, and one action for this week.

Open in
See the prompt
You are my account helper, a senior account manager who has kept clients through renewals for 15 years. Read our CRM (Close) and my email (Gmail or Outlook) yourself.

Goal: find the clients who might not renew in the next 90 days, so I can act on each one this week, while there is still time.
Context: I run a service business that lives on renewals. Clients renew when they got the result they hired us for, because that is why they pay. A quiet client is often a client who is about to leave.

First, check that you can open our Close account. Tell me how many clients with a renewal date you found. If you can't open it, stop and follow the Close steps at simpleai.community/connect/claude/close/, or ask me to paste my clients and renewal dates instead.
Then check that you can open my email. Tell me how many emails with these clients in the last 90 days you found. If you can't open it, stop and follow the email steps at simpleai.community/connect/#email, or ask me to paste them instead.

Ask me these, then run. Skip any I already answered.
1. Today's date? (Default: today's date. Say which date you used.)
2. Do my renewal dates live in a sheet, not Close? (Default: no, read them in Close. If yes, check you can read the sheet I give you, or ask me to paste it.)

Do this:
1. List every client with a renewal in the next 90 days, counted from today's date. If a client has no renewal date, list them under Check by hand.
2. For each one, find the result they hired us for, and whether they got it yet.
3. Flag a client as at risk if any of these are true:
- 21 or more full days have passed since their last message to us. Count the days from that message to today's date. If the count is less than 21, do not flag them for this rule. Quiet clients are the risky ones.
- They raised a problem we haven't closed. Flag any open issue, even a small one.
- They said they're unhappy, short on budget or looking at others.
- Our main contact went quiet or left, from what the emails say. A new contact or one who is handing off does not count as left.
- They haven't gotten the result they hired us for. "Not confirmed" is not the same as "not delivered." Only count it as not delivered if the data says so.
4. For each risky client, give one line on why, with a quote and the date, and one thing to do this week. Name the exact rule from step 3 that made them at risk. If rule 1 is the reason, give the day count since their last message.
5. Sort by renewal date, soonest first.

Give me a table: client, renewal date, rule, why (quote and date), source, one thing to do this week. Keep each "why" under 25 words. Then a Check by hand list.

Example of a row, match this: "Acme | Dec 1 | Rule 1 | Last message Oct 2, 27 days ago | email | Call Sam and ask how the leads are going"

Before you show me, check:
- Every quote and date comes from a real email or Close note you opened, and the source column says which.
- Every day count adds up from the date of their last message to today's date.

Rules:
- Only use what's in Close, my email and my list. Say where each fact came from.
- This is a list only. Ask me before you send, post, book or change anything.
- Never tell me to open a link or file from someone I don't know.
- Use only what is in my data and what I tell you. Never make up a name, number, date, price, link or promise.
- If something you need is missing, write [check: what is missing] in that spot and keep going.

Last, save these steps as a skill called 'Renewal Risk' so you do it this way each time I check renewals.
To run it again, just say: "Run my Renewal Risk skill."

Connect first: your email and your CRM. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.

Built on Never Lose a Customer Again's Accomplish phase: help the customer reach their goal.

You needCloseYour emailAny AITested on sample data

AuthorCorey Leon

+2Lists and CRMKeep customers

Write renewal emails before prices change

What it does: Finds customers in your CRM who renew soon, flags price jumps, and writes a short friendly email for each one.

Use it when: Renewals sneak up and you have no emails ready.

You get: A renewal table sorted by date with price jump flags and the math, one email per customer under 90 words, and a Check by hand list.

Open in
See the prompt
You are my account manager, a pro with 15 years of keeping customers through renewals and price changes.

Goal: write one short renewal email for each customer who renews soon, with price jumps flagged, so I end with drafts ready to send before any price changes land.
Context: I sell [what you sell, like service plans, memberships or yearly contracts]. Customers stay when a renewal feels fair and they hear about a price change from me first, because a surprise bill makes people leave.

First, check that you can open my CRM (Close or HubSpot). Tell me how many customers renew in the window from question 2. If you can't open it, stop and follow the CRM steps at simpleai.community/connect/#crm, or ask me to paste them (first name, plan, renewal date, old price, new price, notes) instead.

Ask me these, then run. Skip any I already answered.
1. What price jump should I flag? (Default: more than 10%.)
2. How far ahead? (Default: renewals in the next 60 days, including any sooner than 30.)

Do this:
1. Pull each customer who renews in that window: first name, plan, renewal date, old price, new price, any change, and notes on what they got from us this year. Leave out account numbers and full names. If a price or date is blank, put that customer under Check by hand.
2. Sort the list by renewal date, soonest first.
3. Flag anyone whose price went up more than the jump I set. Show the math: (new price minus old price) divided by old price.
4. For each person, write a short, friendly email in plain words, in this order:
   a. One line on why they signed up and what they got, from the CRM notes only. If there are none, write [check: what they got this year].
   b. When it renews, what it costs now, and if anything changed.
   c. If the price went up, say their worry out loud first, like "You may be wondering why the price went up." Then give the reason from my notes, or [check: reason for the change], and offer a short call to go over it.
5. Add one line on what to check in their file before I send it.
6. At the top, remind me to check the national Do Not Call list and our own do not call list before I call or text anyone instead of emailing.

Example of a price jump line, match this tone: "You may be wondering why the price went up. [reason from my notes]. Want 10 minutes Tuesday to go over it?"

Give me the do not call note, then a table sorted by renewal date (name, plan, renewal date, old price, new price, percent change, flag), then one email per person under 90 words, then the Check by hand list. Sign each email with the name in my signature, or [check: my name].

Before you show me, check:
- Every price, date and percent change matches my CRM, and the math is right.
- Every email is under 90 words. Count them.
- Every customer in the window is in the table or on the Check by hand list.

Rules:
- Drafts only. Wait for my yes before you send, call, text, book or change anything.
- Use only the facts in my CRM and what I tell you. Never make up a name, number, date, price, link, reason or promise.
- If something you need is missing, write [check: what is missing] in that spot and keep going.

Last, save these steps as a skill called 'Renewal Emails' so you do it this way each time I ask.
To run it again, just say: "Run my Renewal Emails skill."

Connect first: your CRM. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.

Built on Never Split the Difference's rule to say their worries out loud first.

You needYour CRMAny AITested on sample data

AuthorCorey Leon

Lists and CRMKeep customers

Clean your lead sheet and add a next step for each lead

What it does: Gemini in Google Sheets finds repeats and blanks, fixes the format, and adds a next step and a date for every lead.

Use it when: Your lead sheet is messy and you don't know who to call next.

You get: A clean table to add as a new tab, sorted by next step date, plus lists of repeats and rows to check by hand.

Open in
See the prompt
You are my sales assistant, a senior sales manager with 15 years of keeping lead lists clean so reps call the right person next.

Goal: clean my lead sheet in Google Sheets and add a Next step column, so I have one tidy list where every lead has a clear next move and a date.
Context: I sell [what you sell]. My lead sheet is my memory of every buyer. When it has repeats, blanks and old rows, I call the wrong people and forget the right ones, so a clean list I own is money.

First, check that you can open my lead sheet. In Google Sheets, open the Gemini side panel. Tell me the tab name, how many rows, and the column names you found. If you can't open it, stop and follow the file steps at simpleai.community/connect/#files, or ask me to paste the rows instead.

Ask me these, then run. Skip any I already answered.
1. Which tab is the lead list? (Default: the first tab.)
2. How long with no touch means follow up? (Default: 30 days.)

Do this:
1. Build a new table for a tab called Clean. Never change or delete my original rows.
2. Find repeats: the same email, the same phone, or the same name plus company. Keep the row with the newest date. List the others under Repeats with their row numbers.
3. Fix the format only: names in normal case, phones in one format, dates in one format, extra spaces gone. Don't change what a cell means.
4. Flag blanks: a lead with no email and no phone goes under Check by hand.
5. Add a Next step column. Use this order:
- Asked for a quote or a call, and I haven't answered: "Reply today".
- Talked in the last 30 days: the next step from my notes, with a day.
- No touch in 30 days or more: "Follow up".
- Said no or not interested: "No call", with no date.
- Said not now: "Check again in 90 days", or the month they named if the notes give one.
- Nothing in the notes: [check: next step].
6. Add a Next step date column next to it. Use a date from my notes, today for Reply today and Follow up, or 90 days from the last touch for Check again. No date for No call. Never guess one.
7. Sort the Clean table by Next step date, soonest first.

Give me: the Clean table, a list of Repeats, a Check by hand list, and 3 lines that count rows in, repeats, and rows in the Clean table.

Example of a Next step, match this: "Send the quote for 2 trucks. Thu Oct 30."

Before you show me, check:
- Rows in the Clean table plus repeats equals the rows in my original tab.
- Every Next step date comes from my notes or the rules in step 6.

Rules:
- Draft only. Give me the Clean table to add as a new tab. Ask me before you change, delete or send anything.
- Never make up a name, number, date, price or promise. Use only what is in my sheet and what I tell you.
- If something is missing, write [check: what is missing] and keep going.

Last, save these steps as a Gem called 'Clean My Lead Sheet' so you do it this way each time my list gets messy. In Claude or ChatGPT, save them as a skill called 'Clean My Lead Sheet'.
To run it again, just say: "Run my Clean My Lead Sheet Gem."

Connect first: your files. The steps for each AI are on one page. Then the prompt reads it for you. It ends by saving itself as a skill.

Built on Fanatical Prospecting's rule to own your database.

You needYour filesGeminiTested on sample data

AuthorCorey Leon

Back to the guide

Don't see your work here?

Tell me what you do every day, and I'll make guides and prompts for it.

Want this built for you?