Skip to the page

Invented app · built on Kindling · Why Kindling · The apps · The library · The spec

Heartwood

Under the hood: any Pool, five shortcuts

What Heartwood hosts, how any Pool opens, which Pools make each room, how a yes travels, how the reading is computed, and where v0.1 falls short.

Settings, mapped to the spec

What we chose, and why

SettingValueSpecWhy Heartwood chose it
Pools hostedHeartwood: Nearby (dating) and Heartwood: Friends nearby (friendship), separate§3.1A friend yes and a dating yes are different yeses. Two Pools keep them apart, and being in one says nothing in the other. Every other Pool we open is kept by someone else.
Any PoolOpens, the way a browser opens any page§3.1Rooms are shortcuts, not gates. A Pool whose tags fit a room opens there; one that fits none opens as a room under its own name, or the product’s when you load one.
RoomsDating, Friends, Chosen family, Mentorship, Music§3.2Each is every Pool whose intent_tags fit it, with a few on when you open the app. Dating shows a person only when their own tags say dating.
Visibilitypublic read; unlisted only with the address or for a member; invite-only never§3.2As the spec asks of every reader. Pasting an invite-only address says so.
A site’s own wordThe Check-In Circle is never read§3.2Foul Weather Friends asks apps not to read it, and gives its address only by hand. We leave it alone, the way a browser leaves alone a site that asks not to be read.
IntroductionsBy the Pool’s charter and rules, and each person’s own§7Where a charter or rules say a curator, steward, coordinator or matchmaker introduces, a yes becomes a request to them, never a message to the person. A consent model alone says how people join, not how they meet.
Our consent modeluniversal-opt-in§3.2Anyone may ask to be listed in our two Pools; nobody is listed without their own yes.
The parsed profileCards outside Dating run on it§2.3Name, pronouns, place, words, tags, verification and messaging rules. Page fields are added only where the same page has them.
Handshake window14 days, carried in each request’s expires_at§5.2The default. The manifest has no field for it, so it lives in every request and in our governance rules.
WithdrawalOne action, processed at once§5.3The spec allows up to sixty seconds. We never ask why.
Auto-acceptHonored, and always announced§5.5Rules can only allow public or unlisted Pools, and every use of a rule tells you.
Verification shownOn every card, in words and with an icon; vouches named with their Pool§4.5A vouch counts in one Pool only, so a card read from Midspan Mentors or Platonic Life Partners says where.
Messaging rulesThe kit’s canMessage, with pool_url, pool_members and the Pool’s own sender floor, before every note§7.1The reason is always printed in words: shared Pool only, no cold messages, vouched only, the Pool’s minimum, or its curator.
Block listsKindling’s and the Circular consortium’s§7.3The same two lists our Pools subscribe to. Personal blocks stay in Heartwood and cover every room.
TransportEmail under every message and request§6.1People can answer from their inbox, and conversations survive leaving Heartwood.
DiscoveryA well-known file listing both Pools§10.1So any crawler or registry can find them without asking.
PhotosShown from each person’s own page, never stored§2.5Portraits here are illustrations drawn from each page’s description, the same in every app. Someone whose page has no photos gets no face.
Resting PoolsOpen, and say they are resting§9.1A dormant Pool is still readable. Nobody in it is hidden for it.

One Pool, three layers

Ada Quillon’s Listeners: the site, the JSON and our card

The same Pool is a page on its host’s own site, a JSON file anyone can read, and a card in any app that reads the file. Every card in Heartwood links back to the other two. Here is one person, Consuelo “Connie” Arroyo, in all three, as Theo Lindqvist sees her in Music.

1 · The site layer

On Ada Quillon’s own site

Ada keeps the list on her own site, with a page for it. Ada Quillon’s Listeners, on Ada’s site.

2 · The data layer

As JSON

pools/ada-listeners.json, served at https://adaquillon.example/pools/ada-listeners.json. Consuelo’s entry, exactly:

