icantcrm
How it works Features FAQ Docs Connect your Gmail

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.

Contents

  1. Your daily flow
  2. The admin review email
  3. Backlog contact review
  4. Logging calls
  5. Email commands
  6. Teaching the AI with rules
  7. Settings
  8. Sheets menu
  9. Setup & onboarding

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 yes to no to 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.

The review ends with a single ending-settings table of opt-in actions — edit a cell and send to act on it:

  • Update N contacts with missing or 3+ days overdue action? (default No) — queues every contact with no next action set, or one more than three days overdue (excluding archived, dormant, and anyone with a draft already waiting), for AI to propose a next action on the next nightly run. Appears only when ai_contact_updates is on.
  • Run backlog review for N more contacts? (default No) — generates the backlog review draft for everyone the daily review didn't fit (see below).
  • Send review draft for N dormant contacts? (default No) — generates the dormant review draft.
  • Draft email refinements (free text) — feedback on how draft emails should be written, e.g. "always offer two scheduling windows". Added to your pending writing-voice update and incorporated the next time the voice profile is refreshed (weekly by default, or via CRM menu → Update writing voice). Appears when ai_autodraft is on.

The review also ends with a New suggested contacts section: people who emailed you recently, aren't in your contact list, and are new this year (no prior correspondence in the past 12 months). When AI contact updates are on, each is filtered for genuine relationships and given a suggested type; set Add? to yes on any row and send to import them. Ignored suggestions won't reappear for ~30 days. Turn the section off with suggest_new_contacts.

The backlog review for the remaining contacts is opt-in: set the "Run backlog review for N more contacts?" row above to Yes (or use the menu) – see below.

If you delete an outreach draft without sending it, that contact appears in a Deleted drafts section of the next daily review showing the rejected draft. Add a Refinement to teach the AI how to write better (it updates your writing voice and that contact's guidance); leave it blank to dismiss. Deleted drafts are not automatically regenerated.

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. The daily admin review ends with a footer — "Run backlog review for N more contacts?" — covering everyone it didn't fit; set it to Yes and send to generate this draft. Also available on demand via CRM menu → Refresh outdated contacts. (It is not generated automatically, since it can be a large batch of AI calls.)

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 SmithFull name
call follow-up jane@example.comEmail address
call notes - 642bb79e9e34453d9948a9b7Contact ID (shown in admin emails)
[crm] call Jane SmithFull 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] actions list 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, then uses AI to keep only genuine relationships (dropping automated, transactional, and one-off senders). Contacts already in your sheet are excluded, and once you have a contact list the bar is raised to surface only strong new relationships. Creates a pre-filled draft for you to prune before importing.
crm connect gmail <url> Switches this mailbox onto the isolated Gmail service (per-tenant OAuth) and drafts a one-time authorization link to grant Gmail access. The <url> is the deployed service /exec URL; omit it once GMAIL_SERVICE_URL is set.
crm sync inbox now Forces an immediate inbox scan, bypassing the quiet-period window and adaptive backoff throttle. Useful after a burst of email activity when you want contacts updated without waiting for the next scheduled scan.
crm dormant Lists your dormant contacts with editable Next action / Next date / Archive? columns. Set an action to revive one, or Archive? = Yes to archive it. Also offered as a footer on the daily review.
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 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 spend Recommends hard dollar spend caps based on your selected models and which AI features are on (anchored at ~$15/month for the Haiku+Sonnet mix; higher for pricier models). Values are prefilled – edit and send back to save. Also the part-3 onboarding step.
crm templates Opens the email-templates editor: a table of common next-actions and a canned email for each. When a contact's next action matches a template name, the daily draft uses that template (with [firstname] filled in) instead of the AI – so routine outreach costs nothing. Edit the yellow cells and send it back to save.
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:

  1. Email command: Send yourself crm add rule <text>.
  2. 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".
  3. 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
