# Charity Report Intelligence

A trustees' annual report → a structured due-diligence read.

Grant-makers and giving teams screen charities by reading annual reports by hand. This structures one into finances, governance signals, delivery, flags and a transparency score — with the gaps a funder would ask about named explicitly.

Grant assessors screen charities the slow way: reading trustees' annual reports cover to cover, hunting for the reserves policy, the safeguarding mention, the actual outcomes. This endpoint reads them instead — text, HTML or PDF in; finances, governance signals, delivery, red flags and a transparency score out, with the gaps a funder would probe listed explicitly. Figures come straight from the text; the scoring is a disclaimered, indicative opinion — never invented numbers.

- Price: 4 credits (8 on the free plan)
- Page: https://meetkatalis.com/apis/charity-report
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `POST /api/v1/charity-report` — Body: { text } (report text) or { url } (HTML or PDF report)
- `GET /api/v1/charity-report?url=…` — Structure an HTML or PDF report by URL

## Example response (a real reply)

```json
{
  "source": "https://assets.ctfassets.net/6sxvmndnpn0s/2zjrgIXsyWqobuZhhJe79D/35f9f2ec4230a92c2f39cffb9b6d59c9/Annual_Report_FY2324_FINAL_-_Copy_for_web.pdf",
  "charity": "Shelter",
  "registeredNumber": "263710",
  "financialYear": "2023/24",
  "finances": {
    "income": "£81.33m",
    "expenditure": "£82.65m",
    "reserves": "£7.96m",
    "reservesPolicyStated": true,
    "monthsOfReserves": null
  },
  "governance": {
    "trusteeCount": 8,
    "trusteeChangesNoted": false,
    "conflictsPolicyMentioned": true,
    "safeguardingMentioned": true,
    "riskRegisterMentioned": true
  },
  "delivery": {
    "activitiesSummary": "Helped over 20,000 households through emergency helplines and community services.",
    "beneficiaries": "Households at risk of homelessness",
    "outcomesQuantified": true
  },
  "flags": [
    "Operating deficit of £1.25m reported",
    "Reserves slightly below target level",
    "Significant reliance on donations for income",
    "… 2 more"
  ],
  "strengths": [
    "Increased income by £7.67m from previous year",
    "Established safeguarding manager role",
    "Engaged with over 20,000 households",
    "… 2 more"
  ],
  "transparencyScore": 85,
  "gaps": [],
  "read": {
    "documentChars": 214291,
    "charsRead": 40044,
    "focusedOnSections": true
  }
}
```

## What you'd build with it

- **Grant-round triage.** Structure every applicant's annual report before assessment day — reviewers start from the flags, not from page one.
- **Giving platforms.** Corporate-giving and philanthropy tools vet partner charities' governance automatically.
- **Funder portfolio monitoring.** Re-run each grantee's latest report annually; the transparency score trends tell you where to look.

## Why this one

- **Built for funders.** The exact governance and financial-health questions grant assessors ask, answered from the charity's own reporting.
- **Gaps are the product.** It says what the report DOESN'T show — the due-diligence questions to ask next.
- **Facts extracted, opinion flagged.** Figures come straight from the text; the transparency score is an indicative, disclaimered opinion — never invented numbers.
- **Scales the screening.** Structure a whole grant round's applicants in one pass.

## Conventions

- Auth: `x-api-key: kat_live_…` on every request (free key at https://meetkatalis.com/developers: a verified email and mobile, 100 credits a month, no card).
- One credit balance across every API; each endpoint's price is on its page and in `x-credits` in https://meetkatalis.com/openapi.yaml.
- Keys are camelCase everywhere. A registered company is `company: { name, number, status, statusDetail?, filingsOverdue? }` on the register endpoints; the enrichment family (enrich, score, assess, brand-kit, ai-visibility, tender-match) keeps `business` / `profile` with `companyNumber`.
- Every error has `code` and `requestId`; every reply an `x-request-id` header; a charged reply `x-credits-remaining`; a reply that gave credits back `x-credits-refunded`. Missing = 404 with `query`.
- Burst ceiling 60 requests a minute per key (429, `Retry-After`, no credits used). A failure on our side (5xx) gives the call's credits back.
- Company data contains public sector information licensed under the Open Government Licence v3.0.

Provided "as is"; results come from public sources and, in places, AI, and may be inaccurate or out of date; not legal, professional or credit advice. Terms: https://meetkatalis.com/apis/terms