{
  "profile_url": "https://connie-arroyo.carrd.example",
  "parsed_profile": {
    "schema_version": "0.1",
    "profile_url": "https://connie-arroyo.carrd.example",
    "display_name": "Consuelo “Connie” Arroyo",
    "pronouns": "she/her",
    "location": {
      "city": "Port Ellery",
      "country": "United States"
    },
    "intent_tags": [
      "music",
      "listening",
      "friendship"
    ],
    "about": "Sells tickets at the ferry terminal. First heard Ada play at Fix-It Friday while someone rewired her amp. Would like a few people to sit with at shows.",
    "contact_methods": [
      {
        "type": "email",
        "value": "consuelo@mail.example",
        "label": "Kindling identity"
      }
    ],
    "verification": {
      "level": "email",
      "verified_at": "2026-06-21T09:30:00Z"
    },
    "messaging_preferences": {
      "accept_from": "shared-pool",
      "no_cold_messages": false,
      "minimum_curator_verification": "email"
    },
    "kindling_noindex": false,
    "parsed_at": "2026-06-21T09:30:00Z",
    "parser": "kindling-parser/0.1.1"
  },
  "verification_level": "email",
  "added_at": "2026-06-21T09:30:00Z"
}

3 · The app layer

Our card, built from nothing else

From Ada Quillon’s Listeners, kept by Ada Quillon Email verified Noemi Castro Email verified

“People who listen to Ada Quillon’s songs and would like to find each other: in their own town, at a show, or on the way to one.” Its tags: music · listening · friendship · songwriting · public · universal-opt-in

The same Pool in three layers: On Ada Quillon’s site · As JSON ·

CA

Ada Quillon shows Consuelo in words, not a picture, and so do we. We never draw a face for someone who has not shown one.

Consuelo “Connie” Arroyo she/her

in Port Ellery

Email verified

In Consuelo’s words

Sells tickets at the ferry terminal. First heard Ada play at Fix-It Friday while someone rewired her amp. Would like a few people to sit with at shows.

Their own tags, in Ada Quillon’s Listeners

  • music
  • listening
  • friendship

Where this card comes from

  • The parsed profile in Ada Quillon’s Listeners: name, pronouns, place, words, tags, level and messaging rules.
  • Consuelo’s page: nothing more. It adds no fields beyond the parsed profile.
  • Not on any card in Music: age, gender, what someone is seeking and answers. The v0.1 parsed profile has no such field, and Heartwood never guesses them.

Their page

connie-arroyo.carrd.example

Everything on this card is read from Consuelo’s own page and the Pool they joined; photos are shown from the page, never copied. Ada Quillon’s Listeners is public, so any app may read the same people.

Rooms they belong to, from this same page: Friends: Ada Quillon’s Listeners.

Your yes stays in Heartwood. Consuelo will see it if they open Heartwood; v0.1 has no message for a yes. A note can go with it. Allowed through Ada Quillon’s Listeners: you are both in Ada Quillon’s Listeners, and Consuelo takes messages only from people in a Pool with them.

In the app, Yes, a show together and Not for me sit here, the same size and the same color, with “in Ada Quillon’s Listeners” above them.

Every line on the card is in the entry above, or says it is blank. Consuelo has no page fields we read, so the card draws no face and shows no age, gender or answers. Her tags came from her own page; the level beside her name came from the entry.

What you share with Consuelo

One ring for each line you both have. Blank lines are listed, not drawn.

You share 1 of 2 on the lines you both have. 2 lines are blank, and skipped.

Each line you both have earns 1 for the same, ½ for close, 0 for different. Tags: 1 if you share a tag beyond the Pool’s own, which everyone in it has. Place: 1 for the same town, ½ within 30 miles. Languages and interests: 1 if you share one. A line either of you lacks is blank: skipped, never guessed. What you share = points ÷ lines you both have.

Show the math
LineVerdictEarnedPossible
TagsDifferent01
PlaceSame11
LanguagesBlank, skipped
InterestsBlank, skipped
Total12

