How to use icantcrm
Everything runs through Gmail. You get emails every morning; you reply to approve, edit, or give feedback. You give commands by emailing yourself.
1. Your daily flow
icantcrm runs automatically in the background. Each morning you'll find a small set of Gmail drafts labeled crm, ready to review:
- Outreach drafts — personalized follow-up emails written in your voice, one per contact who's due for a touchpoint. Open, tweak if needed, and send.
- Admin review — a single email summarizing every contact that needs attention: suggested status changes, next actions, and AI reasoning. You approve or reject each suggestion by editing a table and sending it back to yourself.
Outside of reviewing those drafts, you can interact with the CRM by emailing yourself commands (see Email commands) or logging calls (see Logging calls).
2. The admin review email
Every morning at 5 am the CRM builds an admin-review draft addressed to you. Each contact that has been flagged for attention gets a table with editable fields.
Reviewing a contact
Subject: [crm] Daily review - Revise and send to approve. Each contact block has four columns: Field, Before, After (the AI's suggestion — editable, yellow), and Why (AI reasoning — read-only). To review:
- Edit the After cell to change a suggested value.
- Change Approve? from
yestonoto skip a contact. - Add a Refinement — a free-text note for that contact — to guide the AI's next suggestion.
- Sending the email approves all contacts not explicitly set to
no. Deleting the email rejects all. - To make changes after sending: start a reply to the sent email, edit the previous entries, and send.
Who gets reviewed?
A contact appears in the daily review if they meet any of the following and are not archived:
- Overdue action — a next-action date is set and is in the past.
- Stale — no contact logged for longer than the threshold for their status (configurable per status in Settings).
- Missing type — the contact_type field is blank.
- Vertical trigger — a pack-specific rule flags them (e.g. tutoring clients with too few hours remaining for another session).
Up to 20 contacts per draft (configurable: admin_max_contacts), in priority order: vertical trigger → overdue → stale → missing type. Contacts already in another open draft are skipped.
After the admin review draft is created, the CRM automatically generates a backlog review draft for the remaining contacts — see below.
Teaching the AI inline
If you write the word rule anywhere in a Refinement cell, the rest of the text is automatically promoted to a standing rule (see Rules). For example: "rule: never suggest dormant for school contacts".
2b. Backlog contact review
Subject: [crm] Refresh outdated contacts - Revise and send to approve. Generated automatically right after the daily admin review, or on demand via CRM menu → Refresh outdated contacts.
The format and approval flow are identical to the daily review — edit yellow cells, send to approve all not explicitly rejected, delete to reject all.
Who gets reviewed?
The backlog review draws from the same eligibility pool as the daily review (overdue, stale, missing type, vertical triggers) but covers everyone the daily review didn't fit. Any contact already in an open draft — including the daily review just created — is excluded, so there is no overlap between the two emails.
The daily review additionally excludes contacts with no contact in over 90 days — those are handled exclusively here, since they need more context before you act.
Priority order: missing type → vertical trigger → overdue → stale. Processed in batches of 30 contacts. If contacts remain after a batch, a footer row appears — set it to Yes to generate the next batch (new AI call).
Contacts whose AI analysis was cut short get an "Add to next AI run?" row (default Yes). Sending with Yes queues them for re-analysis on the next run.
3. Logging calls
Email yourself with a subject line containing the word call and the contact's name, email, or ID. No command prefix is required.
The body of the email becomes the call note, stored in the Activity log and used by the AI in the next analysis.
Subject formats
| Subject | Matches contact by |
|---|---|
call with Jane Smith | Full name |
call follow-up jane@example.com | Email address |
call notes - 642bb79e9e34453d9948a9b7 | Contact ID (shown in admin emails) |
[crm] call Jane Smith | Full name (prefix is stripped) |
If the name matches more than one active contact, you'll receive a disambiguation draft to pick the right one.
4. Email commands
Send yourself an email with one of the subject lines below. You can use crm or [crm] as the prefix — both work, and capitalization doesn't matter.
| Subject line | What it does |
|---|---|
crm action |
Sends this command reference to your drafts. |
crm learn my voice |
Makes an AI call. Re-analyzes your recent sent mail and refreshes the writing-voice profile used to generate drafts. |
crm refresh <name, email, or id> |
Makes an AI call. Forces an immediate update (communication summary + next action) for one contact. Use their name, email address, or 24-character ID from an admin email. |
crm suggest contacts |
Scans your last year of email for people you've had genuine back-and-forth with. Creates a pre-filled contact draft for you to review and prune before importing. |
crm add rule <text> |
Adds a standing rule to the Rules tab. The rule is injected into every AI prompt going forward. Example: crm add rule Never suggest dormant for school contacts |
crm signature |
Sends a blank draft. Delete the contents, paste your email signature, and send it back to yourself — it will be appended to future outreach drafts. |
crm todo <text> |
Saves a todo item. A reminder draft appears in your Drafts on the due date (default: tomorrow). Send that draft to yourself to mark it done. You can prefix with a date or day shorthand: crm todo friday Call Jane or crm todo 06/15 Follow up on proposal. |
crm todo list |
Creates a draft showing all pending todos (with due dates) and recently completed ones. |
crm next actions |
Generate a draft showing all contacts ordered by status (new → archived), with editable columns for next action, next action date, and status. Send it back to yourself to apply changes. |
crm compare models |
Makes AI calls. Run one contact through up to three Claude models and compare their communication analysis, generated draft, and voice profile side by side. Read-only — nothing is saved. Model shorthands like opus or sonnet 4.6 are accepted; omitting the version uses the latest. |
crm settings |
Opens the settings editor: a draft listing every configurable setting with its current value. Edit the yellow cells and send it back to save. |
crm use my key |
Sends a step-by-step checklist for switching to your own Claude API key (added via Script Properties — never typed into an email). Send the checklist back when done to test the key. |
crm onboarding |
Re-generates the initial setup form (contact list, voice, identity). |
crm onboarding 2 |
Re-generates the phase-2 setup email: pipeline stages, contact types, channels, and preferences. |
5. Teaching the AI with rules
Rules are standing instructions that shape every AI suggestion. They live in the Rules tab of your Sheet and are injected into every AI prompt automatically.
Adding a rule
Three ways to add a rule:
- Email command: Send yourself
crm add rule <text>. - Inline shortcut: Write the word rule anywhere in a Why or Refinement cell in the admin review email. The text after "rule" is promoted automatically — e.g. "rule: completed customers are good referral candidates".
- Directly in the Sheet: Add a row to the Rules tab.
AI-proposed rules
When the AI notices a recurring pattern in your corrections — the same type of edit made three or more times — it surfaces a proposed rule for your approval. You'll receive a Proposed rules draft listing each suggestion. Reply with y or n next to each one.
Rules tab columns
| Column | Notes |
|---|---|
| Rule | Plain-English instruction for the AI. |
| Scope | all, analysis, drafts, or triage. Comma-separate to apply to multiple scopes. (triage applies to the backlog review AI analysis.) |
| Type Filter | Optional. Limit to a contact type (e.g. parent, school). Blank = all types. |
| Status Filter | Optional. Limit to a contact status (e.g. client-active). Blank = all statuses. |
| Enabled | TRUE or FALSE. Toggle rules on/off without deleting them. |
| Source | operator (manual), inline (why/refinement shortcut), or distilled (AI-proposed). |
6. Settings
Send yourself crm settings to open the settings editor. Edit the yellow cells and send it back to save. You can also edit the Config tab in your Sheet directly under the ## SETTINGS section.
| Setting | What it does | Default |
|---|---|---|
operator_name | Your first name — used in sign-offs and AI prompts. | — |
business_name | Your business name (feeds AI context). | — |
business_description | One-line description of your business. | — |
timezone | IANA timezone for dates and triggers. | America/Chicago |
admin_max_contacts | Max contacts in each daily admin-review draft. | 20 |
max_suggested_contacts | Max contacts returned by "crm suggest contacts". | 60 |
use_crm_label | Apply a "crm" Gmail label to all CRM-created drafts. | true |
error_alerts | Email you when a background job fails (rate-limited to once per error per 6h). | true |
usage_alerts | Email you when daily AI token usage is abnormally high. | true |
usage_alert_multiple | Alert when today's tokens exceed this multiple of your trailing daily average. | 3 |
7. Sheets menu
Open your icantcrm Sheet and look for the icantcrm menu in the top toolbar. These run the same functions as the background triggers, useful for testing or on-demand runs.
| Menu item | What it does |
|---|---|
| Sync inbox now | Scans your inbox immediately for new emails, call notes, and commands (normally runs every minute automatically). |
| Suggest new contacts | Same as the crm suggest contacts command. |
| Run AI on pending | Runs AI analysis immediately on all contacts flagged for it (normally runs at 3 am). |
| Build admin review | Generates the admin-review draft immediately (normally runs at 5 am). |
| Create today's drafts | Generates outreach drafts immediately (normally runs at 4 am). |
| Learn writing voice | Analyzes your sent mail and builds a writing-voice profile from scratch. |
| Update writing voice | Refines the existing voice profile with recent emails. |
| Refresh outdated contacts | Runs the backlog review — contacts not covered by the daily review (including those unseen for 90+ days). |
| Install / refresh triggers | Re-installs all background triggers. Run this if automations stop firing. |
8. Setup & onboarding
When you first run authorize(), a setup form arrives in your Gmail drafts. There are two phases:
Phase 1 — Identity & contacts
Fill in the yellow cells and send it back to yourself:
- Your name, business name, and a one-line description of what you do
- Your starting contacts — one per row: name, email, phone, type, source, and any initial notes
- Whether to add an email signature to outreach drafts (you'll get a follow-up draft to paste it in)
Phase 2 — Preferences
Send yourself crm onboarding 2 to open the advanced setup form:
- Pipeline stages (the statuses your contacts move through)
- Contact types in use for your business
- Preferred outreach channels
Automatic schedule
After authorization the following triggers run without any action from you:
- Every minute — watches your inbox for contact activity, call notes, and commands
- 3 am daily — runs AI analysis on contacts flagged for review
- 4 am daily — creates today's outreach drafts
- 5 am daily — builds the admin review email
- Weekly (Monday) — refreshes your writing-voice profile