CRM

Feature Team & Enterprise 5 min read Updated May 2026

Your team's CRM updates itself. Every time someone is mentioned in a chat, in a Granola meeting note, or in an agent output, GrooveOS extracts the contact and adds them to your team's directory — with their name, company, role, and the conversation context — without anyone typing it twice.

The CRM is just another view on top of your team's memory. It uses the same team scope, the same truth levels, and the same audit trail. Team A's CRM cannot leak into Team B's.

What the CRM is for

Most CRMs ask you to keep them up to date. GrooveOS flips it: everything your team already discusses becomes the CRM. You don't enter "Bob from Acme called this morning" — you just have the conversation, and Bob shows up in the directory with the new context the next time you look.

You typically use the CRM to:

Opening your team's CRM

Sign in at grooveos.app/account/teams/, open your team card, and click CRM. The page lives at:

https://grooveos.app/account/teams/crm/?team=<your-team-slug>

You'll see a table of every contact in your team's scope, newest first. Click a row to see every memory item, meeting, and chat the contact appears in.

How it builds itself

Three signals feed contacts into your CRM:

Source What gets extracted Latency
LibreChat / Open WebUI chats People mentioned by name or email — extracted by Claude when the conversation is indexed. ~10 s after the chat is saved
Granola meetings Every meeting attendee becomes a contact directly (no LLM extraction — they come from the meeting metadata). ~5 min after the meeting ends
Agent outputs Same as chat — any agent run that mentions people produces contact upserts. ~10 s after the agent finishes

Email is the deduplication key

Contacts are upserted on (team_scope, email). If Bob shows up in five different meetings with the same email, you get one contact row with five linked memory items — not five duplicate Bobs. Existing fields are only overwritten when a new source provides a higher-confidence value.

Contact fields

Field Description
email The deduplication key — unique within your team.
name Display name. Extracted from meeting attendees or chat content.
company The organisation the contact is associated with.
role Job title or role (e.g. "CTO", "Investor").
notes Free-form notes you or your team can add manually.
truth_level Defaults to WORKING. Promote to VALIDATED for "we've confirmed who this is".
source Where the contact came from: granola, chat:<conversation-id>, agent:<run-id>, or manual.
confidence 0.0–1.0 — the system's confidence in the extraction. Meeting attendees default to 1.0; chat-extracted contacts default lower.

Edit, merge, validate

The CRM page lets you act on each contact without writing code:

Soft-delete works the same way as the Brain Monitor: deleted contacts are recoverable for 30 days, then purged.

Promote VIPs to CANONICAL

If you promote a contact to CANONICAL, that contact's name, company, and role are injected into every AI conversation on your team. Use this for board members, key customers, or anyone the AI should always know.

Plan availability

The CRM is part of the Team and Enterprise plans. Free plans don't get the CRM page — Free is meant for individuals trying out GrooveOS in a personal team.

Upgrades take effect immediately — your existing contacts (already extracted while on Free) become visible the moment your team flips to Team plan.

FAQ

Can other teams see my CRM?

No. Every contact carries your team_scope at write time. The CRM page filters server-side — other teams cannot see your rows, even with a stolen access token. Isolation is enforced at the database level, not just the UI.

What if a contact appears under two emails?

Use the Merge action in the row's menu. Both contact rows collapse into one; linked memory items are re-pointed to the surviving row; duplicate row is soft-deleted (30-day recoverable).

Can I sync the CRM to HubSpot / Salesforce?

Not in v1. The API exposes GET /v1/crm/contacts and the standard CRUD endpoints, so you can write your own sync script today. Native HubSpot and Salesforce bridges are on the roadmap — vote at team@grooveos.app.

How do I export the CRM?

Click Export on the CRM page — downloads a CSV scoped to your team. For programmatic exports, see GET /v1/crm/contacts in the API Reference.

What's next