1 ÷ 2 = 50 in 100.

  • Tags · Parsed profile, bothDifferentYou share only the Pool’s own tags (friendship), which everyone in it has.
  • Place · Parsed profile, bothSameBoth in Port Ellery.
  • LanguagesBlankThe v0.1 parsed profile has no languages field, and Consuelo’s page adds none.
  • InterestsBlankThe v0.1 parsed profile has no interests field, and Consuelo’s page adds none.

What this can’t see. Age, gender, what someone is seeking, answers: the v0.1 parsed profile has no field for them, so no card in Music has them. It is a reading of a few shared fields, not of a person.

This reading is yours. Consuelo sees their own. Nobody is sorted by it.

Our manifests

Two Pools, one discovery file

Heartwood: Nearby

pools/heartwood-nearby.json, served at https://heartwood.example/pools/heartwood-nearby.json

Curators
Harriet Lund (oauth, primary), Bashir Rahimi (oauth)
Visibility
public
Consent
universal-opt-in
Tags
dating
Scope
Cascadia
Entries
23, each with a consent proof
Charter
Heartwood: Nearby is for people in Cascadia who would rather read the whole person than judge a face. Your page, your words: your prompts, your answers, what you are looking for and the other rooms you belong to, all on one long card. The like button sits at the end, after you have read. When two people like each other, they can write. Nobody pays to be seen here, and nobody pays to be read.
Rules
Universal opt-in: anyone may ask to be listed, and nobody is listed without their own yes. There is no vouch in this Pool; the level beside each person is their own sign-in, shown as it is. Heartwood’s community team reads every report within a day, removes anyone who breaks this charter, and tells them why. Pages are read from where people keep them and never copied. Being in Nearby says nothing in Friends nearby, and the other way around. Leave in one tap: your card is gone within a minute, and your page, your other Pools and your conversations stay yours.
Block lists
https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json

Heartwood: Friends nearby

pools/heartwood-friends.json, served at https://heartwood.example/pools/heartwood-friends.json

Curators
Bashir Rahimi (oauth, primary), Harriet Lund (oauth)
Visibility
public
Consent
universal-opt-in
Tags
friendship
Scope
Cascadia
Entries
9, each with a consent proof
Charter
For people in Cascadia looking for friends, not dates: someone to hike with on Saturdays, a coffee when you are new in town, a person to text about the game. The same whole-person cards as Nearby, in a separate Pool with its own yes. Nobody here is flirting with you, and being listed here says nothing about whether you date.
Rules
Universal opt-in, and separate from Heartwood: Nearby. Joining one never adds you to the other, and being in one says nothing in the other. Reports go to Heartwood’s community team, who answer within a day. Leave in one tap.
Block lists
https://protocol.kindling.foundation/blocklist.json, https://thecircular.example/blocklist.json

The well-known file

.well-known/kindling-pool §8.3 §10.2, operated by Heartwood, an app that reads the whole person and the rooms you belong to, hello@heartwood.example.

  • Heartwood: Nearby · public · active · dating · https://heartwood.example/pools/heartwood-nearby.json
  • Heartwood: Friends nearby · public · active · friendship · https://heartwood.example/pools/heartwood-friends.json

The request Friends nearby sends Simone: handshake/demo-request.json.

Rooms, layers and own names

Where each Pool opens

We find Pools through well-known files and registries §8.3 §8.4. Every Pool an app may open, opens: a public one for anyone, an unlisted one for a member or for someone who has its address §3.2. A room is every Pool whose tags fit it, and the last column says which layers are on when you open the app. A resting Pool opens and says it is resting §9.1. We drop anyone whose page says noindex §2.7 or who is on a block list we subscribe to §7.3. Cards come from the layers that are on, taking turns between layers, newest first in each. Nothing is sorted by a score.

