Use cases/Knowledge & Research

Personal CRM

Auto-track every contact you meet — from email, calendar, and chat — with natural-language queries and pre-meeting briefings.

Knowledge & Researchmedium~45m setup
Tools
gmailgoogle_calendarmemorymemory_searchexec
Plugins
personal-crm-db
Channels
telegramdesktop
Uses
cron

You meet someone. Two months later they email you and you've forgotten where you met, what they do, and what you talked about. A personal CRM fixes this without the discipline of manually entering everyone after every meeting — Flowly watches your email and calendar and keeps the record automatically.

What it does

  • Daily scan of email + calendar for new contacts and interactions
  • SQLite-backed contacts table with names, companies, last contact, notes
  • Natural-language queries from any channel: "What do I know about Mehmet?"
  • Pre-meeting briefings: morning of any meeting with external attendees, you get who they are + your last interaction summary
  • Automatic interaction logging — every email + calendar event records who, when, context

What you'll need

  • Gmail + Google Calendar integrations
  • A personal-crm-db plugin (built once via plugin-creator)
  • Memory for unstructured notes
  • Cron for daily sync + morning briefs

Setup

1. Build the CRM plugin

Ask the agent to use plugin-creator:

Send to Flowly
Create a plugin called "personal-crm-db" backed by SQLite at ~/.flowly/personal-crm/contacts.db. Schema: contacts(id, name, email, company, first_seen, last_contact, interaction_count, notes) interactions(id, contact_id, ts, channel, context) Tools to register: - crm_upsert_contact(name, email, company, notes) -> id - crm_log_interaction(contact_id, channel, context) - crm_search(query) -> top 5 matching contacts with last interaction - crm_get(id) -> full contact + last 10 interactions - crm_due_followup(days_since=14) -> contacts not heard from in N days Slash command: /crm <subcommand> for status, search, recent

Restart, enable, verify with flowly plugins list.

2. Daily sync cron

Send to Flowly
Set up a cron job "crm-sync" that runs daily at 6 AM: For the last 24 hours: 1. Read Gmail. For each new conversation thread: - Extract sender's name, email, signature/company - Call crm_upsert_contact + crm_log_interaction(channel="email", context=<subject + 1-line summary>) 2. Read Google Calendar. For each event with external attendees: - For each attendee, crm_upsert_contact + crm_log_interaction(channel="meeting", context=<event title>) Skip newsletters, automated emails (no-reply, notifications, alerts), and bots.

3. Pre-meeting briefing cron

Send to Flowly
Set up a cron job "meeting-prep" that runs daily at 7 AM: Read today's calendar. For each meeting with external attendees: - For each external attendee, call crm_search(<their email>) - If found, build a short briefing: company, last interaction, key topics - If not found, do a quick web search for their name + company Send the day's briefings to my Telegram as a single message, sorted by meeting time.

4. On-demand queries

Already work via natural language:

"What do I know about ayse@partnerco.com?" "Who do I owe a follow-up to that I haven't talked to in 3 weeks?"

The agent calls crm_search and crm_due_followup, returns clean output.

Tips

  • Hand-curate the first 50 contacts. Auto-extraction is 80% accurate — it gets companies wrong from forwarded threads. Spend an hour after week one fixing the worst ones.
  • Use notes for the human stuff. The CRM tools track facts; add free-form notes for "they hate Mondays" or "their kid is named X." The agent will remember it forever.
  • Privacy: this is private data. Don't sync the CRM DB to cloud storage casually. If you must back up, encrypt it.
  • Don't merge contacts automatically. Two emails for the same person stay as two contacts unless you confirm — auto-merging is how you accidentally lose context.