# Modern Slavery Statement Intelligence

A company's Modern Slavery statement → structured, quality-scored JSON.

Turn a free-text UK Modern Slavery Act statement into structured data: the six recommended areas, the mandatory board sign-off, KPIs, and a 0–100 quality score with the specific gaps. The scoring that ESG and procurement teams do by hand, as one call.

Thousands of UK companies publish Modern Slavery Act statements; procurement and ESG teams read them by hand, one PDF at a time. This endpoint does that reading: feed it a statement (text, HTML page or PDF) and get back the six recommended areas each scored with a note, the mandatory board sign-off check, and an overall quality score with the specific gaps named. It extracts facts and returns our own analysis — never republishing the statement itself — and every score is flagged as the indicative opinion it is.

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

## Endpoints

- `POST /api/v1/modern-slavery` — Body: { text } (statement text) or { url } (HTML or PDF statement)
- `GET /api/v1/modern-slavery?url=…` — Score an HTML or PDF statement by URL

## Call it

```bash
curl -H "x-api-key: $KATALIS_API_KEY" \
  "https://meetkatalis.com/api/v1/modern-slavery?url=https://downloads.modern-slavery-statement-registry.service.gov.uk/pdf-published/7ErQBdf1/2025/Modern%20Slavery%20Statement.pdf"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/modern-slavery?url=https://downloads.modern-slavery-statement-registry.service.gov.uk/pdf-published/7ErQBdf1/2025/Modern%20Slavery%20Statement.pdf", {
  headers: { "x-api-key": process.env.KATALIS_API_KEY },
});
if (!res.ok) throw new Error(`Katalis ${res.status}: ${await res.text()}`);
console.log(await res.json());
```

```python
import os, requests

r = requests.get(
    "https://meetkatalis.com/api/v1/modern-slavery?url=https://downloads.modern-slavery-statement-registry.service.gov.uk/pdf-published/7ErQBdf1/2025/Modern%20Slavery%20Statement.pdf",
    headers={"x-api-key": os.environ["KATALIS_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

## Example response (a real reply)

```json
{
  "source": "https://downloads.modern-slavery-statement-registry.service.gov.uk/pdf-published/7ErQBdf1/2025/Modern Slavery Statement.pdf",
  "company": "Gregory Group",
  "financialYear": "28 September 2024",
  "compliance": {
    "boardApproved": true,
    "signedByDirector": null,
    "meetsS54Signoff": false
  },
  "areas": {
    "structureSupplyChain": {
      "present": true,
      "score": 8,
      "note": "Describes group structure and limited overseas suppliers."
    },
    "policies": {
      "present": true,
      "score": 9,
      "note": "Lists multiple relevant policies and procedures."
    },
    "dueDiligence": {
      "present": true,
      "score": 7,
      "note": "Mentions engagement with suppliers on compliance."
    },
    "riskAssessment": {
      "present": true,
      "score": 6,
      "note": "Regular reviews by Risk and Internal Audit Committee."
    },
    "kpisEffectiveness": {
      "present": false,
      "score": 0,
      "note": "No measurable KPIs mentioned."
    },
    "training": {
      "present": true,
      "score": 7,
      "note": "Training and awareness campaigns are provided."
    }
  },
  "overallQualityScore": 62,
  "gaps": [
    "No measurable KPIs for effectiveness.",
    "No named signatory from a director."
  ],
  "read": {
    "documentChars": 5028,
    "charsRead": 5028,
    "focusedOnSections": false
  }
}
```

## What you'd build with it

- **Supplier onboarding gates.** Procurement portals score every new supplier's statement automatically — flag the boilerplate before contracts sign.
- **ESG platform screening.** Score an entire portfolio's statements in one pass; the gaps list becomes each company's engagement agenda.
- **Pre-audit triage.** Consultancies structure hundreds of statements first, and spend human hours only where the score says to.

## Why this one

- **The AI is the product.** Nobody sells structured scoring over the published statements. It reads the free text and grades it against the Act's six areas.
- **Facts + analysis, not resale.** We extract facts and return our own analysis — never republishing the company's copyrighted statement. Scores are an indicative opinion, always disclaimered.
- **Consistent + explainable.** Every score cites what's present or missing, so a procurement or ESG team can defend the number.
- **Scale the manual review.** Screen a whole supplier list's public statements in one pass instead of reading each by hand.

## 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