# Fit & Approach Assessment

A target + what YOU sell → fit score, real signals, and the angle.

The decisioning layer nobody else offers: tell it what you sell, point it at a UK business, and get back how well they fit, their real observable signals mapped to your offer, a factual approach angle and an opener draft to edit. Grounded in verified data — it will never tell you someone 'will be receptive'; it tells you what's true and why it's relevant.

Everyone sells company data; nobody answers the question that data exists to serve — should I contact this business, and what would I actually say? This endpoint takes a target and a description of what YOU sell, and reasons over the verified profile to produce a fit score, the target's real signals mapped to your offer, and an honest first-touch angle. It will never tell you someone "will be receptive" — unfalsifiable promises are the industry's trust-killer — but it will tell you their accounts are overdue and why that matters if you sell compliance help.

- Price: 25 credits
- Page: https://meetkatalis.com/apis/assess
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `POST /api/v1/assess` — Body: { target: "name or domain", offer: "what you sell + who for" }

## Call it

```bash
curl -X POST -H "x-api-key: $KATALIS_API_KEY" -H "Content-Type: application/json" \
  -d '{"target":"greggs.com","offer":"Commercial deep cleaning for food retailers' kitchens and shops across the UK"}' \
  "https://meetkatalis.com/api/v1/assess"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/assess", {
  method: "POST",
  headers: { "x-api-key": process.env.KATALIS_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({"target":"greggs.com","offer":"Commercial deep cleaning for food retailers' kitchens and shops across the UK"}),
});
if (!res.ok) throw new Error(`Katalis ${res.status}: ${await res.text()}`);
console.log(await res.json());
```

```python
import os, requests

r = requests.post(
    "https://meetkatalis.com/api/v1/assess",
    headers={"x-api-key": os.environ["KATALIS_API_KEY"]},
    json={"target":"greggs.com","offer":"Commercial deep cleaning for food retailers' kitchens and shops across the UK"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

## Example response (a real reply)

```json
{
  "target": { "name": "Example Bakery Ltd", "accuracy": { "score": 92 } },
  "fitScore": 78,
  "fitReasons": ["Independent food retailer — matches your hospitality ICP",
                 "No online ordering visible on their site"],
  "signalsForYou": ["Site has no booking or ordering system — relevant because you build them"],
  "approachAngle": "They take orders by phone only; lead with the missed-order cost, not the tech.",
  "openerDraft": "Noticed you take cake orders by phone — do you lose orders out of hours?",
  "watchOuts": ["Incorporated 22 years — established habits, longer sales cycle"]
}
```

## What you'd build with it

- **Sales tools with a brain.** Add a 'should I chase this?' field to every CRM record — fit score + the factual angle, tuned to what YOUR user sells.
- **Agency prospecting.** Feed in a lead list and your offer; get back ranked targets each with a first-touch angle grounded in real signals.
- **Account prioritisation.** Sort inbound by genuine fit instead of company size — the 8-person firm with overdue accounts might be your best buyer.

## Why this one

- **Decisioning, not just data.** Everyone sells you fields. This answers the actual question — should I contact them, and what do I say?
- **Honest by construction.** Every claim traces to an observable fact (registry, site, filings). It never predicts receptiveness — unfalsifiable promises are the industry's trust-killer, and we don't make them.
- **Tuned to YOUR offer.** The same target scores differently for a web agency and an accountant — because fit depends on what you sell, which is exactly what generic scores ignore.
- **Built on the verified engine.** Runs on the same enrichment with the same accuracy score, so the assessment is anchored to a real Companies House match.

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