← portfolio sotiris gianniris

portfolio / 01 · crm architecture

how to set up a CRM (Attio)

I designed a schema-as-code CRM architecture for Relevance, connecting account context, buying roles, deal progress and conversations in one operating model. The aim was to make the CRM useful to people and automations without giving the same field competing owners.

core objects
4
defined attributes
79
working lists
8
lead-source values
11

the model

Relationships describe how records connect, not how data moves.

01 / account

companies

Identity, qualification and original lead source.

unique key · domain
02 / contact

people

Buying role, engagement and person-level contact preferences.

unique key · work email
03 / opportunity

deals

Commercial state, ownership and the next action.

one open deal per company
04 / interaction

conversations

Threads linked back to the people, companies and deals they concern.

unique key · conversation ID
buying committeePeople can take part in a deal as a group, with one clear point of contact.

The deal is the commercial record. Company and person records keep identity and relationship context; conversation records preserve the interaction trail.

the rules that keep it usable

01

one writer per field

Every attribute has a named owner: Attio, enrichment, automation or a person. That gives each workflow a clear write boundary.

02

record origin once

Lead source records how an account or person entered the system. Later activity does not overwrite the original source.

03

keep suppression scoped

Company and person contact restrictions are separate. One person's opt-out does not suppress their colleagues.

04

put commercial state on deals

Pipeline stage, attribution and next action live with the opportunity, rather than being inferred from a contact record.

deal lifecycle

One ordered path from interest to a clear outcome.

  1. 01interested
  2. 02meeting booked
  3. 03meeting completed
  4. 04proposal
  5. 05won / lost

schema as code

The schema is maintained as a versioned YAML contract. A reconciler compares the declared design with the Attio workspace and prepares ordered API changes. That keeps the documented model and configured CRM aligned.

what the design makes clear

Who a company is. Which people influence a deal. Where the opportunity stands. Which interactions belong to it. And which system or operator owns each field.

Built for Relevance's internal GTM operations. This is a sanitized architecture overview, not a client deployment or a copy of the production workspace.

talk about CRM architecture ↗