The problem
Grants that pay on outcomes, not calendars.
Milestone-based grants stall in 3–6 month committee reviews, and 'show progress' reports are easy to pad or fake. Funders default to time-based vesting because outcome verification is too operationally heavy.
How it works
The mechanism
A funder escrows the whole grant up front, split into typed milestone tranches. When a recipient hits a milestone they claim its tranche, and a Somnia agent verifies the public artifact on-chain — releasing the tranche automatically on a passing verdict. Each milestone is typed: Numeric (JSON-API fetchUint vs threshold), Qualitative (Parse-Website ExtractString), GradedQualitative (LLM inferNumber 0–100 paid pro-rata), or MultiMetric (fetchUintArray vs per-metric thresholds); the funder reclaims any unpaid remainder.
Agent pipeline
Who does what
Numeric Verifier
JSON-API fetchUint reads a quantitative metric (e.g. GitHub stars) and checks it meets the threshold.
Qualitative Verifier
Parse-Website ExtractString confirms a narrative artifact exists (a paper on arXiv, a press release).
Graded Verifier
LLM inferNumber scores a milestone 0–100 and releases the tranche pro-rata to the score.
Multi-metric Verifier
fetchUintArray pulls several metrics at once and checks each against its own threshold.
GitHub-stars milestone met (10,369 ≥ 1,000) → tranche Paid, 0.01 STT released to the recipient (reqId 3735636). View GrantVesting on the Shannon explorer ↗
Screens
/dashboard
Center-spine vesting roadmap with milestone nodes alternating left/right, a Gantt release bar colored by tranche status, and wax-seal stamps when a tranche releases.



Run it yourself