LayerRoomPoolsTags that fitThe yes, and how it travelsWhen you open the app
Everyone nearbyDatingHeartwood: Nearby, Face Up: Cascadia, Sundial: Cascadia, Card Catalog: Cascadiadating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOn
Wren’s ListDatingDate-Me Docs: Cascadiadating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOn
The Singles ShelfDatingThe Singles Shelfdating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOn
Many Moons: Harbor CountiesDatingMany Moons: Harbor Countiesdating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOn
Queer HarborDatingQueer Harbor: Datingdating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOnly with the address
Late Supper MatchmakersDatingLate Supper Matchmakersdating“Yes, a date”. Stays in Heartwood; a note goes by their rulesOff
The Tuesday TableDatingThe Tuesday Tabledating“Yes, ask the matchmaker”. A request to NadiaOnly with the address
Second ChaptersDatingSecond Chaptersdating“Yes, ask the matchmaker”. A request to NadiaOnly with the address
Friends nearbyFriendsHeartwood: Friends nearbyfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOn
Ada Quillon’s ListenersFriendsAda Quillon’s Listenersfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOn
Slack Water 2026FriendsSlack Water 2026friendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOn
Many Moons: Harbor CountiesFriendsMany Moons: Harbor Countiesfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOn
Solo Poly Supper ClubFriendsSolo Poly Supper Clubfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
Tuesday Morning WalkersFriendsTuesday Morning Walkersfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
New in TownFriendsNew in Townfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
Start a Band: Port ElleryFriendsStart a Band: Port Elleryfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
Later-Life HousematesFriendsLater-Life Housematesfriendship“Yes, as friends”. Their own rules; through Omar where those rules shut everyone outOff
Seed and Cutting SwapFriendsSeed and Cutting Swapfriendship“Yes, swap seeds”. Stays in Heartwood; a note goes by their rulesOff
Conversation PartnersFriendsConversation Partners, Any Languagefriendship“Yes, practice together”. Stays in Heartwood; a note goes by their rulesOff
Chess After CloseFriendsChess After Closefriendship“Yes, a game of chess”. Stays in Heartwood; a note goes by their rulesOff, resting
Tuesday RegularsFriendsTuesday Regularsfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
The Saturday RunFriendsThe Saturday Runfriendship“Yes, run together”. Stays in Heartwood; a note goes by their rulesOff
New to ClimbingFriendsNew to Climbingfriendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff
Thursday Night: Women and Nonbinary ClimbersFriendsThursday Night: Women and Nonbinary Climbersfriendship“Yes, climb together”. Stays in Heartwood; a note goes by their rulesOnly with the address
Rain Check: EveryoneFriendsRain Check: Everyonefriendship“Yes, a game night”. Stays in Heartwood; a note goes by their rulesOff
Slack Water 2025FriendsSlack Water 2025friendship“Yes, as friends”. Stays in Heartwood; a note goes by their rulesOff, resting
Platonic Life PartnersChosen familyPlatonic Life Partnerschosen-family“Yes, ask the stewards”. A request to the stewardsOn
Later-Life HousematesChosen familyLater-Life Housemateshousemates“Yes, share a home”. Their own rules; through Omar where those rules shut everyone outOn
Intentional Co-ParentsChosen familyIntentional Co-Parentschosen-family“Yes, ask the stewards”. A request to the stewardsOnly with the address
Midspan MentorsMentorshipMidspan Mentorsmentorship“Yes, ask a coordinator”. A request to the coordinatorsOn
Cape Tarrow alumniMentorshipCape Tarrow First-Gen Alumnimentorship“Yes, a mentor”. Stays in Heartwood; a note goes by their rulesOn
Start a BandMusicStart a Band: Port Ellerymusic“Yes, start a band”. Stays in Heartwood; a note goes by their rulesOn
Session PlayersMusicSession Playersmusic“Yes, play a session”. Stays in Heartwood; a note goes by their rulesOn
Songwriters’ Demo SwapMusicSongwriters’ Demo Swapmusic“Yes, swap demos”. Stays in Heartwood; a note goes by their rulesOn
Ada Quillon’s ListenersMusicAda Quillon’s Listenersmusic“Yes, a show together”. Stays in Heartwood; a note goes by their rulesOn
Friday SubsMusicFriday Subsmusic“Ask to sub”. Stays in Heartwood; a note goes by their rulesOff
Horns and Strings for RecordsMusicHorns and Strings for Recordsmusic“Ask about a record”. Stays in Heartwood; a note goes by their rulesOff
Door and Sound CrewMusicDoor and Sound Crewmusic“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOff
Release Night: Kitchen LightMusicRelease Night: Kitchen Light at the Ferry Room, Friday 16 Octobermusic“Yes, see you at the show”. Stays in Heartwood; a note goes by their rulesOff
House Show in TacomaMusicHouse Show in Tacoma, Saturday 17 Octobermusic“Yes, see you at the show”. Stays in Heartwood; a note goes by their rulesOff
Portland, 23 OctoberMusicPortland, Friday 23 Octobermusic“Yes, go together”. Stays in Heartwood; a note goes by their rulesOff

