Social Resource Floor

A floor beneath which no person should fall.

The Social Resource Floor is an open, contracts-first blueprint for a universal structure through which people can access the resources needed for basic survival — grounded in being human, not in financial status.

The floor
food water housing energy healthcare transportation childcare_education emergency monetary community

The idea

Human survival should not depend on financial access.

Today, survival is largely financial: people generally need money, banking, employment, or purchasing power to obtain food, housing, energy, healthcare, and other necessities. This project explores a different starting point.

Access to basic survival resources should be grounded in being human, not in financial status.

This does not mean abolishing money, banking, markets, or the wider financial system. The aim is narrower and more fundamental: financial systems should not be the condition that determines whether a person can access the basic resources required to survive. Money becomes one possible resource or delivery method — not the organizing principle of survival.

What is genuinely new here is not reusability — the same platform deployed separately by many institutions, which existing infrastructure already handles well. It is a shared umbrella that independent providers join: several governments among them, alongside municipalities, cooperatives, community groups, and philanthropy — all under one setup, each still delivering to its own people, coordinated against one common, locally-defined floor. The structure is scale-independent: it works run by a single community provider alone, and grows into a union of many providers without changing shape.

What this is

  • A blueprint expressed as language-neutral JSON Schemas — the normative source of truth.
  • A conformance suite that machine-checks every example against those schemas and their cross-references.
  • A coordination layer that sits above existing social-protection systems, not a replacement for them.
  • Open interfaces first, so any component — database, identity provider, policy engine — can be swapped without lock-in.

What this is not

  • Not yet a deployed, real-world universal social-resource infrastructure.
  • Not a replacement for benefit-delivery platforms like OpenSPP or OpenG2P.
  • Not a single mandatory product, instance, or vendor everyone must connect to.
  • Not blockchain, ledgers, or tokens. Trusted institutions stay at the heart of it.

How it's built

Contracts first. The schemas are the source of truth.

Rather than a single application everyone must run, the project defines the contracts — what a participant must be able to do — and lets anyone implement them. Every part of the repository depends inward toward the schemas. Nothing depends on the reference implementation, which is deliberately non-authoritative.

schemas/ JSON Schema · the normative source of truth · depends on nothing
▲   everything below depends inward on the schemas   ▲
specification/ Prose intent — what each contract means and why. Describes the schemas; never overrides them.
conformance/ A runner and fixtures that validate examples against the schemas and check cross-references.
reference/ A working demo that loads and conforms to the schemas. Proves the contracts run — but is not authoritative.
adapters/ Map an existing system (OpenSPP) to and from the schemas, so it can participate by capability.

The payoff of this direction is that the blueprint can be trusted without trusting any one codebase. Two people can build entirely separate implementations, in different languages, and the schemas, not either program, are the shared reference they both work from.

The core data model

Three nouns, one opaque reference to a person.

A provider publishes resources. An entitlement allocates a resource to a subject and names the provider responsible for fulfilling it. The subject is referenced only through an opaque handle held by an external identity system — so personal data never enters the coordination layer.

PROVIDER
  • id · PK
  • type · gov / ngo / community …
  • jurisdiction
  • delivery_methods []
RESOURCE
  • id · PK
  • type · food / housing …
  • provider_id · FK →
  • quantity · availability
  • delivery_methods []
ENTITLEMENT
  • id · PK
  • resource_id · FK →
  • provider_id · FK →
  • subject_ref · opaque
  • status · delivery
SUBJECT
  • subject_ref
  • held by an external
  • identity system
  • never resolved here
  • never checked

The conformance suite resolves every reference a schema declares, from a resource's provider_id to an event's consent_ref, and checks that linked records agree: an entitlement and the decision behind it concern the same person and the same resource, in the same unit, through a delivery method both sides can operate. subject_ref is deliberately never resolved: it is a pseudonymous handle resolved elsewhere, which keeps personal records out of the floor entirely. It is only ever compared with the records that must agree with it.

Resource types are broad and non-monetary-first

monetary food water housing energy transportation healthcare childcare_education emergency community

An entitlement moves through a defined lifecycle

