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.