PromptsOpenClaw

Specific purposeDaily cron · Gmail + Calendar + SQLite

Personal CRM from mail and calendar

Use case

A year of email and meetings is a pile of names you cannot search. OpenClaw reads Gmail and Google Calendar, drops newsletters and cold pitches, and keeps a local profile for each person worth remembering. You ask in plain language who you know at a company, or who has gone quiet.

What to connect

Gmail and Google Calendar, read-only. A local SQLite file with a vector column. Optional: Box, if you want related files on a contact.

Setup

  1. Connect Gmail and Google Calendar with read-only scopes. Scanning is allowed. Drafts stay off until a later skill asks you to approve one.
  2. Create the SQLite file at [CRM DB PATH] and confirm a vector column exists for notes and relationship summaries.
  3. Set NOISE_SENDERS to domains that are always marketing or newsletters, and INTERNAL_DOMAINS to your own company.
  4. Set LOOKBACK to how far the first scan should go. One year is a solid start.
  5. Save the prompt as a skill named personal-crm and run the first scan by hand. Confirm real people land in the database and a newsletter sender does not.
  6. Schedule a daily CRM scan outside the hours when the nightly councils run.

Edit before you send: The database path, how far back to scan, noise-sender domains, and your company domains.

Prompt to paste into OpenClaw

Save this as a skill named personal-crm. Scan Gmail and Google Calendar for the last [365] days on the first run, then only what is new since the last run. Store contacts in [CRM DB PATH]. Gmail and Calendar are read-only. Do not send, delete, label, or create events. Who gets a profile: - A real person I exchanged mail with, or who attended a meeting with me. - Skip newsletters, receipts, automated mail, and cold pitches. Always skip [NOISE DOMAINS]. - Read the thread before you save someone. If the mail is noise, leave them out. A light public check of company and role is fine. Do not invent a title you could not find. Each profile: - Name, email, company, role, how we know each other, and a short interaction history with dates. - A relationship health score. Flag a relationship as stale when we have not interacted in [90] days and the last thread was a real conversation. - Follow-ups I can create, snooze, or mark done. - If two profiles are the same person, suggest a merge and wait for my yes before combining them. - When Box is connected, attach document names and links that clearly belong to that person. If Box is not connected, skip that part and say so once. I will ask questions in plain language, such as who I know at a company or who I have not talked to in a while. Answer from the database. Use the vector column for the fuzzy questions. If another skill asks about a person, answer from the same profiles. If a scan fails, tell me which source failed and keep the profiles you already have.

More OpenClaw prompts

  • Meeting action items with an approval queue

    Meetings end and the promises disappear. OpenClaw waits until a meeting is over, pulls the Fathom transcript, matches the room to your CRM, and sends you each action item to approve. Approved items become Todoist tasks. Things other people owe you stay on a waiting-on list, except people on your own team.

  • Urgent email, only when it can wait no longer

    You do not live in the inbox, including on weekends. OpenClaw checks mail on a timer, ignores senders you have already marked as noise, and pings a Telegram topic only when something needs you now. When you say an alert was wrong, the next check is stricter.

  • Knowledge base you fill from a Telegram topic

    Links you meant to remember are scattered across chats. You drop a URL into one Telegram topic. OpenClaw saves the article, the video transcript, the full post thread, or the PDF, then you ask later in plain language. A new save can point at something you already kept.

  • Nightly business council

    The numbers live in ten different tools, so the pattern stays invisible. Once a night, eight specialists each read only the slice that matches their job, in parallel, and a synthesizer turns that into a short numbered list. You reply with a number when you want the longer version, and you approve or reject so the next night fits you better.