proposed granted suspended fulfilled revoked expired
A conformance fixture — the same flow for any resource type
// an entitlement, validated against schemas/entitlement/entitlement.schema.json
{
  "id": "ent-food-0001",
  "subject_ref": "subj-opaque-9f2a",   // resolved by an external identity system
  "resource_id": "res-food-parcel-noord",
  "provider_id": "prov-communitykitchen-noord",
  "status": "granted",
  "delivery": { "method": "in_kind" }
}

How it fits

A coordination layer, not a replacement.

The Floor works alongside existing digital public infrastructure — coordinating across providers and resource types through open schemas, events, and adapters, while each underlying system keeps its own mission.

Coordination Provider and resource registries, cross-provider coordination, accountability.
Policy & decisions Locally-defined rules through a pluggable policy interface (binds OpenFisca, CEL, OPA/Rego — invents no new rules language), with a traceable decision record.
Trust: identity, consent, provenance Interfaces that minimize personal data while still enabling coordination — consent recorded append-only, aligned to DPV / ISO 27560.
Integration fabric Open schemas, an event envelope, and capability discovery so systems participate by what they can do.
Existing delivery rails OpenSPP, OpenG2P, OpenCRVS and others keep delivering — the Floor coordinates across them.

Federation, precisely

Not "decentralized" — four separate properties, each held on purpose.

The word decentralized collapses several distinct questions and often gets read as "blockchain." The blueprint keeps the four properties apart, and states plainly which it does and does not adopt.

Authority

Who defines the rules

No single institution governs every deployment. Locally legitimate authority defines a local floor while the structure stays shared.

Operation

Who runs it, and where

Locally deployable. There is no mandatory central instance; a locality, network, or provider runs its own and stays interoperable.

Data

Where information lives

Data-minimizing. Personal records stay with the systems that already hold them; participants exchange only what an interaction requires.

Coordination

How systems communicate

Open, published interfaces any participant can implement. Participation is by capability — no central hub sits in the path of every interaction.

Taken together this is federation — the pattern of email and the web, where no one owns the protocol and anyone can run a participant. It uses no blockchain, ledgers, or tokens, and it does not remove trusted parties: providers, auditors, and operators remain accountable actors in defined roles.

federated locally deployable data-minimizing distributed authority decentralized

Design commitments

The properties that let strangers trust a shared floor.

These are as much a part of the mission as the vision — they are what makes it safe for many independent parties to join one setup.

Contracts over implementations

Open interfaces and schemas, not one mandatory app. The blueprint says what a component must do, never which product must do it.

Zero vendor lock-in

No required database, cloud, identity provider, payment rail, policy engine, or observability platform. Every subsystem is replaceable.

Federated, not centralized

Independent systems interoperate through published interfaces. No single owner of the protocol — and no blockchain.

Locally deployable

Universal structure, local configuration. Every deployment runs to local policy, resources, eligibility, and law.

Data-minimizing by design

Coordination without centralizing personal data. A subject is an opaque handle; records stay where they already live.

Capability-based participation

A provider implements only the roles relevant to it — publish, evaluate, deliver, record — and joins on that basis.

Governance kept out of the software

Who funds the floor, defines it, and settles questions about it are institutional matters. The software supports governance; it doesn't encode one politics.

The finished structure

What's actually built.

The blueprint is complete and machine-verified end to end. Below is the whole shape as it stands in the repository today.

