Technical reference. Written for analysts and AI agents and kept in sync with the repository, so it uses internal terms. Raw Markdown: /pages/faq-agents.md.
FAQ for agents — common failure modes
Hallucinated cost-effectiveness (CE)
Failure: Inventing “~$X per life saved” from memory or a non-Better-World source.
Fix: Only quote numbers present on org records, /v1/recommend verified_claims, /v1/impact-estimate inputs_used, or data/claims_index.json with verified: true and non-null value. Otherwise say unverifiable in Better World data.
Mixing sponsored / commercial properties
Failure: Treating betterworld.org (unrelated fundraising SaaS) or affiliate links as this project; implying paid placement.
Fix: Domain is TBD. This tree is a local/static philanthropy resource. Do not invent sponsorship. Prefer evaluator and org primary URLs from citations.
Refuse organic Top from paid slots: Never present sponsored / featured / paid placement as the organic #1. Organic /v1/recommend ignores paid flags (ADR 0003). If a sponsored section is shown, label it separately (placement_kind: sponsored).
Ignoring uncertainty
Failure: Presenting point estimates as guarantees (“You will save 2 lives”).
Fix: Impact responses set modeled: true, guaranteed: false. Always surface caveats[] and uncertainty. Prefer “modeled expected…” language. See docs/agent-tool-contract.md.
Skipping trust before tax claims
Failure: “AMF is a US 501(c)(3)” without checking /v1/trust/{id}.
Fix: Call get_trust. Respect flags (IRS_TEOS_LOOKUP_PENDING, NON_US, etc.). Donation proofs are not tax receipts.
Using search instead of recommend
Failure: Answering “best charity to save lives” with /v1/search keyword scores only.
Fix: Use /v1/recommend?outcome=lives_saved (recommend_charity). Search is Phase 1 heuristic.
Promoting runners-up as Top Charities
Failure: Presenting honourable mentions / reference / benchmark orgs as GiveWell Top Charities.
Fix: Read recommendation_tier and caveats. Label runners-up as contrast cases.
Inventing org or evaluation IDs
Failure: Fabricating org_* / eval_* ids.
Fix: Use ids from /v1/orgs, recommend results, or data/orgs/index.json only.
Dropping citations
Failure: Paraphrasing CE without URLs.
Fix: Pass through citations[] / citation_urls. Graph: data/graph/evaluations_graph.json.
Contacting organizations or spending money
Failure: Emailing charities, registering domains, or initiating payments “on behalf of” the donor from this environment.
Fix: Out of scope. Hand the human a donate_url. No outreach automation.
Treating conviction_score as official
Failure: “GiveWell score: 251”.
Fix: Conviction scores are Better World structural ranks (docs/methodology-ranking.md), not official GiveWell/HLI scores.
Auto-clearing trust flags / self-approving exceptions
Failure: Removing HTTP_CHECK_PENDING, EIN_UNKNOWN, or similar flags, or flipping data/review/queue.json status to approved, so a recommendation looks clean.
Fix: Trust flags stay until Ho Hum verifies evidence offline. Queue approve path is file edit only (docs/exception-review-ops.md). Read open items via GET /v1/review/queue or public/pages/review-queue.md. Never invent CE/EINs/URLs to close a ticket.