Under its own name

These 27 Pools fit none of the five rooms, so each opens as a room of its own, named for the Pool. Load a product and its own-name room, named for the product, holds together those of its Pools that fit no room. Every card still names its Pool, a line of its charter and its tags.

PoolHostTagsThe yes, and how it travelsOpens
Español ↔ EnglishCorreo Lentolanguage-exchange, spanish, english, letters“Write a letter”. A letter, held by the co-op until both say yesOpen
Français ↔ EnglishCorreo Lentolanguage-exchange, french, english, letters“Write a letter”. A letter, held by the co-op until both say yesOpen
Português ↔ EnglishCorreo Lentolanguage-exchange, portuguese, english, letters“Write a letter”. A letter, held by the co-op until both say yesOpen
Tagalog ↔ EnglishCorreo Lentolanguage-exchange, tagalog, english, letters“Write a letter”. A letter, held by the co-op until both say yesOpen
Belay PartnersDrip Lineclimbing, belay, partners“Ask to climb”. Stays in Heartwood; a note goes by their rulesOpen
Lend and BorrowFoul Weather Friendsmutual-aid, lending, tools“Ask to borrow”. Stays in Heartwood; a note goes by their rulesOpen
Meals When It’s HardFoul Weather Friendsmutual-aid, meals, cooking“Ask Hester”. A request to HesterOpen
Rides to AppointmentsFoul Weather Friendsmutual-aid, rides, carpool“Ask for a ride”. Stays in Heartwood; a note goes by their rulesOpen
Client BuildersKindlingbuilding, open-source“Yes, trade notes”. Stays in Heartwood; a note goes by their rulesOpen
Founding CuratorsKindlingcurating, founding-cohort“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
Spec ReadersKindlingspec-review, indieweb“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
Toward a Working GroupKindlinggovernance“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
Writers and ResearchersKindlingresearch, writing, journalism“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
The Orchard Street HouseholdMany Moonshousehold, non-monogamyFor context only: nothing to say yes toOnly with the address
Big Game DayRain Checkboard-games, game-day, rain-check, rides, lending“Yes, see you on game day”. Stays in Heartwood; a note goes by their rulesOpen
Olympia ThursdaysRain Checkboard-games, game-night, rain-check, olympia“Yes, see you Thursday”. Stays in Heartwood; a note goes by their rulesOpen
Port Ellery ThursdaysRain Checkboard-games, game-night, rain-check, port-ellery“Yes, see you Thursday”. Stays in Heartwood; a note goes by their rulesOpen
Portland ThursdaysRain Checkboard-games, game-night, rain-check, portland, role-playing“Yes, see you Thursday”. Stays in Heartwood; a note goes by their rulesOpen
Tacoma ThursdaysRain Checkboard-games, game-night, rain-check, tacoma“Yes, see you Thursday”. Stays in Heartwood; a note goes by their rulesOpen
Scattered Light StewardsScattered Lightpeer-support, stewarding“Write to a steward”. Stays in Heartwood; a note goes by their rulesOpen
Seen Work CuratorsSeen Worktrades, referrals, curating“Ask about a job”. Stays in Heartwood; a note goes by their rulesOpen
Seen Work: Harbor TradesSeen Worktrades, referrals, work“Ask a curator”. A request to the curatorsOnly with the address
Crew and VolunteersSlack Watervolunteering, crew, sound, festival-crew“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
Rides HomeSlack Watercarpool, rides“Ask for a seat home”. Stays in Heartwood; a note goes by their rulesOpen
Carpool to the CoastThe Boardcarpool“Ask for a seat”. Stays in Heartwood; a note goes by their rulesOpen
Fix-It Friday VolunteersThe Boardrepair, volunteering“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen
Circular CorrespondentsThe Circularwriting, editing, volunteering“Yes, say hello”. Stays in Heartwood; a note goes by their rulesOpen

