Skip to the letters

Invented example · built on Kindling · Why Kindling · The library · The spec · The Circular

Correo Lentocooperativa de cartas · Oaxaca

How Correo Lento runs on Kindling · v0.1

Under the hood

Every setting we chose and why, the files we publish, the block lists we read, and the places where the spec says more than the v0.1 schemas can carry yet.

Our settings, mapped to the spec

Correo Lento settings
SettingValueSpecWhy we chose it
Consent modeluniversal-opt-in on all four Pools§3.2 §5.1Nobody is listed without a yes. A pen pal who didn’t choose to be here isn’t a pen pal.
Visibilitypublic on all four Pools§3.2Learners find us by word of mouth and through registries. Being findable is the point; writing still needs a yes from both people.
Answer window14 days, the default, carried in each request’s expires_at§5.2Slow mail. Many members read email once a week, and two Sundays is enough time to decide.
Re-parseOn each update, at most once in any 24 hours; an owner can ask for a fresh reading by message§2.6Pages here change rarely. One reading a day keeps the attention on letters, not on parsing.
First lettersno_cold_messages: true, asked of every member in governance_rules§7.2No cold letters. A first letter goes only when both people have said they’d like to write.
Who may writeaccept_from: shared-pool (the spec’s pool-mates-only)§7.2A letter comes from someone in the same Pool, never from outside it.
IdentityMembers verify by email or OAuth; all three curators by OAuth§4.2 §4.3 §4.5Every postmark shows how we know the sender. We vouch for nobody ourselves, so nobody here is curator-vouched.
Block listsKindling public block list and The Circular consortium block list§7.3Two lists catch more than one small co-op would on its own.
MessagesEmail; letters are intro and reply, each with via_pool§6.1 §6.2 §6.3Everyone already has email. A letter is literally an email, and it arrives right away.
LeavingOne action, from any letter or the Pool page; processed within 60 seconds§5.3Leaving should be as easy as saying yes.
Auto-acceptThe co-op sets none; members may set their own§5.5Darío’s one rule accepts bass and sub Pools from OAuth curators. None of ours carry those tags, so his yes here was his own.
CuratorsValeria Ortiz (Español, Français; co-curator of Português), João Batista Lima (Português), Rizal Santos (Tagalog)§3.2 §9.3A co-curator is first in line if a curator goes quiet.
ContinuityAll four Pools active§9.1Ninety days without a curator’s action would make a Pool dormant, and its members would see a notice here.
Discovery.well-known/kindling-pool lists all four§8.3 §10.1Registries and crawlers can find us without asking first.
MoneyPaid classes; letters and introductions are free§1.3The protocol has no chargeable surface between two people, and neither do we.

Four postmarks, always spelled out

Every letter and every profile here carries its sender’s verification level twice: drawn in the postmark and written in words beside the name. §4.5 §7.1

The lettering on the ring is decoration. Screen readers hear the same words as one label.
  • Email verified
    One ring. The sender clicked a link sent to their address.
  • CORREO LENTOSIGNED IN WITH OAUTH28 SEP 2026Signed in with OAuth
    Two rings. The sender signed in with an identity provider.
  • CORREO LENTOVOUCHED BY CURATOR28 SEP 2026Vouched for by the curator
    A ring on a signature line. Good only inside the Pool that vouched.
  • CORREO LENTOUNVERIFIEDUNVERIFIEDUnverified
    A dashed ring in pencil gray. The letter is held, as the spec requires.

Four manifests

Each Pool is one JSON file, valid against pool_manifest.schema.json. Here is each one in readable form, with the file itself one tap away. §3.1

Español and English

pools/espanol-english.json
Charter

Cartas lentas entre quienes aprenden español y quienes aprenden inglés.

Slow letters between Spanish learners and English learners. One letter a week at most, in both languages, corrections welcome.

