all projects

Services company

Self-updating CRM in Google Sheets

A services company tracked clients in a Google Sheets CRM, updated by hand from Gmail threads. A microservice now reads new emails every 5 minutes, matches each one to a client, and an LLM fills in the status, the deadline, and the latest agreement.

inboxcrm rows

runs every 5 min

crm-email-ai-sheets · shipped 2024 · inbox → crm rows

The challenge

A services company ran its client work out of Gmail and a Google Sheets CRM. Statuses, deadlines, and agreements were copied from email threads into the spreadsheet by hand. At the company’s volume of correspondence that ate hours every week, and things slipped through: a deadline nobody copied over, a client waiting on a reply nobody logged.

The approach

The microservice checks Gmail every 5 minutes, picks up new emails, and identifies the client by the sender’s domain. An LLM reads the correspondence and fills in the CRM fields: status (action required, waiting on client, nothing needed), deadline, the latest agreement, and the relationship history.

The Google Sheet stays the CRM. The team keeps the tool it already trusts, and the data in it stays current without anyone doing the typing.

Architecture

  • Backend: Python, with periodic polling managed by supervisord
  • Integrations: Gmail API, Google Sheets API, OpenAI API for correspondence analysis
  • Deployment: Docker Compose on a Linux server

Results

The CRM is up to date without manual entry. The status column tells the team where action is needed, and deadlines no longer depend on someone remembering to copy them out of an email.