Rule 2 in Dating

“No one is shown as open to dating unless their own tags say so.” Dating reads each person’s own intent_tags, in the entry of the Pool they joined, and shows them only when dating is there. Being in a dating Pool is not enough, and a page is not read for it. Where both pages say who they are looking for, Dating also shows people only to someone they are looking for, who is looking for them; where a page does not say, the card says so.

The build checks this on the Dating room as the app itself deals it, for each of the 5 viewers whose own tags say dating, with every layer on and every unlisted address added: 60 different people are dealt, and none of them lacks dating in their own tags. Anywhere else, a card lists a person’s own tags as theirs, and that may include dating, because that is them saying so; it never adds a “looking for” line, dating answers or “Yes, a date”.

How a yes travels

The Pool’s way, and each person’s

A yes that stays

Most Pools, in every room and under their own names

A yes is Heartwood’s alone, because v0.1 has no message for interest. A note sent with it is an intro, and goes only if the kit’s canMessage says the person’s rules and the Pool’s allow it §7.2. A note sent with a yes, an intro after both said yes.

A yes that is a request

The Tuesday Table, Second Chapters, Platonic Life Partners, Intentional Co-Parents, Midspan Mentors, Seen Work: Harbor Trades and Meals When It’s Hard

Their charters or rules say a steward, coordinator, matchmaker or keeper introduces, so a yes is an intro addressed to them, through the Pool. The person hears nothing until they are asked; at Midspan, the student is always asked first. Walt asks Hearthhold’s stewards, Yesenia asks Midspan’s coordinator.

A yes that depends on the person

Later-Life Housemates

Hearthhold sets no rule for introductions here, so each person’s own rules decide §7.2. One person’s page takes messages only from people vouched for in the Pool, where nobody is vouched. For her, and anyone like her, a yes becomes a request to Omar, who keeps it. Leaving is one action everywhere: a withdrawal.

A yes that is a letter, and a Pool with no yes

Español ↔ English, Français ↔ English, Português ↔ English and Tagalog ↔ English; The Orchard Street Household

Correo Lento is slow letters, by email, one a week at most, and its co-op holds every first letter until both people have said they would like to write. So a yes there is “Write a letter”, never a chat. The Orchard Street Household is listed so the people its members date can see how they are connected: it opens, for context only, with nothing to say yes to.

The reading

Compatibility, in full

Dating: the eighteen questions

For every question you both answered: the same answer earns its full weight, a close answer earns half, a different answer earns nothing. A lot counts 3, a little counts 1, not at all counts 0. Your reading is what you earned out of what was possible. A question either of you left blank is skipped and never guessed. You set the weights; the other person sees their own reading, with theirs.

