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
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_type | title | tags | transaction_type | geographic_scope | who | associations | origin | status | met_by |
|---|---|---|---|---|---|---|---|---|---|
| want | Look at the tool list for the library | tools, library | receive-donate | local | per_kai-tran | exc_3f9a1c0b2d | open | ||
| offer | Bike repair guide | repair, bikes | receive-donate | local | per_robin-park | open | |||
| want | Notes on the workshop plan | workshop | receive-donate | local | per_priya-shah | prj_8c2f0a6e1d4b | exc_7b20e4d91a | met | exc_c41d7e09a3 |
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
offerorwant. 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, orservice, 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
latandlon. - contact_details
- How to reach whoever offers or wants it: an
email, acontact_formaddress, 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
openuntil an exchange meets it, thenmet. 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
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:
whois the other party,originis 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 turnsmet, andmet_byis that exchange. - wants, offers
- Lists in the note, for ones no exchange started. Each says
who(a name, an email, an id, orme), can sayassociations(project or organization names or codes;projectadds one), and can saywith: 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.
Projects โ
Impact report โ
