Developers

Document collection, as an API.

The same engine your team runs from Claude or ChatGPT, for your own product. Create applications, send upload links, read checked facts with their source pages, and get told the moment a file is complete.

application.complete
{
  "type": "application.complete",
  "application": {
    "id": "app_7Hk2Qe",
    "name": "Mokoena Logistics"
  },
  "requirements": { "met": 4, "total": 4 },
  "facts": [{
    "label": "Average monthly deposits",
    "value": 183200,
    "source": { "document": "doc_91Fx", "page": 3 }
  }],
  "flags": [],
  "pack_url": "https://…/packs/app_7Hk2Qe.zip"
}

Three ways in. One engine.

Use whichever fits. They share the same applications, so your team can work in their assistant while your systems listen for events.

MCP server

For assistants and agents. Connect Claude, ChatGPT or your own agent. Everything your team does in chat, your agent can do too.

See what it can do

REST API

For your product and back office. Create applications from your own onboarding flow, read facts into your models, and download the pack into your system of record.

Start in five minutes

Webhooks

For reacting as things happen. Get a signed event when an applicant uploads, when a check finds something, and when a file is complete.

See the events

Your first application in one call.

Start from a template, add an applicant, and Sigmund sends them their upload link. Everything after that is checked for you.

curl -X POST "$SIGMUND_API_URL/v1/applications" \
  -H "Authorization: Bearer $SIGMUND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mokoena Logistics",
    "template": "sme-lending",
    "applicants": [{
      "name": "Lindiwe Mokoena",
      "email": "lindiwe@example.com",
      "invite": true
    }]
  }'
201 Created
{
  "id": "app_7Hk2Qe",
  "status": "collecting",
  "requirements": [
    { "label": "Bank statements",
      "period": "6 months",
      "status": "outstanding" },
    { "label": "Annual financial statements",
      "status": "outstanding" },
    …
  ],
  "applicants": [{
    "id": "apl_3Ld9",
    "upload_link": "https://…",
    "invited": true
  }]
}
1Get a keyWorkspace-scoped keys, with separate test and live modes.
2Create an applicationFrom a template, or with your own requirements.
3Listen for eventsUploads, issues and completion arrive as webhooks.
4Fetch the packDocuments, facts and the record, in one download.

The MCP server.

What your team does in Claude or ChatGPT works through this server. Point your own agent at it and it can do the same, signed in as the person who connected.

Run applications

Start one from a template or your own list, see what is in, missing or flagged, and close it when you have what you need.

Reach applicants

Add people, send their private links in your own words, ask for something specific, and switch off a link if it goes astray.

Review documents

Read the facts with the page they came from, approve or send back an upload, and correct what a file was matched to.

Reuse what works

Turn a good application into a template, so the next one of its kind starts the same way.

Know the moment something happens.

Every event is signed, retried until you acknowledge it, and safe to receive twice.

  • application.createdA new application exists, from the API or from chat.
  • applicant.link_openedAn applicant opened their upload link.
  • document.uploadedA file arrived and was matched to a requirement.
  • document.issue_foundSomething the applicant can fix, and they’ve been told.
  • review.flag_raisedSomething only a reviewer should see. Never shown to the applicant.
  • requirement.addedA new requirement, often because of something in the documents.
  • application.completeEvery requirement met. The pack is ready.
POST https://your-app.example.com/webhooks/sigmund
Sigmund-Signature: t=1793001200,v1=5f2b…

{
  "type": "document.issue_found",
  "application": { "id": "app_7Hk2Qe" },
  "requirement": "Bank statements",
  "issue": {
    "code": "period_short",
    "detail": "Covers Jul to Sep; 6 months required",
    "applicant_told": true
  }
}

The details you'll ask about.

Authentication

Workspace-scoped API keys for the REST API. OAuth sign-in for MCP clients, so actions run as the person who connected.

Test mode

Separate test keys with sample documents, so you can build against realistic packs without real applicants.

Signed webhooks

Every event carries a signature and timestamp. Retries back off for up to three days.

Idempotency

Send an Idempotency-Key header on any create, and retries never make duplicates.

Pagination

Cursor-based on every list, so long-running jobs never skip or repeat.

SDKs

Official JavaScript and Python libraries, typed.

Build it into your product this week.