QuestionOptionsCounts as closeUsed inDefault weight
Do you want children?Want children · Have children and want more · Have children and don’t want more · Don’t want children · Not sure yetWant children and Have children and want more; Want children and Not sure yet; Don’t want children and Not sure yet; Have children and don’t want more and Don’t want childrenDating3
Would you date someone who already has children?Yes, happily · Open to it · Probably notneighbors on the scaleDating1
How important is faith or spirituality in your life?Very important · Somewhat important · Not very important · Not importantneighbors on the scaleDating1
How important is it that a partner shares your politics?Very important · Somewhat important · Not very important · Not importantneighbors on the scaleDating and Friends1
Do you drink?Never · Rarely · Socially · Regularlyneighbors on the scaleDating and Friends1
Do you smoke or vape?No · Sometimes · Yes · Trying to quitSometimes and Yes; Sometimes and Trying to quit; Yes and Trying to quitDating and Friends1
Pets at home?Have pets · Want pets · Happy with a partner’s pets · Allergic · Rather notHave pets and Happy with a partner’s pets; Want pets and Have pets; Want pets and Happy with a partner’s petsDating and Friends1
Where would you most like to live?City · Small town · Country · City now, country laterCity and City now, country later; Country and City now, country later; Small town and CountryDating and Friends1
What does a good weekend look like?Out with friends · Outdoors · Home and quiet · A project · A bit of everythingA bit of everything and Out with friends; A bit of everything and Outdoors; A bit of everything and Home and quiet; A bit of everything and A projectDating and Friends1
How much do you like to text someone you are seeing?Throughout the day · Once or twice a day · Every few days · I’d rather callThroughout the day and Once or twice a day; Once or twice a day and Every few daysDating and Friends1
How would you describe yourself with money?Careful saver · Save some, spend some · Spend on experiences · Still working it outCareful saver and Save some, spend some; Save some, spend some and Spend on experiencesDating1
Who pays on a first date?Split it · Whoever asked pays · Take turns · No preferenceSplit it and Take turns; No preference and Split it; No preference and Whoever asked pays; No preference and Take turnsDating1
Which relationship style fits you?Monogamous · Non-monogamous · Open to either · Still figuring it outOpen to either and Monogamous; Open to either and Non-monogamous; Open to either and Still figuring it outDating3
How tidy is your home?Very tidy · Tidy enough · Lived-in · Creative chaosneighbors on the scaleDating and Friends1
How do you feel about travel?As often as I can · A trip or two a year · Close to home suits me · I’d like to travel moreAs often as I can and I’d like to travel more; As often as I can and A trip or two a year; A trip or two a year and Close to home suits me; A trip or two a year and I’d like to travel moreDating and Friends1
When you disagree with someone close, what do you usually do?Talk it through right away · Take time, then talk · Write it down first · Let small things goTalk it through right away and Take time, then talk; Take time, then talk and Write it down firstDating and Friends1
Early bird or night owl?Early bird · Night owl · In between · Depends on the seasonIn between and Early bird; In between and Night owl; In between and Depends on the seasonDating and Friends1
How soon do you like to meet in person?Within a few days · After a week or two · After a video call first · No rushWithin a few days and After a week or two; After a week or two and After a video call first; After a video call first and No rushDating and Friends1

Every other room: only what both of you have

Outside Dating, most people have no answers, no age and no gender anywhere. So the reading uses only fields both people actually have, one line each, and prints every blank line with its reason. Each line earns 1, ½ or 0; what you share is points divided by the lines you both have.

LineFromEarnsBlank when
TagsThe parsed profile, both people1 if you share a tag beyond the Pool’s own; 0 if notNever: every parsed profile has tags
PlaceThe parsed profile, both people1 for the same town; ½ within 30 miles; 0 fartherWhen either location is missing
LanguagesBoth pages1 if you share one; 0 if notWhen either page has no languages, or the person is read from a separate page
InterestsBoth pages1 if you share one; 0 if notWhen either page has no interests
Answers (Friends only)Both pagesSame answers count 1, close ones ½, divided by the friends questions you both answeredWhen either page has no answers

Safety that travels

The block lists we honor

Both of our Pools subscribe to the same two lists, and every message and request you send is checked against them §7.3.