Curators
Valeria Ortiz valeria@mail.example Signed in with OAuth primary
Intent tags
language-exchangespanishenglishletters
Visibility
public
Consent model
universal-opt-in
Scope
Online
Governance
The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.
Block lists
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
Contact
oficina@correolento.example
Status
active · created 1 Oct 2025 · updated 18 Sep 2026
Entries in Español ↔ English
MemberCityLevelSaid yesPage
Valeria OrtizOaxacaSigned in with OAuth1 Oct 2025, signing in with OAuthvaleria-ortiz.notion.example
Tom BrennanCorkEmail verified14 Oct 2025, the link in the lettertom-brennan.carrd.example
Lucía FerrerValenciaEmail verified2 Nov 2025, the link in the letterlucia-ferrer.notion.example
Darío MéndezPort EllerySigned in with OAuth6 Jun 2026, signing in with OAuthdario-bajo.bandcamp.example
The manifest, as JSON
{
  "schema_version": "0.1",
  "id": "espanol-english",
  "name": "Español ↔ English",
  "curator": [
    {
      "identity": "valeria@mail.example",
      "display_name": "Valeria Ortiz",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "language-exchange",
    "spanish",
    "english",
    "letters"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "oficina@correolento.example",
  "charter": "Cartas lentas entre quienes aprenden español y quienes aprenden inglés. Slow letters between Spanish learners and English learners. One letter a week at most, in both languages, corrections welcome.",
  "geographic_scope": {
    "online": true
  },
  "governance_rules": "The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2025-10-01T15:00:00Z",
  "updated_at": "2026-09-18T16:00:00Z",
  "entries": [
    {
      "profile_url": "https://valeria-ortiz.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://valeria-ortiz.notion.example",
        "display_name": "Valeria Ortiz",
        "pronouns": "she/her",
        "location": {
          "city": "Oaxaca",
          "region": "Oaxaca",
          "country": "Mexico"
        },
        "intent_tags": [
          "language-exchange",
          "curating",
          "spanish",
          "english",
          "letters"
        ],
        "about": "Coordina Correo Lento desde Oaxaca. Teaches the co-op’s paid Spanish classes; the letters are free.",
        "contact_methods": [
          {
            "type": "email",
            "value": "valeria@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2025-10-01T16:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "verified",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2025-10-01T16:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2025-10-01T16:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-espanol-english-valeria",
        "accepted_at": "2025-10-01T16:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2025-10-01T16:00:00Z",
      "added_by": "valeria@mail.example"
    },
    {
      "profile_url": "https://tom-brennan.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://tom-brennan.carrd.example",
        "display_name": "Tom Brennan",
        "pronouns": "he/him",
        "location": {
          "city": "Cork",
          "country": "Ireland"
        },
        "intent_tags": [
          "language-exchange",
          "spanish",
          "letters"
        ],
        "about": "Secondary school chemistry teacher learning Spanish for a sabbatical year. Writes long, slow letters. Escribo cartas largas.",
        "contact_methods": [
          {
            "type": "email",
            "value": "tom@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2025-10-14T20:20:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2025-10-14T20:20:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2025-10-14T20:20:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-espanol-english-tom",
        "accepted_at": "2025-10-14T20:20:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2025-10-14T20:20:00Z",
      "added_by": "valeria@mail.example"
    },
    {
      "profile_url": "https://lucia-ferrer.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://lucia-ferrer.notion.example",
        "display_name": "Lucía Ferrer",
        "pronouns": "she/her",
        "location": {
          "city": "Valencia",
          "country": "Spain"
        },
        "intent_tags": [
          "language-exchange",
          "english",
          "letters",
          "drawing"
        ],
        "about": "Ilustradora. Quiero escribir en inglés sin miedo. I draw in the margins of every letter.",
        "contact_methods": [
          {
            "type": "email",
            "value": "lucia@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2025-11-02T10:15:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2025-11-02T10:15:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2025-11-02T10:15:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-espanol-english-lucia",
        "accepted_at": "2025-11-02T10:15:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2025-11-02T10:15:00Z",
      "added_by": "valeria@mail.example"
    },
    {
      "profile_url": "https://dario-bajo.bandcamp.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://dario-bajo.bandcamp.example",
        "display_name": "Darío Méndez",
        "pronouns": "he/him",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "bass",
          "sub",
          "band",
          "language-exchange",
          "spanish",
          "english",
          "conversation"
        ],
        "about": "Bass player from Veracruz, eleven years in Port Ellery. Subs on short notice. Wants his written English to sound like his spoken English.",
        "contact_methods": [
          {
            "type": "email",
            "value": "dario@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-06-06T21:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email",
          "auto_accept_rules": [
            {
              "intent_tags": [
                "bass",
                "sub"
              ],
              "minimum_curator_verification": "oauth",
              "allowed_visibility": [
                "public"
              ]
            }
          ]
        },
        "kindling_noindex": false,
        "parsed_at": "2026-06-06T21:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-06-06T21:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-espanol-english-dario",
        "accepted_at": "2026-06-06T21:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-06-06T21:00:00Z",
      "added_by": "valeria@mail.example"
    }
  ]
}

Português and English

pools/portugues-english.json
Charter

Cartas lentas entre quem aprende português e quem aprende inglês.

Slow letters between Portuguese and English learners, European or Brazilian, heritage learners especially welcome.

Curators
João Batista Lima joao@mail.example Signed in with OAuth primary
Valeria Ortiz valeria@mail.example Signed in with OAuth
Intent tags
language-exchangeportugueseenglishletters
Visibility
public
Consent model
universal-opt-in
Scope
Online
Governance
The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.
Block lists
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
Contact
oficina@correolento.example
Status
active · created 12 Jan 2026 · updated 8 Sep 2026
Entries in Português ↔ English
MemberCityLevelSaid yesPage
João Batista LimaBelo HorizonteSigned in with OAuth12 Jan 2026, signing in with OAuthjoao-lima.carrd.example
Greta HolmMinneapolisEmail verified20 Jan 2026, the link in the lettergreta-holm.example
Ana Luísa CoutoPortoEmail verified3 Feb 2026, the link in the letteranalu-couto.notion.example
Beatriz NunesPort EllerySigned in with OAuth22 Apr 2026, signing in with OAuthbea-nunes.notion.example
The manifest, as JSON
{
  "schema_version": "0.1",
  "id": "portugues-english",
  "name": "Português ↔ English",
  "curator": [
    {
      "identity": "joao@mail.example",
      "display_name": "João Batista Lima",
      "verification_level": "oauth",
      "primary": true
    },
    {
      "identity": "valeria@mail.example",
      "display_name": "Valeria Ortiz",
      "verification_level": "oauth",
      "primary": false
    }
  ],
  "intent_tags": [
    "language-exchange",
    "portuguese",
    "english",
    "letters"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "oficina@correolento.example",
  "charter": "Cartas lentas entre quem aprende português e quem aprende inglês. Slow letters between Portuguese and English learners, European or Brazilian, heritage learners especially welcome.",
  "geographic_scope": {
    "online": true
  },
  "governance_rules": "The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-01-12T21:00:00Z",
  "updated_at": "2026-09-08T11:00:00Z",
  "entries": [
    {
      "profile_url": "https://joao-lima.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://joao-lima.carrd.example",
        "display_name": "João Batista Lima",
        "pronouns": "he/him",
        "location": {
          "city": "Belo Horizonte",
          "region": "Minas Gerais",
          "country": "Brazil"
        },
        "intent_tags": [
          "language-exchange",
          "english",
          "letters",
          "curating"
        ],
        "about": "Engenheiro de trânsito. I write about buses, football and my mother’s cooking, in English that improves every month.",
        "contact_methods": [
          {
            "type": "email",
            "value": "joao@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-01-12T22:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-01-12T22:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-01-12T22:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-portugues-english-joao",
        "accepted_at": "2026-01-12T22:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-01-12T22:00:00Z",
      "added_by": "joao@mail.example"
    },
    {
      "profile_url": "https://greta-holm.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://greta-holm.example",
        "display_name": "Greta Holm",
        "pronouns": "she/her",
        "location": {
          "city": "Minneapolis",
          "region": "Minnesota",
          "country": "United States"
        },
        "intent_tags": [
          "language-exchange",
          "portuguese",
          "letters"
        ],
        "about": "Hospital pharmacist learning Portuguese because her grandmother never taught her. Aprendendo devagar.",
        "contact_methods": [
          {
            "type": "email",
            "value": "greta@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-01-20T02:30:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-01-20T02:30:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-01-20T02:30:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-portugues-english-greta",
        "accepted_at": "2026-01-20T02:30:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-01-20T02:30:00Z",
      "added_by": "joao@mail.example"
    },
    {
      "profile_url": "https://analu-couto.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://analu-couto.notion.example",
        "display_name": "Ana Luísa Couto",
        "pronouns": "she/her",
        "location": {
          "city": "Porto",
          "country": "Portugal"
        },
        "intent_tags": [
          "language-exchange",
          "english",
          "letters"
        ],
        "about": "Bookbinder. Escrevo à mão e fotografo a carta. Happy to write to heritage learners.",
        "contact_methods": [
          {
            "type": "email",
            "value": "analu@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-02-03T19:45:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-02-03T19:45:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-02-03T19:45:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-portugues-english-analu",
        "accepted_at": "2026-02-03T19:45:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-02-03T19:45:00Z",
      "added_by": "joao@mail.example"
    },
    {
      "profile_url": "https://bea-nunes.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://bea-nunes.notion.example",
        "display_name": "Beatriz Nunes",
        "pronouns": "she/her",
        "location": {
          "city": "Port Ellery",
          "country": "United States"
        },
        "intent_tags": [
          "strings",
          "session",
          "language-exchange",
          "portuguese",
          "english"
        ],
        "about": "Violinist from Coimbra, living in Port Ellery. Plays strings for anyone’s record and writes letters in Portuguese to anyone learning it.",
        "contact_methods": [
          {
            "type": "email",
            "value": "bea@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-04-22T09:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": false,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-04-22T09:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-04-22T09:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-portugues-english-bea",
        "accepted_at": "2026-04-22T09:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-04-22T09:00:00Z",
      "added_by": "joao@mail.example"
    }
  ]
}

Français and English

pools/francais-english.json
Charter

Des lettres lentes entre apprenants du français et de l’anglais.

Slow letters between French and English learners, from Lyon to Accra.

Curators
Valeria Ortiz valeria@mail.example Signed in with OAuth primary
Intent tags
language-exchangefrenchenglishletters
Visibility
public
Consent model
universal-opt-in
Scope
Online
Governance
The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.
Block lists
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
Contact
oficina@correolento.example
Status
active · created 28 Feb 2026 · updated 2 Aug 2026
Entries in Français ↔ English
MemberCityLevelSaid yesPage
Amélie RouxLyonEmail verified1 Mar 2026, the link in the letteramelie-roux.notion.example
Samuel OseiAccraSigned in with OAuth4 Mar 2026, signing in with OAuthsamuel-osei.example
The manifest, as JSON
{
  "schema_version": "0.1",
  "id": "francais-english",
  "name": "Français ↔ English",
  "curator": [
    {
      "identity": "valeria@mail.example",
      "display_name": "Valeria Ortiz",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "language-exchange",
    "french",
    "english",
    "letters"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "oficina@correolento.example",
  "charter": "Des lettres lentes entre apprenants du français et de l’anglais. Slow letters between French and English learners, from Lyon to Accra.",
  "geographic_scope": {
    "online": true
  },
  "governance_rules": "The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-02-28T12:00:00Z",
  "updated_at": "2026-08-02T10:00:00Z",
  "entries": [
    {
      "profile_url": "https://amelie-roux.notion.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://amelie-roux.notion.example",
        "display_name": "Amélie Roux",
        "pronouns": "she/her",
        "location": {
          "city": "Lyon",
          "country": "France"
        },
        "intent_tags": [
          "language-exchange",
          "english",
          "letters"
        ],
        "about": "Sound designer for theater. J’écris en anglais le dimanche. Loves slow correspondence and bad puns in two languages.",
        "contact_methods": [
          {
            "type": "email",
            "value": "amelie@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-03-01T18:00:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-01T18:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-01T18:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-francais-english-amelie",
        "accepted_at": "2026-03-01T18:00:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-03-01T18:00:00Z",
      "added_by": "valeria@mail.example"
    },
    {
      "profile_url": "https://samuel-osei.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://samuel-osei.example",
        "display_name": "Samuel Osei",
        "pronouns": "he/him",
        "location": {
          "city": "Accra",
          "country": "Ghana"
        },
        "intent_tags": [
          "language-exchange",
          "french",
          "letters"
        ],
        "about": "Logistics planner learning French because half his clients speak it. Writes on Sunday evenings.",
        "contact_methods": [
          {
            "type": "email",
            "value": "samuel@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-03-04T20:10:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-03-04T20:10:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-03-04T20:10:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-francais-english-samuel",
        "accepted_at": "2026-03-04T20:10:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-03-04T20:10:00Z",
      "added_by": "valeria@mail.example"
    }
  ]
}

Tagalog and English

pools/tagalog-english.json
Charter

Mabagal na liham para sa mga nag-aaral ng Tagalog.

Slow letters for heritage learners relearning Tagalog, and for teachers in the Philippines who would like to write back in English.

Curators
Rizal Santos rizal@mail.example Signed in with OAuth primary
Intent tags
language-exchangetagalogenglishletters
Visibility
public
Consent model
universal-opt-in
Scope
Online
Governance
The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.
Block lists
https://protocol.kindling.foundation/blocklist.json
https://thecircular.example/blocklist.json
Contact
oficina@correolento.example
Status
active · created 23 Sep 2026 · updated 23 Sep 2026
Entries in Tagalog ↔ English
MemberCityLevelSaid yesPage
Rizal SantosCebu CitySigned in with OAuth23 Sep 2026, signing in with OAuthrizal-santos.example
Carmela DizonDaly CityEmail verified23 Sep 2026, the link in the lettercarmela-dizon.carrd.example
The manifest, as JSON
{
  "schema_version": "0.1",
  "id": "tagalog-english",
  "name": "Tagalog ↔ English",
  "curator": [
    {
      "identity": "rizal@mail.example",
      "display_name": "Rizal Santos",
      "verification_level": "oauth",
      "primary": true
    }
  ],
  "intent_tags": [
    "language-exchange",
    "tagalog",
    "english",
    "letters"
  ],
  "visibility": "public",
  "consent_model": "universal-opt-in",
  "curator_contact": "oficina@correolento.example",
  "charter": "Mabagal na liham para sa mga nag-aaral ng Tagalog. Slow letters for heritage learners relearning Tagalog, and for teachers in the Philippines who would like to write back in English.",
  "geographic_scope": {
    "online": true
  },
  "governance_rules": "The co-op asks members to keep no_cold_messages on, and holds every first letter until both people have said they would like to write, whatever a member’s own setting. The co-op’s paid classes pay for everything; letters are free and always will be.",
  "messaging_preferences": {
    "block_list_subscriptions": [
      "https://protocol.kindling.foundation/blocklist.json",
      "https://thecircular.example/blocklist.json"
    ]
  },
  "status": "active",
  "created_at": "2026-09-23T02:30:00Z",
  "updated_at": "2026-09-23T18:45:00Z",
  "entries": [
    {
      "profile_url": "https://rizal-santos.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://rizal-santos.example",
        "display_name": "Rizal Santos",
        "pronouns": "he/him",
        "location": {
          "city": "Cebu City",
          "region": "Cebu",
          "country": "Philippines"
        },
        "intent_tags": [
          "language-exchange",
          "tagalog",
          "english",
          "letters",
          "curating"
        ],
        "about": "High school teacher. Writes to Filipino-Americans relearning Tagalog, and corrects gently. Dahan-dahan lang.",
        "contact_methods": [
          {
            "type": "email",
            "value": "rizal@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "oauth",
          "verified_at": "2026-09-23T03:00:00Z",
          "verifier": "google"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-23T03:00:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-23T03:00:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-tagalog-english-rizal",
        "accepted_at": "2026-09-23T03:00:00Z",
        "method": "oauth"
      },
      "verification_level": "oauth",
      "added_at": "2026-09-23T03:00:00Z",
      "added_by": "rizal@mail.example"
    },
    {
      "profile_url": "https://carmela-dizon.carrd.example",
      "parsed_profile": {
        "schema_version": "0.1",
        "profile_url": "https://carmela-dizon.carrd.example",
        "display_name": "Carmela Dizon",
        "pronouns": "she/her",
        "location": {
          "city": "Daly City",
          "region": "California",
          "country": "United States"
        },
        "intent_tags": [
          "language-exchange",
          "tagalog",
          "letters"
        ],
        "about": "Heritage learner. Understood every word her lola said and answered in English. Trying to answer in Tagalog now.",
        "contact_methods": [
          {
            "type": "email",
            "value": "carmela@mail.example",
            "label": "Kindling identity"
          }
        ],
        "verification": {
          "level": "email",
          "verified_at": "2026-09-23T18:45:00Z"
        },
        "messaging_preferences": {
          "accept_from": "shared-pool",
          "no_cold_messages": true,
          "minimum_curator_verification": "email"
        },
        "kindling_noindex": false,
        "parsed_at": "2026-09-23T18:45:00Z",
        "parser": "kindling-parser/0.1.1"
      },
      "parsed_at": "2026-09-23T18:45:00Z",
      "consent_proof": {
        "handshake_id": "hs-correo-lento-tagalog-english-carmela",
        "accepted_at": "2026-09-23T18:45:00Z",
        "method": "email-link"
      },
      "verification_level": "email",
      "added_at": "2026-09-23T18:45:00Z",
      "added_by": "rizal@mail.example"
    }
  ]
}

The well-known file

Published at correolento.example/.well-known/kindling-pool, so crawlers and registries can find all four Pools without asking. §8.3 §10.1

.well-known/kindling-pool

Pools in the well-known file
PoolManifestVisibilityStatusUpdated
Español and Englishhttps://correolento.example/pools/espanol-english.jsonpublicactive18 Sep 2026
Português and Englishhttps://correolento.example/pools/portugues-english.jsonpublicactive8 Sep 2026
Français and Englishhttps://correolento.example/pools/francais-english.jsonpublicactive2 Aug 2026
Tagalog and Englishhttps://correolento.example/pools/tagalog-english.jsonpublicactive23 Sep 2026

Operator: Correo Lento, a language-exchange letter co-op · oficina@correolento.example · https://correolento.example

The file, as JSON
{
  "schema_version": "0.1",
  "pools": [
    {
      "manifest_url": "https://correolento.example/pools/espanol-english.json",
      "name": "Español ↔ English",
      "intent_tags": [
        "language-exchange",
        "spanish",
        "english",
        "letters"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "online": true
      },
      "last_updated": "2026-09-18T16:00:00Z"
    },
    {
      "manifest_url": "https://correolento.example/pools/portugues-english.json",
      "name": "Português ↔ English",
      "intent_tags": [
        "language-exchange",
        "portuguese",
        "english",
        "letters"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "online": true
      },
      "last_updated": "2026-09-08T11:00:00Z"
    },
    {
      "manifest_url": "https://correolento.example/pools/francais-english.json",
      "name": "Français ↔ English",
      "intent_tags": [
        "language-exchange",
        "french",
        "english",
        "letters"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "online": true
      },
      "last_updated": "2026-08-02T10:00:00Z"
    },
    {
      "manifest_url": "https://correolento.example/pools/tagalog-english.json",
      "name": "Tagalog ↔ English",
      "intent_tags": [
        "language-exchange",
        "tagalog",
        "english",
        "letters"
      ],
      "visibility": "public",
      "status": "active",
      "geographic_scope": {
        "online": true
      },
      "last_updated": "2026-09-23T18:45:00Z"
    }
  ],
  "operator": {
    "name": "Correo Lento, a language-exchange letter co-op",
    "contact": "oficina@correolento.example",
    "url": "https://correolento.example"
  }
}

Letters are messages

Each file is one envelope, valid against kindling_message.schema.json, and each travels as an ordinary email. The handshake Samuel answers on the letter page is handshake/demo-request.json. §6.2

Message files
FileTypeFromSubjectSent
messages/first-letter.jsonintroAmélie Roux Email verifiedUne première lettre · A first letter8 Mar 2026
messages/reply.jsonreplySamuel Osei Signed in with OAuthRe: Une première lettre · A first letter15 Mar 2026
messages/reparse-request.jsonsystemTom Brennan Email verifiedRead my page again28 Sep 2026

The block lists we read

Every Pool subscribes to both. A letter, a request or a Pool on either list is turned away before anyone sees it. §7.3

Kindling public block list

blocklist.json

The block list the Kindling project will publish under SPEC.md §7.3, for identities and implementations with confirmed abuse. The entries here are illustrative until the registry opens. No personal details are ever published. Version 3, published 20 Sep 2026. Published at https://protocol.kindling.foundation/blocklist.json.

TypeTargetReasonAdded
implementationscrapekit/0.3scraping Ignores kindling-noindex and robots signals.2 Jul 2026
identitypromo-blast@mail.examplespam14 Aug 2026

The Circular consortium block list

circular/blocklist.json

Shared by every member of the Circular consortium. Each member subscribes; any member may propose an entry, and two others must second it. Version 8, published 27 Sep 2026. Published at https://thecircular.example/blocklist.json.

TypeTargetReasonAdded
curator_identitylisted-them-anyway@mail.exampleconsent_violation Submitted other people’s pages, a whole household’s among them, to Pools without asking any of them.27 Sep 2026
pool_urlhttps://free-friends-now.example/pools/everyone.jsonconsent_violation Listed profiles that never accepted a handshake.26 Sep 2026
identitybulk-intros@relay.examplespam3 Sep 2026
implementationscrapekit/0.3scraping Also on the Kindling public list.3 Jul 2026

What the v0.1 schema can’t say yet

Where the spec’s words and the schemas disagree, our JSON follows the schemas. These are the gaps that touch a letter co-op.

  1. The four verification words §4.5

    The spec names email-verified, oauth-verified, curator-vouched and unverified. The schemas say email, oauth, curator-vouched, unverified and cryptographic, and curators may only be email, oauth or cryptographic. Our JSON follows the schemas; our pages spell the level out in words.

  2. Which parts of a profile were inferred §2.3

    The spec asks parsers to record which fields came from h-card and which were inferred, in an extraction_source field. parsed_profile.schema.json has no such field and forbids extra ones, so our member cards can’t show it.

  3. A longer or shorter answer window §5.2

    The spec says the 14-day window is configurable per Pool, but the manifest has no field for it. We use the default, and each request carries its own end in expires_at.

  4. Mutual interest has no message §7.2

    no-cold-messages requires confirmed mutual interest, but no message type or field records an “I’d like to write.” Correo Lento keeps each one on its own server and sends nothing to the other person until both are in.

  5. A Pool can’t require no cold messages §7.2

    The manifest’s messaging_preferences holds only block-list subscriptions and a minimum sender verification. So our rule lives in governance_rules, each member sets no_cold_messages on their own page, and our mail service holds a first letter for everyone until both people have said yes. Three pages in our Pools still say false: Valeria’s, Darío’s and Beatriz’s.

  6. Rule names §7.2

    The spec’s open-to-all, pool-mates-only and vouched-only are the schema’s accept_from values anyone, shared-pool and vouched; no-cold-messages is the boolean no_cold_messages. minimum-sender-verification has no per-profile field; only a Pool can set minimum_sender_verification.

  7. The Pool reference on a message §6.2

    The spec calls it pool_ref. The schema calls it via_pool, with url, id and name. Our letters use via_pool.

  8. Six message types, not four §6.3

    The spec lists handshake-request, handshake-response, intro and reply. The schema adds withdrawal, which we send when someone leaves, and system, which has no defined meaning; we use it for “read my page again.”

  9. Asking for a fresh reading §2.6

    An owner may force a re-parse “through the messaging channel”, but no message type or field says so. Ours is a system message with a plain subject, messages/reparse-request.json.

  10. The version field’s name §12.1

    The spec asks for kindling_version on every document. Every schema calls it schema_version, so ours do too.

  11. What a Pool entry must hold §3.4

    The spec requires parsed_profile and parsed_at in every entry; the schema makes them optional and requires added_at, which the spec doesn’t list. Our entries carry all of them.

  12. The well-known file’s shape §10.2

    The spec lists pool_url and curator_contact for each Pool. The schema has manifest_url per Pool and one operator.contact for the whole domain, which is what ours publishes.