Feature
Mail and meetings, modeled for the contact.
Fresno already stores email and calendar accounts per tenant, builds Google OAuth authorize URLs, and writes matched messages and meetings as CRM activity. The provider fetch itself (token exchange, IMAP, calendar APIs) is still stubbed — this page describes the model, not a live inbox crawl.
Account types in the data model
Email and calendar are separate accounts. These are the providers the schema already names.
- Google (OAuth)
- Microsoft (OAuth)
- IMAP
Calendar
- Google Calendar
- Microsoft Calendar
Activity only when the contact exists
When a message is logged, inbound matches on the from-address and outbound on the to-addresses. Unmatched addresses are skipped — sync does not invent contacts from every newsletter.
Sent and received as CRM rows
A matched message becomes an email_sent or email_received activity with the subject. That write path is live; pulling the message from Gmail/IMAP is not yet.
Meetings on the same timeline
A worker is ready to upsert events and log attendee matches as calendar activity. The Google/Microsoft calendar API client still returns NotImplemented.
Transcripts can land as activity
Call transcripts can be logged against matching participants (and an optional deal) — the same activity log call coaching reads from.
Connect, list, disconnect
Email and calendar accounts are listed per tenant. Token rows exist for Google and Microsoft; authorize URLs are built today. Token exchange/refresh and IMAP connect are still stubs.