Bosca / Audience

Profiles

A person is one record

A profile represents one person: a name, a slug, a visibility, and a set of typed attribute records drawn from every source you have. It can link to a security identity — or stand alone as a record for someone who hasn't signed in yet.

Attribute records

Typed, and traceable

Each piece of what you know about a person is its own record — a typed value plus the metadata that says how much to trust it. When two sources disagree, both records are kept — each carrying the priority and confidence to weigh it by.

  • Every record carries a source, a priority, a numeric confidence, and its own visibility.
  • A record can expire, so time-limited facts don't linger past their shelf life.
  • Records of the same attribute coexist — nothing is overwritten, and each keeps its own provenance.
attribute · location
London
source: signuppriority: 10confidence: 90
United Kingdom
source: importpriority: 5confidence: 40

Attribute types

A registry of what a person can carry

An attribute type declares a kind of data a profile can hold — a stable, dot-namespaced id, a display name, and a default visibility. The data lives on the profile; the type says what shape it takes.

  • Bind a type to a form from the Forms subsystem and the profile page renders a proper typed editor — no raw JSON.
  • Its id is stable and dot-namespaced, so data that points at it doesn't break when names change.
  • Mark a type protected so only administrators can write its records.
attribute type
{
  "id": "bosca.recommendations.learned_interest",
  "name": "Learned Interest",
  "visibility": "system",
  "protected": true
}

Identity

One person, many profiles

A profile can link to a security principal — the sign-in identity that carries credentials, groups, and devices. One principal can own several profiles, with a primary one returned at sign-in, so a person can wear different hats without a second account.

  • A profile with no principal is still a first-class record — an imported contact, a pending invite.
  • Everything a person touches — the orgs and communities they're in, the segments they fall into — hangs off this one profile.
principal ↔ profiles
one principal

Visibility

Set where the data lives

A profile and each individual record carry their own visibility, so a public display name and a system-only note sit on the same person without leaking.

SystemUserFriendsFriends of friendsPublic

Keep exploring

More on Audience