RulePlain-English instruction for the AI.
Scopeall, analysis, drafts, or triage. Comma-separate to apply to multiple scopes. (triage applies to the backlog review AI analysis.)
Type FilterOptional. Limit to a contact type (e.g. parent, school). Blank = all types.
Status FilterOptional. Limit to a contact status (e.g. client-active). Blank = all statuses.
EnabledTRUE or FALSE. Toggle rules on/off without deleting them.
Sourceoperator (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
is_icantcrm_onMaster switch. Set to false to deactivate all automated activity – the scheduled jobs (watcher, nightly enrichment, drafts, admin review) and the incoming text-relay all stop, and the triggers are removed. To resume, use Admin actions → Reactivate icantcrm (it turns this back on and reinstalls the triggers); editing the cell back to true alone won't restart it.true
operator_nameYour first name – used in sign-offs and AI prompts.–
business_nameYour business name (feeds AI context).–
business_descriptionOne-line description of your business.–
timezoneIANA timezone for dates and triggers.America/Chicago
admin_max_contactsMax contacts in each daily admin-review draft.20
max_suggested_contactsMax contacts returned by "crm suggest contacts".20
use_crm_labelApply a "crm" Gmail label to all CRM-created drafts.true
error_alertsEmail you when a background job fails (rate-limited to once per error per 6h).true
usage_alertsEmail you when daily AI token usage is abnormally high.true
usage_alert_multipleAlert when today's tokens exceed this multiple of your trailing daily average.3
your_business_emailThe address drafts are created From. Must be your linked Gmail address or a verified send-as alias (set up in Gmail → Settings → Accounts). Leave blank to use your account's default address.(default address)
reply_from_same_addressWhen replying to an existing thread, send from whichever of your addresses last received mail in that thread (mirrors Gmail’s native “reply from the same address” behavior). When off, replies use your_business_email.true
ai_autodraftWhen on, daily drafts are written by AI (and your writing voice is learned from sent mail). When off, each draft is a blank-recipient scratch note with the contact's details and next action for you to write yourself. Template-matched actions always use their template either way.true
ai_contact_updatesWhen on, AI suggests status/type changes, next actions and dates, and relationship summaries (nightly enrichment + the daily admin review). When off, no contact-update AI runs – and the daily review becomes a no-AI list of contacts that need attention (no next action set, then overdue) for you to fill in. With both this and ai_autodraft off, the scheduled jobs make no AI calls at all.true
next_action_summaryWhen on, today's outreach arrives as one digest email (each contact's key data plus the ready-to-send email when available) instead of a separate Gmail draft per contact.false
suggest_new_contactsAdds a "New suggested contacts" section to the daily review – recent email senders who are new this year and not yet in your list. Set Add? to yes on any row to import them. Uses AI to filter and suggest a type when ai_contact_updates is on.true
suggest_contact_phonesGenerates a separate "Suggested phone numbers" email (on the nightly admin trigger) – numbers from your Mac Contacts matched to your contacts by name, to fill blanks, fix format mismatches (e.g. a missing country code), or flag a discrepancy with a different stored number. Set Apply? to yes on a row (or flip auto-approve) and send back to update contacts. Needs the iMessage/SMS Mac app installed.true
max_spend_per_dayHard USD cap on AI spend per calendar day. When reached, AI pauses (drafts fall back to templates/scratch notes) until the next day. Blank = no limit.(none)
max_spend_per_weekHard USD cap on AI spend per Mon–Sun week. Blank = no limit.5
max_spend_per_monthHard USD cap on AI spend per calendar month. When reached, AI pauses until the 1st. Blank = no limit.15
gv_textsTrack Google Voice texts & voicemails (via GV email forwarding). Switching from false to true sends you a step-by-step setup guide.false
imessage_textsTrack Mac iMessage/SMS via the local feeder script. Switching from false to true sends you a step-by-step setup guide. You can also download the Mac app (.pkg) directly — double-click to install, no security prompt.false

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 nowScans your inbox immediately for new emails, call notes, and commands (normally runs every minute automatically).
Suggest new contactsSame as the crm suggest contacts command.
Run AI on pendingRuns AI analysis immediately on all contacts flagged for it (normally runs at 3 am).
Build admin reviewGenerates the admin-review draft immediately (normally runs at 5 am).
Create today's draftsGenerates outreach drafts immediately (normally runs at 4 am).
Learn writing voiceAnalyzes your sent mail and builds a writing-voice profile from scratch.
Update writing voiceRefines the existing voice profile with recent emails.
Refresh outdated contactsRuns the backlog review – contacts not covered by the daily review (including those unseen for 90+ days).
Install / refresh triggersRe-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 you use Google Voice and/or iMessage/SMS for client texts – answer yes to either and a setup guide for it is sent automatically
  • To add an email signature, send yourself crm settings and paste your formatted signature into the Email signature row (formatting and logo are preserved)

Importing a contact list

In the contact-list cell of the setup form, you can use any of these instead of typing rows by hand:

  • Let me suggest – type suggest and the CRM scans your recent mail for people you've had genuine back-and-forth with, then sends a list to prune.
  • Attach a CSV – type attached and attach a CSV file with an Email column (optionally First Name/Last Name or Name).
  • Paste addresses – paste email addresses directly, separated by commas, spaces, or new lines.
  • Google Sheet – paste a Google Sheet URL. The sheet must be shared "Anyone with the link · Viewer" and its first tab needs an Email column header. It imports the first tab; to import a different tab, open that tab and copy the URL from your browser's address bar so it points there. (A private sheet won't import – share it, or export the tab as CSV and attach it.)

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
icantcrm

The CRM that lives in your inbox.

Privacy Terms Contact
© 2026 icantcrm