10JSON Schemas
(the contracts)
12specification
documents
144conformance fixtures
passing, 0 failures
2independent
implementations
1OpenSPP
adapter
1pilot rehearsed
end to end
schemas/ provider · resource · entitlement · decision · consent · provenance · events · capability · transparency-report, sharing one set of common definitions, with every rule declared beside the field it governs.
specification/ Prose companions for each contract, plus policy, identity, authorization, interoperability, and extensions.
conformance/ Two runners, Python and Node, that read every rule from the schemas themselves: structural, referential, and semantic layers; every example of an invalid record linked to the exact rule that recognizes it; a sweep that varies each valid fixture in every way its rules describe and shows each change is noticed; every scenario, the pilot among them, checked as one connected whole; and a differential test showing both engines give the same answer on generated inputs beyond the fixtures.
reference/implementation/ A Python + jsonschema implementation of the pilot's whole path, from discovery through consent, decisions, and deliveries to each quarter's public report, checking every record as it arrives, just as a live floor would. Its self-test runs in CI.
implementations/node/ A second, independent Node + ajv implementation of the same path, and a second runner. Replaying every scenario, the two implementations end with identical records and the same public reports.
adapters/openspp/ Maps OpenSPP providers and resources into the floor's contracts, demonstrating capability-based participation.
governance/ A starting governance model and the smallest honest pilot — one municipality, one resource type, consent-gated.
observability/ Three telemetry tiers, and a public transparency report produced by a named disclosure method: every figure about people covers at least ten households, which keeps small groups private, and the records reproduce it exactly.
explorer/ The Blueprint Explorer: the blueprint as diagrams, a map of the contracts, the rehearsed pilot as a timeline, and the Node runner checking every record live in your browser. No login, and nothing leaves the page.

Checked in the open

Two runners. Different languages. Same verdict on every check.

Interoperability is the whole point of a shared floor, so it is shown working rather than described. Two conformance runners, built in different languages on different JSON-Schema engines, run the same contracts over the same examples. A cross-check confirms they agree, line by line, a differential test gives both engines generated inputs beyond the examples, and CI checks what each of the two implementations actually produces.

Reference
Python
+ jsonschema
same
schemas
& fixtures
→ ←
Second implementation
Node
+ ajv
cross-check: OK, both runners agree on all 427 verdicts

Build order

Nine phases, all complete.

Phases are an order, not a calendar: smallest useful thing first, and standing before scale. Every phase now passes its exit criteria.

0

Foundations Done

Contracts-first repository layout, licensing, and the dependency-inward structure established.

1

Core data contracts Done

Provider, resource, and entitlement schemas and specs. Resource publication and discovery pass conformance, including a cross-provider union demonstration.

2

Decision & policy Done

A policy interface that binds existing rules engines rather than inventing one, and a traceable decision record with eligibility folded in as an outcome.

3

Trust: identity, consent, provenance Done

Identity and authorization as interfaces only (subject stays opaque), append-only consent records with supersedes chains, and provenance for who did what, when.

4

Events & interoperability Done

An event envelope and capability discovery, aligned to the G2P Connect precedent — a provider declares which areas it publishes, consumes, or both.

5

Reference implementation & first adapter Done

A self-validating reference implementation and an OpenSPP adapter, both with self-tests running in continuous integration.

6

Observability & transparency Done

Three telemetry tiers, and a public transparency report that is itself a conformant schema, so a published report can carry no subject. Rebuilt in Phase 8 around a named disclosure method, srf-sdc-1.

7

Governance & honest pilot Done

A governance model separating the specification from any deployment, the smallest honest pilot scoped out, and a second independent implementation passing the same suite — the standing-to-propose milestone.

8

Hardening & pilot rehearsal Done

Every rule declared once, in the contracts, and shown to work. The two validation engines brought into full agreement. Room for local needs without a fork. The smallest honest pilot rehearsed end to end, with each implementation checked on its own output. Every event names its publisher, and each publisher works within the roles it declares. And a public report that shares just enough, so every small count stays private, even when figures are set side by side: distinct households, a floor of 10, rounded to 5, one quarter at a time, and derived again from the records in CI.

What comes next

Ship exists. Now: propose, and prove it in the world.

The contracts are done and verified. The remaining work is no longer building the blueprint — it's carrying it into a real setting, carefully and honestly.

Open to contribution

Help sharpen the structure.

The blueprint is complete, machine-checked, and open. That's exactly the point where more minds help: exploring the contracts, building on them, and sharing what you notice. Whether your background is social protection, engineering, policy, or lived experience, there is a way in.

Read & share feedback Start with the README and the specifications, then open an issue wherever a contract could be clearer, more accurate, or more complete.
Build a third implementation Implement the schemas in your language of choice and run it against the conformance suite. Every agreement makes the floor more real.
Bridge a system Write an adapter for OpenG2P, OpenCRVS, or another platform, mapping it to and from the floor's contracts.
Explore the open questions Governance, funding, and authority are open by design. The governance docs are where those conversations live, and your thoughts are welcome there.