What you can customizeavailable after activation

iSpis is a platform, not a template. Everything below is driven by your own git repository connected in Settings → Custom: a crm.yaml file describes the configuration, an optional service.ts next to it carries your code. After every push we pull the repository, validate it and apply the changes; the hosted server restarts automatically. The reference of the file format is in crm.yaml.

Configuration (crm.yaml, no code)

  • Case categories and states – your own case kinds with ordered states, colours, substates and closed states; built-in categories can be combined with yours.
  • Task kinds (taskVerbs) – what a task on a case can be (analyse, refund, call back, …).
  • Person kinds (personKinds) – which roles a person on a case may have (client, representative, debtor, …).
  • Buttons on cases, files, persons, claims and payments (customActions) – an action your back-end performs, or a download it produces.
  • Template variables (templateCustomVariables) – values pulled from your systems and used as [% Loan.Amount %] in letters and e-mails.
  • Sections on the case card (sections) – blocks rendered by your code, with forms whose submissions go to your server; visibility per category or state is up to you.
  • Events (events) – notifications delivered to your code when a task is finished (more events after activation).
  • Link on the case card (/link) – a deep link into your system for the case.

Code (service.ts)

  • Hosted by us – put a Deno module next to crm.yaml; it runs as a separate process with minimal permissions, starts on first use, stops when idle and restarts after every push. The log is in Settings → Custom.
  • Database access – a PostgreSQL account restricted to your rows (cases, persons, claims, files, screenings, settings), read-write, plus a read-only role for reporting. Row-level security keeps other tenants invisible.
  • SDK – serve({ action, var, section, event, link }) from our custom repository handles routing, authentication and errors; sql is a postgres.js client, html an escaping template tag.
  • Or on your side – point service.url to your own server; iSpis calls the same endpoints with a shared secret.

Around the repository

  • REST API (/api/*) – the same operations as the AI tools: cases, persons, claims, documents, screening, messages. Documentation in the API section.
  • Webhooks – case created, screening finished, inbox message (after activation).
  • AI assistant (MCP) – your users connect ChatGPT, Claude, Gemini or Copilot to their account and work with cases by writing; see MCP tools.
  • Custom front-end – lending companies run their own applicant portal on top of the iSpis back-office; the Loan module reads config.yaml from the same repository.

Rules of the game

  • Custom data on a case or person is key → value (string); structured values go under a key with the JSON suffix.
  • Your rows only: the database role, the API and the hosted server see and change only your data.
  • Invalid crm.yaml is reported in Settings and by e-mail; the last valid configuration stays in use until the next pull.
  • The connection is available after activation – write to us.

Source: src/core/custom/custom.docs.md