How someone likes to be reached

A few lines on a person's file: how they like to be reached and talked to, and how things made for them should look.

The people below are made up to show the shape. Murmurations has no field for this, so it is the system's own, added in person contract 0.2.0. The fuller story stays in your own profile of them.

The picture

What you know Your own profile of them notes/people/Robin Park.md The fuller story stays there. per_robin-park/person.json contact_preferences reach_by email; text, for anything same day how_to_talk Direct. Lead with the ask. rendering Short pages, large type. from notes/people/Robin Park.md Murmurations has no field for this, so it is the system's own. publishing system reads it first preferences.mjs for made for Robin sent by email leads with the ask a short page large type one link at the end

Preferences, as a table

One row is one person. Every part is optional; a person with none on file has no contact_preferences at all.

idreach_byhow_to_talkrenderingfrom
per_robin-parkemail
text, for anything same day
Direct. Lead with the ask; skip the warm-up.Short pages, large type, one link at the end.notes/people/Robin Park.md
per_ana-ruizemailDirect. Lead with the ask.notes/people/Ana Ruiz.md
per_jordan-ruiztext
email
Warm. Ask how the garden is going first.One frame with pictures, no long text.notes/people/Jordan Ruiz.md
reach_by is in order: the first way is the one they like most.

What each field holds

contact_preferences
On a person file. How this person likes to be reached and talked to, and how things made for them should look.
reach_by
Ways to reach them, most preferred first, in your words.
how_to_talk
How they like to be talked to, from your profile of them.
rendering
How a page or frame made for them should look or read.
from
Where these preferences were read from.

An organization file has no contact_preferences.

preferences.mjs fill
Fills it in from your own profile of each person: the .md file named in their elsewhere path. It reads three sections: "How to Talk to Them", "Rendering Preferences" and "How to Reach Them". It never overwrites a field already on record.
preferences.mjs for "<who>"
Prints one person's preferences, by name, email or id, for an agent about to make something for them. The share skill runs it before it makes something for a named person.

What the file looks like inside

JSON, a plain text format. This is Robin's file, records/per_robin-park/person.json.

{
  "id": "per_robin-park",
  "linked_schemas": ["people_schema-v0.1.0", "contacts_person_addon-v0.2.0"],
  "name": "Robin Park",
  "email": ["robin@example.org"],
  "telephone": ["+1 713 555 0188"],
  "visibility": ["local"],
  "filed_at": "2026-10-09T10:20:00-05:00",
  "filed_by": "intake:vcf",
  "contact_preferences": {
    "reach_by": ["email", "text, for anything same day"],
    "how_to_talk": "Direct. Lead with the ask; skip the warm-up.",
    "rendering": "Short pages, large type, one link at the end.",
    "from": "notes/people/Robin Park.md"
  }
}

How it connects

person, by idthis folder contact_preferencesreach_by, how_to_talk, rendering publishing systemruns preferences.mjs for manifest rowwhat was made, who it went to
What a contact is →
How sure we are →
Getting started →
What the manifest is →