The open index of web3
funding opportunities.
A canonical RFP object format, a public GraphQL API, signed operation-log provenance, and governance-as-document review. Built on Powerhouse. CC0 schema. AGPL-3.0 code. Shipped as public-goods infrastructure.
Latest RFPs
Grant pools from your connected Switchboard — no placeholder data. Start the RFP Hub switchboard to see what's in the live reactor.
How it works
Six pieces, one hub. Every hard requirement in the Ethereum Foundation's RFP Hub brief maps directly to Powerhouse infrastructure already running in production.
Standard RFP object
A canonical superset of DAOstar DAOIP-5 GrantPool and schema.org/MonetaryGrant, with the process fields RFPs actually need — submitter, verification state, dispute handling. JSON-LD projections are emitted in parallel.
Five export surfaces
Public GraphQL API with search/filter/pagination. Nightly checksummed JSON snapshots. RSS + Atom feeds. Webhooks with retry and dead-letter. Content-addressed mirrors on IPFS + Swarm.
Signed, three-layer dedup
Every operation is Renown-signed and appended to a replayable log. Duplicates are rejected at three layers: deterministic operation IDs, executor idempotency, and domain-key (funder + title, canonical URL) fingerprints.
Governance as document
The publisher allowlist, dispute queue, and schema-evolution RFC process live inside their own Document Model. Policy changes leave the same audit trail as data changes.
CC0 schema, AGPL code
The object format is dedicated to the public domain so any aggregator, competing registry, or traditional funder can adopt it without licensing friction. The reference implementation is strong-copyleft AGPL-3.0.
Federation-ready
Every operator runs the same schema. A single aggregator can consume N RFP Hub instances. Non-Ethereum funders ingest without schema change. Pilot scope is Ethereum; architectural scope is broader.
One contract, five surfaces
Every RFP Hub operator exposes the same schema across GraphQL, snapshot downloads, feeds, webhooks, and content-addressed mirrors. Pick whichever shape your aggregator wants.
# GraphQL — live, filtered, paginated
query OpenRFPs {
rfps(filter: { status: OPEN }, pagination: { limit: 10 }) {
items {
id slug title funder
categories deadline fundingAmount
provenance { verificationStatus sourceHash }
}
nextCursor
total
}
}
# OR pull the full dataset
curl https://rfp-hub.example/snapshots/latest.json
curl https://rfp-hub.example/rss.xml
curl https://rfp-hub.example/rfps/<id>/daoip-5.jsonld
curl https://rfp-hub.example/rfps/<id>/schema-org.jsonld