Wants and offers

A want is something still open between you and someone: they need something from you. An offer is something they put out. Both use the Murmurations offers and wants shape.

Built 2026-10-09, contract 0.2.0, still a draft until the first real want is met. The field names below come from the published Murmurations offers and wants schema. Six more are ours. The people and items are made up to show the shape.

The picture

Something passed between you exchange Kai Tran sent a link 2026-10-08, dated and finished An ask of you? your note decides; the agent suggests yes want exchange_type: want open; met by a later exchange no ask: an exchange only offer exchange_type: offer listed in your note dashboard open wants at the top, each person's open count their record lists their open wants and offers Each want or offer is one file, offers-wants/<id>.json. The exchange stays an exchange either way. One exchange can open one want.

Wants and offers, as a table

One row is one want or offer. The first columns are Murmurations fields. The last five are fields this system adds: who, associations, origin, status and met_by.

exchange_typetitletagstransaction_typegeographic_scopewhoassociationsoriginstatusmet_by
wantLook at the tool list for the librarytools, libraryreceive-donatelocalper_kai-tranexc_3f9a1c0b2dopen
offerBike repair guiderepair, bikesreceive-donatelocalper_robin-parkopen
wantNotes on the workshop planworkshopreceive-donatelocalper_priya-shahprj_8c2f0a6e1d4bexc_7b20e4d91ametexc_c41d7e09a3
An open want: Kai needs you to look at something. It shows on the dashboard until you have looked.

What each field holds

From the published Murmurations offers and wants schema, version 0.1.0. Required there: linked_schemas, exchange_type, transaction_type, tags, title, description, geographic_scope, contact_details.

linked_schemas
The formats this file follows: offers_wants_schema-v0.1.0.
exchange_type
offer or want. An offer is something to lend, lease, sell or donate. A want is something to borrow, rent, buy or receive.
item_type
good, something made, or service, something performed.
transaction_type
On what basis: borrow-lend, rent-lease, buy-sell, receive-donate. A list; more than one is allowed.
title
A few words saying what it is.
description
One to three sentences. For a want opened from a note, the note's context goes here.
tags
Words to find it by.
details_url
A web page with more about it. For a shared link, the link.
image
An image address for it.
geographic_scope
Where it is available or wanted: local, regional, national, international.
geolocation
Where it is, as lat and lon.
contact_details
How to reach whoever offers or wants it: an email, a contact_form address, or both.
expires_at
When it expires, as a Unix timestamp: seconds since 1970, a number.

Six fields are ours, because the Murmurations schema has none for them. Required: id, who, status.

id
ow_ and 10 hex characters, random, given once and never changed.
who
One person (per_) or organization (org_), by code: who wants it, or who offers it. Your own want: you.
associations
A list of the projects (prj_) and organizations (org_) the want is for. Can be empty. Where someone works is not here; it stays on their own record.
origin
The exchange that started it, by its exc_ id. Empty when you wrote the want down yourself.
status
open until an exchange meets it, then met. A met want stays on file.
met_by
The exchange that met it, by its exc_ id. Empty while open, never empty once met.

No times are stored except filed_at. When a want started is its origin exchange's at. When it was met is its met_by exchange's at.

What the file looks like inside

JSON, a plain text format. This is Kai's want: the Murmurations fields, plus ours. It is stored as one file, offers-wants/<id>.json. It points at Kai by who and at the exchange that started it by origin. It is still open, so it has no met_by.

{
  "id": "ow_9d4e2b71c0",
  "linked_schemas": ["offers_wants_schema-v0.1.0", "contacts_offer_want_addon-v0.2.0"],
  "who": "per_kai-tran",
  "associations": [],
  "origin": "exc_3f9a1c0b2d",
  "status": "open",
  "exchange_type": "want",
  "item_type": "service",
  "transaction_type": ["receive-donate"],
  "title": "Look at the tool list for the library",
  "description": "Kai sent the tool list for the library and asked for a look before it goes out.",
  "tags": ["tools", "library"],
  "details_url": "https://example.org/tool-list",
  "geographic_scope": "local",
  "contact_details": { "email": "kai@example.org" },
  "expires_at": 1793491200,
  "filed_at": "2026-10-08T11:41:00-05:00",
  "filed_by": "agent"
}

The exchange it came from stays as it is, one line in Kai's exchanges.jsonl.

{"id": "exc_3f9a1c0b2d", "at": "2026-10-08T10:10:16-05:00", "from": "per_kai-tran", "to": ["per_robin-park"], "route": "email", "subject": "Tool list", "carried": [{"kind": "link", "title": "Tool list", "url": "https://example.org/tool-list"}, {"kind": "ask", "title": "A look before it goes out"}], "filed_at": "2026-10-08T11:41:00-05:00", "filed_by": "agent", "how_filed": "From a note the owner gave the agent."}

How it connects

want or offeroffers-wants/<id>.json person or org, by idwho: who wants it project or org, by idassociations: what it is for exchange, by idorigin: what started it exchange, by idmet_by: what met it

Your own want works the same way: who is you, associations names the project it is for, and the people who might meet it point at it, each saying how they relate. A note's with list does this: each person or organization named gets a connection, can-meet for a want or offered-to for an offer, pointing at the ow_ id.

How a note opens and closes one

opens
On an exchange in the note. Opens a want: who is the other party, origin is that exchange.
answers
On an exchange in the note: a list of open want ids, for example ["ow_9d4e2b71c0"]. Your reply or a file you shared meets each one. It turns met, and met_by is that exchange.
wants, offers
Lists in the note, for ones no exchange started. Each says who (a name, an email, an id, or me), can say associations (project or organization names or codes; project adds one), and can say with: who can meet it, or who it is offered to.
met
A list of ids, for ones met with nothing sent. Each gets a short note from you, filed as the exchange that met it. Nothing is removed.

Kai's want closes when you send your notes on the tool list. The note for that email carries "answers": ["ow_9d4e2b71c0"] on its exchange.

What a contact is โ†’
Projects โ†’
Impact report โ†’