Skip to main content
Fini (usefini.com) handles the support side of KYC and onboarding: it reads the customer’s verification status and outstanding requirements from your onboarding or verification system through a User Attribute, explains what’s missing and how to provide it using your Knowledge articles, and makes account changes (address, contact details, plan) through Actions that call your APIs. Identity document review, verification decisions and risk decisions stay with your verification provider and your compliance team; Fini reports the status those systems return and never decides it. Most onboarding contacts are some version of “why isn’t my account verified yet?” or “what do you still need from me?”. Those are answerable precisely when the agent can read the real status, which is what this pattern is built on.

What Fini handles and what it hands to your team

Identity verification and MFA resets work the same way. There is no separate feature to switch on: you build them as Agentic Actions, an Intent Rule plus Attributes and Actions that call your identity, KYC and MFA systems, so a verified customer can complete those steps with the agent instead of waiting for your team. For logged-in users there is also the widget’s signed JWT identity (Widget). See the Customer Identity attribute pattern in Card replacement. Because every step calls your own APIs and verification systems, the decision stays with the system that owns it.

How it works in Fini

Example behavior tree

This tree is an example to adapt. The status values, fields and Actions depend on your onboarding system.
How it runs:
  1. Status questions never write anything. The branch reads the status the attribute fetched for this message and explains it. Because attributes fetch on every message, a customer who comes back after uploading a document gets the current status, not a cached one.
  2. If kyc_status is null (the lookup failed or the customer isn’t found), the status branch fails and the root Fallback moves on. The address branch’s intent Check fails too, so the last Reply asks what the customer needs. To handle “we can’t find your application” explicitly, add a branch for it (a Check on kyc_status Is Null and a Reply that explains the next step or hands off).
  3. The address branch gates on an active account, collects the new address in a validated Form, and calls your API. Your API, not Fini, decides whether the change triggers re-verification, and the Reply reports it.
  4. If Update Address fails, the address branch fails and the Fallback moves on to the last Reply; nothing confirms a change that didn’t happen. To hand off instead, wrap the Tool and its Reply in a Fallback whose second child is a handoff Reply telling the customer a teammate will follow up.
Reply Rules evaluate before any Intent Rule. High-risk accounts are held by No Reply (no tree runs) or Internal Comment. Under Internal Comment the tree, including its Tools, still runs and the reply becomes an internal note, so gate the Tool itself with a Check for changes that must not happen automatically (see below).

What you need

Keep document submission in your verification flow. Point customers to the upload step in your app or your verification provider’s flow rather than asking them to send identity documents in chat. That keeps document handling inside the system that reviews it and out of support transcripts. Fini automatically masks sensitive data, including card numbers and health details, everywhere it stores conversation data (transcripts, Inbox and AI Steps traces). Fields you hide from the AI are also redacted in AI Steps; Guardrails remain an extra layer on what the agent sends. See Data handling.

Guardrails and escalation

Contact-detail changes are a common account-takeover path, so treat them as high-risk operations.

What to measure

Scope Analytics with the Tags filter (your verification and account-change tags) or the Intent rule filter.

Card replacement

Fintech walkthrough with chained attributes, a validated Form, a risk gate and the identity verification note for unauthenticated channels.

Order status and changes

Step-by-step build of a Fallback-rooted rule with a status branch and a Form-based change branch.

Attributes

Sources, chained Data Collection Steps, and the Use in Rulebooks and Visible to AI switches.

Guardrails

Confidential attributes, URL allowlist and custom reply checks.

Widget

Identify logged-in users with a signed JWT.

Escalation and handoff

Where escalated onboarding conversations land and what your team sees.