Kindling public block list

Version 3, published 20 September 2026. The list as JSON.

  • scrapekit/0.3 · implementation · scraping
  • promo-blast@mail.example · identity · spam

The Circular consortium block list

Version 8, published 27 September 2026. The list as JSON.

  • listed-them-anyway@mail.example · curator_identity · consent_violation
  • https://free-friends-now.example/pools/everyone.json · pool_url · consent_violation
  • bulk-intros@relay.example · identity · spam
  • scrapekit/0.3 · implementation · scraping

Honest limits

What the v0.1 schema can’t say yet

Where the spec text and a schema disagree, our JSON follows the schema. These are the gaps that touch an app like ours.

  1. No message for interest. v0.1 has handshake, intro, reply, withdrawal and system messages, and nothing for “I would like to hear from you”. So a yes is app-local: a yes given in Heartwood stays in Heartwood, and yeses made in other apps cannot reach us. A note sent with a yes is an intro, and it goes only if the recipient’s rules allow it.
  2. No message for asking a curator to introduce you. Where a Pool introduces through its curator, Heartwood sends an ordinary intro addressed to the curator, through the Pool. Nothing in v0.1 marks it as a request, or lets the curator answer with a proposal the app can read.
  3. No field for a room. Intent tags are free words, so which room a Pool fits is our reading of its tags. The table above prints that reading, Pool by Pool. A Pool whose tags fit none of our rooms still opens, under its own name.
  4. No field for a verb. A Pool cannot say what a yes in it is for. Where a charter says it (“ask to borrow”, “write a letter”), our yes uses its words; elsewhere it says hello.
  5. No field for pace. Correo Lento’s one letter a week, and its co-op holding every first letter, live in its charter and rules. We honor them by reading the words, because no field carries them.
  6. No way to prove a membership an app cannot read. Midspan Students is invite-only, so no app can know who is in it. A student’s yes to a mentor goes to a coordinator, who checks. Heartwood never asks, and never guesses.
  7. Age, gender, seeking and answers are not in the parsed profile. parsed_profile.schema.json has no fields for them and forbids extra properties. Where a page has them, we read them from the page §2.5. The eighteen questions are a shared convention among the apps, not part of v0.1. Most people outside Dating have none of these, and their cards say so.
  8. Several pages, one person. A person may keep a separate page for one Pool, as Priya Raman and Wes Adeyemi do for mentoring. v0.1 links them only by identity. A card shows the page the person joined that Pool with, and lists other rooms only from that same page.
  9. Compatibility has no standard. What counts as close is our convention, printed here and on every reading. Another app may read the same fields differently, and should say how.
  10. Linked partners. v0.1 cannot say two profiles are partners. A household keeps its own unlisted Pool, with every member as a curator, and a member may link it on their card. Only a curator can vouch, so partners cannot vouch for each other elsewhere.
  11. Four names for levels. §4.5 names email-verified, oauth-verified, curator-vouched and unverified. The schemas use email, oauth, curator-vouched, unverified and cryptographic. Our JSON follows the schemas.
  12. The handshake window. §5.2 says the 14 days are “configurable per Pool”. The manifest has no field for it, so each request carries expires_at, and our governance rules say 14 days.
  13. Extraction provenance. §2.3 names an extraction_source field. The parsed profile schema has none and forbids extra properties.
  14. Six message types, not four. §6.3 lists four types. kindling_message.schema.json has six, adding withdrawal and system. We send withdrawals as withdrawals.
  15. The version field. §12.1 names kindling_version; every schema uses schema_version. Our files follow the schemas.
  16. Noindex is not privacy. kindling_noindex: true keeps a page out of every Pool §2.7. Privacy inside a Pool comes from visibility, which is how Queer Harbor and Intentional Co-Parents stay unlisted.
  17. Thanks after it works. Gratitude after an introduction is a v0.2 draft with no field or message yet. Our support comes once a year, outside the protocol.