Contacts

Contacts is the project's address book: the people this project deals with, with their names, email addresses, phone numbers, company, title, tags, and notes.

It's a first-party app that is always on in every project — there's nothing to enable, and its panel sits in the project sidebar like any other. It works with nothing connected, and it syncs with Google Contacts when you point it there.

This is the project's address book. The CRM app's people are a different thing — your org's shared book of business, with companies, pipelines, and deals — and the two are deliberately separate.

Where your contacts come from

Contacts has a Source setting with two values:

  • Standalone (the default) — Avi's own contact list. Nothing to connect.
  • Google Contacts — the Google account you bind in the same settings.

The source is a mode, not a blend: only the active source's contacts appear in the panel, in the agent's tools, and in search. An address book that silently mixes two books is one you can't trust.

Switching sources hides, never deletes. The other book stays exactly where it is and comes back the moment you switch back. Disconnecting a Google account doesn't change your data either — only ongoing sync stops.

Change the source in Project Settings → Apps → Contacts. The panel's Settings tab shows what's active and when Google was last checked.

Syncing with Google

The first pass loads your whole Google contact list; after that a pass every ten minutes pulls just what changed. While Google is the active source, creating or editing a contact writes to Google first and only then mirrors locally — if Google refuses, the write fails and tells you why, instead of quietly leaving you with two different truths.

Two things stay local: notes and tags. Google never sees them.

Google's auto-saved "other contacts" — the addresses it keeps every time you mail someone new — are never synced. Only your real contact list comes across.

Notes are yours

A contact's notes are free-form prose that a person writes. Avi does not maintain them: no enrichment, no agent, no sync pass, and no background job writes them.

What changed: Avi used to keep an AI-written "context" block on every contact and refresh it in the background. That's gone. When the Contacts app shipped, each contact's existing context was appended to that contact's notes exactly once, under a dated marker — so nothing was lost, and nothing has been written there since.

Contacts are also no longer created behind your back. Apps that read your email, Slack, or X used to mint a contact for every new person they saw; they don't any more. Contacts are the people you (or the agent, when you ask) put in the book.

Finding people

The panel's search box searches name, email, company, and title. An email address also matches a person's secondary addresses, so looking someone up by the address they actually wrote from finds them. Contacts turn up in Avi's global search, and typing @ in chat offers them alongside your project handles.

Duplicates

A contact's primary email is the duplicate key within a source. Creating a second contact with an address already in the book is refused, and the refusal names the existing person — so the agent updates them instead of quietly creating a second row.

Fields

Name, primary and secondary emails, phones, company, title, website, addresses, social identities, tags, and notes — plus a metadata bag your apps can write to (see Data Types).