Better World

Find high-impact giving paths — lives saved or wellbeing — with citations.

1. Per-outcome leaderboards

Pick one outcome family and load the ranked board from GET /v1/leaderboards?outcome=…. Cost-effectiveness appears only when the API returns verified claims — otherwise shown as null / unverified. Never invents CE.

2. Recommend

Uses the sticky values profile via values_profile_id (plus optional field overrides / budget). Calls GET /v1/recommend — never invents CE; never mixes units. Red-line filters appear in exclusions[] with reasons. Tip: try preset Lives saved — exclude deworming.

Each card shows a room for more funding (RFMF) badge from curated evaluator pages: Has room only when cited; Unknown otherwise. Unknown ≠ no room — we only assert room when a public GiveWell/HLI page is cited. Never invents funding gaps.

2b. Org detail

Load a full org record via GET /v1/orgs/{id} (includes structured room_for_more_funding). Same RFMF honesty rule: Unknown ≠ no room; we only assert room when cited.

3. Compare two

Pick two organization IDs (defaults fill from the last recommendation). Calls GET /v1/compare.

4. Impact estimate for $1,000

Modeled expected outcomes from verified claims only — not guaranteed. Calls GET /v1/impact-estimate.

5. Allocate $10k portfolio

Split a fixed $10,000 across top ranked orgs. Passes values-profile risk / tax (and outcome from the sticky profile when set). Calls GET /v1/portfolio/allocate.

6. Giving Intent (NO charge)

Build a deep-link handoff — Better World does not process payment or call Stripe. Passes values_profile_id from the sticky profile. Calls GET /v1/giving/intent. Non-cash vehicles return grant_recommendation / next_steps / handoff_status; crypto_address is always null (never invent a wallet). donation_proof stays null.

7. Exception review (Ho Hum)

Read-only open queue from GET /v1/review/queue. Approve/reject is offline file edit of data/review/queue.json — no write API. Agents must never auto-clear trust flags. Full notes: ../pages/review-queue.md.

8. Claims browser

Browse the flat claims index via GET /v1/claims (filters: org_id, verified, evaluation_id) and click through to GET /v1/claims/{id}. Values are copied from data/claims_index.json only — never invent CE. Quote numeric CE only when verified is true and value is non-null.

Audit snapshot

Live reproducibility stamp from GET /v1/meta/snapshot (same object as meta.audit_snapshot). Shows which product_version + data_snapshot_id + claims_index_fingerprint this demo is talking to. adr_0007_status is shown as returned (never invented Accepted). Honesty: honesty.md · Decision desk: decision-desk.md.

Loading audit snapshot…