--- name: sumsub-analyze-regulation description: Analyze a regulation document (PDF or text) and produce a Sumsub configuration plan — mapping regulatory requirements to Sumsub entities (levels, questionnaires, PoA presets, TM rules, workflows, AML resolution rules). TRIGGER when the user provides a regulation PDF, legal act, or compliance requirement document and wants to know what to configure in Sumsub. Acts as the entry point before invoking sumsub-create-level, sumsub-create-questionnaire, sumsub-create-poa-preset, sumsub-create-workflow, sumsub-create-aml-resolution-rules, and other skills. SKIP for direct entity creation requests (no regulatory context) or Sumsub API calls. allowed-tools: Read --- # Sumsub — Analyze Regulation Reads a regulation document and produces a structured Sumsub configuration plan — mapping each regulatory requirement to the Sumsub entities that satisfy it, with a clear split between what can be configured **now via skills** and what requires the **Sumsub Dashboard**. This is a **planning skill only**. It produces a text description, never JSON payloads or API calls. ## Workflow ### Step 1 — Gather context Before analyzing, collect: - **Jurisdiction** — if the document covers multiple countries or is ambiguous, ask explicitly: _"This regulation covers [list of countries]. Which jurisdiction should the plan focus on?"_ Do not generate a plan for all jurisdictions simultaneously without a direct request to do so. - **Business type** — crypto exchange, neobank, iGaming, fintech, or other. Ask if not clear from the document. - **Client types** — individuals, companies, or both. - **Existing Sumsub setup** — has the user already configured anything? Avoid suggesting duplicates. ### Step 2 — Analyze (think before responding) Use extended thinking before formulating the response. Extract from the document: - Customer identification requirements (who must be identified, what data is required) - Acceptable identity documents (national ID, passport, tax number, etc.) - Address verification requirements (what documents are accepted, maximum age) - Enhanced Due Diligence conditions (what triggers EDD) - Source of funds / wealth / PEP data collection requirements - AML screening obligations (PEP / sanctions / adverse media) and how screening hits must be handled (false-positive clearing, PEP review policy, escalation of confirmed matches) - Transaction monitoring requirements (thresholds, suspicious patterns, crypto Travel Rule) - Periodic re-KYC obligations (how often customers must be re-verified) - What is **out of scope for Sumsub** (data retention timelines, regulatory reporting, sanctions list maintenance) ### Step 3 — Validate understanding first After analysis, present a short **"My Understanding"** block — bullet points of extracted requirements — and ask: _"Have I understood the key requirements correctly? Anything to add or correct?"_ **Do not generate the full plan until the user confirms.** This is mandatory. ### Step 4 — Generate the plan Only after user confirmation, produce the full configuration plan using the [output format](#output-format) below. --- ## Sumsub Capability Map ### A. Verification Levels — `sumsub-create-level` Defines the sequence of verification steps an applicant must complete. Each step is a `docSet`. **Available docSet types:** | Type | Purpose | |---|---| | `IDENTITY` | Document verification: PASSPORT, ID_CARD, DRIVERS, RESIDENCE_PERMIT, VOTER_ID, etc. Can be restricted by issuing country. | | `SELFIE` / `SELFIE2` | Biometrics and liveness. | | `APPLICANT_DATA` | Personal data collection: full name, date of birth, address, nationality, tax number (TIN/CPF/CNPJ/etc.). | | `PROOF_OF_RESIDENCE` / `PROOF_OF_RESIDENCE2` | Address document verification. References a PoA preset by `poaStepSettingsId`. | | `PHONE_VERIFICATION` / `EMAIL_VERIFICATION` | Contact verification via OTP. | | `QUESTIONNAIRE` / `QUESTIONNAIRE2–4` | Custom form. References a questionnaire definition by `questionnaireDefId`. | | `E_KYC` | Non-document electronic verification against external databases. See [E-KYC section](#e-kyc-non-document-electronic-verification). | | `DEVICE_CHECK` | Device intelligence and fingerprinting. Requires `DEVICE_INTELLIGENCE` license. | | `COMPANY` | KYB: company info collection. | | `COMPANY_DATA` | KYB: company data fields. | | `COMPANY_DOCUMENTS` | KYB: corporate documents upload. | | `COMPANY_BENEFICIARIES` | KYB: UBOs and representatives verification. | | `ACCREDITED_INVESTOR` | Accredited investor qualification. | | `E_SIGN` | Electronic signature capture. | | `TR_RECIPIENT_INFORMATION` | Travel Rule recipient data collection. | **Level properties:** - `applicantType`: `individual` or `company` - `requiredIdDocs`: the ordered list of docSets + optional `includedCountries` / `excludedCountries` - `disableWatchlists`: set to `true` if tenant has `WATCHLISTS` entitlement but needs to disable AML Screening for a particular level - `crossCheckPresetId`: cross-check preset for AML screening #### IDENTITY — document type codes Sumsub uses generic `IdDocType` values regardless of what the document is locally called. Map the regulation's document names to these types: | Generic document class | Sumsub `IdDocType` | |---|---| | International / biometric passport | `PASSPORT` | | National identity card (any country) | `ID_CARD` | | Driver's licence | `DRIVERS` | | Residence / immigration permit | `RESIDENCE_PERMIT` | | Voter ID | `VOTER_ID` | | Documents with no dedicated Sumsub type (e.g. tax cards, social security cards) | `OTHER_DOCS` | `includedCountries` / `excludedCountries` use ISO-3166 alpha-3 (e.g. `BRA`, `USA`, `DEU`). Two-sided capture should be specified whenever a mandatory identifier (tax number, national number) appears on the back of the document. #### SELFIE — liveness options (`videoRequired`) | Value | Description | Use when | |---|---|---| | `passiveLiveness` | **Default.** Advanced passive liveness, no movement required. | Standard KYC — no stricter regulatory mandate. | | `activeLiveness` | Active motion challenge (head movement detection). | Regulation explicitly requires active/dynamic liveness. | | `enabled` | Short video — applicant pronounces displayed digits. | Regulation requires video identity check. | | `photoRequired` | Photo-only selfie, no liveness. | Use only when explicitly requested; generally insufficient for AML compliance. | | `staticLiveness` | Single-frame analysis. | Use only when explicitly requested. | For most AML/KYC regulations without a specific liveness requirement, default to `passiveLiveness`. #### APPLICANT_DATA — common field names Standard personal-data fields: | Field name | Meaning | |---|---| | `firstName` | First / given name | | `lastName` | Last / family name | | `dob` | Date of birth | | `country` | Country of residence (ISO-3166 alpha-3) | | `town` | City / town | | `street` | Street address | | `postCode` | Postal / ZIP code | | `nationality` | Nationality (ISO-3166 alpha-3) | | `placeOfBirth` | Place of birth | | `tin` | Tax identification number (TIN, CPF, SSN, BSN, etc.) | When a regulation mandates collection of a national tax or identity number, map it to `tin` and mark it `required: true`. #### DEVICE_CHECK — what it detects When `DEVICE_INTELLIGENCE` license is active, this step flags: emulators, rooted/jailbroken devices, VPN/proxy/Tor connections, remote-desktop software, and crypto-mixer tools. Always note in the plan that this step silently falls back to disabled if the tenant lacks the entitlement — add a GET-back verification step. ### B. Questionnaires — `sumsub-create-questionnaire` Custom forms for collecting applicant data not captured by document checks. **Common use cases:** source of funds, source of wealth, employment, PEP self-declaration, trading experience, risk profile. **Question types:** `text`, `textArea`, `date`, `dateTime`, `bool`, `select`, `selectDropdown`, `multiSelect`, `phone`, `countrySelect`, `countryMultiSelect`, `fileAttachment`, `multiFileAttachments`. **Conditional logic:** sections and items can be shown/hidden based on previous answers. **Risk scoring:** each answer option can carry a `score` (0–100); scores sum automatically and can be referenced in downstream transaction monitoring rules. **One questionnaire per level.** Group distinct topics (source of funds, PEP self-declaration, risk profile…) as separate **sections within a single questionnaire** — not as separate questionnaires. Default to one `QUESTIONNAIRE` step per level. A *separate* level legitimately gets its own questionnaire (e.g. an EDD level with an extended questionnaire) — that is still one-per-level, not an exception. Only plan multiple questionnaires on the *same* level if the user explicitly asks for it. ### C. Proof of Address Presets — `sumsub-create-poa-preset` Reusable configuration for what documents are accepted as proof of address. **Document categories:** - `governmentOrganization` — government-issued (voter registration, tax bill, etc.) - `utilityProvider` — utility bills - `bank` — bank statements and letters - `mobileOperator` — telecom bills - `other` **Key settings:** - `maxMonths` per category — maximum document age - **Cross-validation:** name/address comparison between identity document (POI) and address document (POA) — fuzzy or strict mode - **PoI-as-PoA:** accept the identity document itself as proof of address - **Neobank blocklist:** exclude documents from specific institutions (Revolut, N26, Wise, etc.) - **Country-specific overrides:** different rules per country ### D. E-KYC (Non-Document Electronic Verification) **⚠️ Requires separate activation per country through a Sumsub Customer Success Manager (CSM). License: `E_KYC_TARGET`.** Configured via `sumsub-create-level` once activated. **How it works:** the applicant submits unique identifiers (TIN, document number, bank login) which are validated against external databases — no document photo required. **Two configuration modes:** 1. **Standalone `E_KYC` docSet** — electronic verification only; applicant cannot upload documents instead 2. **`IDENTITY` with `ekycAllowed: true`** — applicant chooses: upload document photo OR complete E-KYC **Available database types:** `GOVERNMENT` (national registries), `CREDIT` (credit bureaus), `TELCO` (telecom providers), `BANKING`, `COMMERCIAL` (business registries), `CONSUMER`, `UTILITY`, `POSTAL`, `PROPRIETARY`. **Verification methods:** `ENRICHMENT`, `ONE_X_ONE_MATCHING`, `TWO_X_TWO_MATCHING`, `VALIDITY_CHECK`. **Configuration rules:** - Country coverage depends entirely on client's license activations — there is no universal list - Recommended to pair with a `SELFIE` step for biometric verification against database records **Activation steps:** (1) contact CSM to request per-country activation, (2) run `sumsub-create-level`. ### E. Transaction Monitoring — `sumsub-create-kyt-rules` **⚠️ Requires `KYT` license** (and `TRAVEL_RULE` for crypto, `TM_SCHEDULED_EVENTS` for periodic re-KYC, `KYT_ANTI_FRAUD` for platform events). Describes what to configure at plan time in plain language. `sumsub-create-kyt-rules` translates each rule into a `conditionEl` SumScript expression and POSTs it to the API. New rules always start in test mode (`dryRun: true`) — activating them requires the dashboard. **Transaction types:** - `finance` — financial transactions (fiat and crypto) - `travelRule` — crypto transactions subject to Travel Rule (FATF / VASP) - `kyc` — KYC-related events - `userPlatformEvent` — login, signup, password reset, 2FA changes - `scheduledEvent` — periodic triggers (requires `TM_SCHEDULED_EVENTS` license) **Rule anatomy:** - **Condition** — trigger (e.g., "incoming crypto transaction > $10,000") - **Action:** `score` (add risk points), `onHold` (freeze transaction), `awaitUser` (request confirmation), `reject` (block) - **Risk score** (0–100) — cumulative; multiple rules sum their scores - **Applicant change** — move applicant to another level, trigger final rejection, or route to manual review - **Case creation** — auto-create a compliance investigation case on rule match **Automated pre-scoring enrichments** (active for licensed tenants): - AML watchlists (PEP, sanctions, adverse media) - Crypto screening: Chainalysis, Elliptic, TRM Labs, Merkle Science, Crystal - Travel Rule processing - Device intelligence and fingerprinting - BIN lookup and payment method analytics **Periodic Re-KYC (Scheduled Rules):** - Trigger: applicants on level X for N days → reassign to a new level (triggers re-verification) - Requires `TM_SCHEDULED_EVENTS` license **Required licenses for TM features:** `KYT`, `TRAVEL_RULE`, `TM_SCHEDULED_EVENTS`, `KYT_ANTI_FRAUD`, `DEVICE_INTELLIGENCE`. ### F. Workflows — `sumsub-create-workflow` Graph-based routing logic: determines which level an applicant goes through next based on conditions. **Node types:** `applicantLevel` (run a level), `exclusiveChoice` (condition branch), `manualReview`, `finalRejection`, `actions` (tags, notes, source-key changes). **Edge conditions:** by applicant country, number of attempts, review decision (approved / rejected / resubmission), custom expressions. Use when regulation requires risk-based routing (standard KYC for low-risk, EDD for high-risk), re-verification flows, or multi-stage onboarding. ### G. AML Resolution Rules — `sumsub-create-aml-resolution-rules` The **AML Resolution Rule Chain**: an ordered list of rules that auto-review AML screening hits. Each rule selects hits by condition (vendor match types, name/DoB compatibility, risk labels, previous reviews) and sets the hit's review — match status (`false_positive` / `potential_match` / `true_positive`), risk level, whitelisted flag, note — and/or tags the applicant. Use when the regulation permits or requires systematic hit disposition: auto-clearing false positives, carrying over prior review decisions, PEP out-of-office handling, or flagging nuanced cases for routing. **Relationship to other entities:** the screening runs on an applicant level when the tenant has `WATCHLISTS` entitlement and the level doesn't set `disableWatchlists: true`; the rule chain governs what happens to the AML matches it produces. Rule tags are common applicant tags and surface in workflow conditions as `checks.personWatchlist.tags` / `checks.companyWatchlist.tags` — e.g. a rule tags `youngPep`, a workflow routes those applicants to manual review. Requires an AI-purpose App Token and tenant enablement (the skill detects and reports if the API is unavailable). ### H. Transaction Submission — `sumsub-create-transaction` Sends transaction data to Sumsub's KYT monitoring system. Distinct from TM Rules: - This skill handles **data submission** (what transaction data to send) - TM Rules define **what to do** with that data (configured in the Dashboard) Covers: finance transactions, Travel Rule (crypto counterparty data), platform events (login/signup). --- ## Analysis Framework | Regulation requirement | Sumsub entity | Skill / action | |---|---|---| | Identify the customer (name, DOB, nationality) | `APPLICANT_DATA` + `IDENTITY` | `sumsub-create-level` | | Document verification (passport, national ID) | `IDENTITY` (types, issuing countries) | `sumsub-create-level` | | Biometrics / liveness check | `SELFIE` (passiveLiveness / activeLiveness) | `sumsub-create-level` | | Address verification | `PROOF_OF_RESIDENCE` + PoA preset | `sumsub-create-level` + `sumsub-create-poa-preset` | | Tax number collection (TIN, CPF, CNPJ, SSN…) | `APPLICANT_DATA` (fields) or E-KYC | `sumsub-create-level` | | Source of funds / source of wealth | `QUESTIONNAIRE` (SOF/SOW section) | `sumsub-create-questionnaire` | | PEP self-declaration | `QUESTIONNAIRE` + AML `watchListCheckSettings` | `sumsub-create-questionnaire` + `sumsub-create-level` | | Enhanced Due Diligence (EDD) | Separate EDD level + extended questionnaire | `sumsub-create-level` + `sumsub-create-questionnaire` | | PoA document age limit | PoA preset `maxMonths` per category | `sumsub-create-poa-preset` | | Electronic / non-document verification | `E_KYC` docSet | `sumsub-create-level` *(CSM activation required)* | | KYB — company verification | `COMPANY` / `COMPANY_DATA` / `COMPANY_BENEFICIARIES` | `sumsub-create-level` | | Risk-based routing (standard vs EDD) | Workflow with `exclusiveChoice` | `sumsub-create-workflow` | | Auto-review of AML screening hits (false-positive clearing, PEP rules) | AML Resolution Rule Chain | `sumsub-create-aml-resolution-rules` | | Screening-driven routing (e.g. flagged PEP → manual review) | AML rule tag + workflow condition on `checks.personWatchlist.tags` | `sumsub-create-aml-resolution-rules` + `sumsub-create-workflow` | | Transaction monitoring (thresholds, patterns) | KYT rules | `sumsub-create-kyt-rules` *(requires `KYT` license)* | | Crypto Travel Rule | `travelRule` transaction type + KYT rules | `sumsub-create-kyt-rules` *(requires `TRAVEL_RULE` license)* | | Periodic re-KYC obligation | TM Scheduled rule `byLevelName` | `sumsub-create-kyt-rules` *(requires `TM_SCHEDULED_EVENTS` license)* | | Compliance case management | TM rule `caseAction` | `sumsub-create-kyt-rules` | | Transaction data submission | KYT submission | `sumsub-create-transaction` | | Device check / fraud prevention | `DEVICE_CHECK` docSet | `sumsub-create-level` *(requires DEVICE_INTELLIGENCE license)* | | WebSDK / front-end onboarding flow | WebSDK integration | `sumsub-integrate-websdk` | --- ## Output Format Produce the plan as a structured markdown document with two clearly separated sections. **Critical:** use actual Sumsub enum values and field names throughout — not prose descriptions. Every step must show the concrete parameters that will go into the API call. ``` # Sumsub Configuration Plan: [Regulation Name] — [Jurisdiction] ## My Understanding - [Bullet: key requirement 1 from regulation] - [Bullet: key requirement 2] - … [Ask for confirmation here before generating the rest] --- ## ✅ Configure via Skills (available now) ### 1. Verification Level(s) #### Level: [name] — [purpose, e.g. "standard KYC"] - `applicantType`: individual | company - Steps (in order): 1. `APPLICANT_DATA` - `fields`: `[firstName, lastName, dob, country, town, street, postCode]` - Tax identifier: `tin` — `required: true` _(Art. N — CPF mandatory for identification)_ 2. `IDENTITY` - `docTypes`: `[PASSPORT, ID_CARD, DRIVERS]` - `includedCountries`: `[BRA]` _(ISO-3166 alpha-3, or omit for all countries)_ - Two-sided capture: yes — `ID_CARD` and `DRIVERS` carry CPF on the reverse _(Art. N)_ - Regulation reference: Art. N 3. `SELFIE` - `videoRequired`: `passiveLiveness` _(default; change to `activeLiveness` if regulation requires motion challenge)_ - Regulation reference: Art. N 4. `QUESTIONNAIRE` — `questionnaireDefId`: `[questionnaire-slug]` _(defined in section 2 below)_ 5. `PROOF_OF_RESIDENCE` — `poaPresetId`: `[preset-id]` _(defined in section 3 below)_ 6. `DEVICE_CHECK` — ⚠️ requires `DEVICE_INTELLIGENCE` license _(Art. N — emulators, VPN/Tor, rooted devices)_ - AML watchlist screening: requires the **`WATCHLISTS` tenant entitlement**; when present it is **on by default** — nothing to set _(Art. N — PEP/sanctions screening mandatory)_. If the tenant lacks `WATCHLISTS`, flag it as a blocking entitlement (CSM must enable it). Only note `disableWatchlists: false` if you want to be explicit; pick a provider with `watchListCheckSettings.amlCaseType` only if the regulation/tenant demands a specific one (tenant-gated). - Countries in scope: `includedCountries: [XXX]` | all countries → Next: `sumsub-create-level` #### Level: [name] — [e.g. "enhanced due diligence"] - (same structure — add extra steps or stricter liveness as required) → Next: `sumsub-create-level` ### 2. Questionnaire(s) #### Questionnaire: `[id-slug]` — [purpose, e.g. "Risk Profile & Compliance"] - Sections: - `[section-id]` — [Section name, e.g. "Virtual Asset Experience"] - `[item-id]`: "[Question text]" — `type: select` — `required: true` Options: `[["novice","No experience"],["intermediate","Some experience"],["expert","Expert"]]` - `[item-id]`: "[Question text, e.g. risk acknowledgement]" — `type: bool` — `required: true` _(Art. N — client must confirm trades outside risk profile)_ - `[section-id]` — [Section name, e.g. "Source of Funds"] - `[item-id]`: "[Question text]" — `type: select` — `required: true` Options: `[["employment","Employment/Salary"],["business","Business income"],["savings","Savings"],["investment","Investment returns"],["other","Other"]]` - `[item-id]`: "Specify other source" — `type: text` — condition: `[section-id].[item-id] = other` → Next: `sumsub-create-questionnaire` ### 3. Proof of Address Preset - Accepted categories and max document age: - `governmentOrganization` — [N] months _(Art. N)_ - `bank` — [N] months - `utilityProvider` — [N] months - `mobileOperator` — [N] months - Cross-validation: enabled | disabled — _(name/address match between POI and POA)_ - POI-as-POA: yes | no - Country overrides: [ISO-3 code — category/maxMonths changes, if any] → Next: `sumsub-create-poa-preset` ### 4. Workflow - [Description of routing: standard KYC → if high-risk → EDD → manual review] - Conditions: [by country / by questionnaire score / etc.] → Next: `sumsub-create-workflow` ### 5. AML Resolution Rules (AML Resolution Rule Chain) [Include only if the regulation addresses AML hit handling] - Rule: [name] — [plain language: which hits → what review/tag] e.g. "Hits whose name and date of birth both mismatch the applicant → false positive" e.g. "PEP hits under age 30 → tag `youngPep`" _(routed by the workflow in section 4)_ - Rule order: [decisive rules first, broad clean-up rules last] - Regulation reference: Art. N → Next: `sumsub-create-aml-resolution-rules` ### 6. Transaction Data Submission (KYT) - Transaction types to instrument: `finance` | `travelRule` | `userPlatformEvent` - Required fields per transaction: [counterparty name, wallet address, etc.] — _(Art. N)_ → Next: `sumsub-create-transaction` ### 6. Transaction Monitoring Rules [Only include if regulation requires transaction monitoring. Requires `KYT` license.] #### Rule: [name] - `types`: `finance` | `travelRule` | `kyc` | `userPlatformEvent` | `scheduledEvent` - Trigger: [plain language, e.g. "incoming transaction above $10,000"] - `action`: `score [N]` | `onHold` | `awaitUser` | `reject` - Case creation: yes | no — [group by applicant / by rule] - Regulation reference: Art. N → Next: `sumsub-create-kyt-rules` #### Periodic Re-KYC rule [if applicable — requires `TM_SCHEDULED_EVENTS` license] - Trigger: customers at level [X] after [N] days - Action: reassign to level [Y] for re-verification - Regulation reference: Art. N → Next: `sumsub-create-kyt-rules` --- ## ⚠️ Configure in Sumsub Dashboard ### Activate TM rules New rules are created in test mode (`dryRun: true`). To make them live: open each rule in the dashboard (KYT → Rules Manager) and set it to **Active**. ### KYT Client Lists Adding values to client lists referenced in rule conditions (e.g., country blocklists, peer allowlists) is a dashboard-only operation: KYT → Client Lists. --- ## 🔒 E-KYC (electronic non-document verification) [Include only if applicable to the jurisdiction] - Jurisdiction: [country] - Potentially available databases: GOVERNMENT | CREDIT | BANKING - Configuration path: `sumsub-create-level` — after CSM activation - Activation steps: 1. Contact your Sumsub CSM to request activation for [country] 2. Run `sumsub-create-level` with the `E_KYC` docSet --- ## Out of Scope for Sumsub [List requirements from the regulation that Sumsub does not handle] - [e.g. 5-year data retention — handle in your own infrastructure] - [e.g. Reporting to [authority] — handle via your compliance team] --- ## Suggested Execution Order 1. `sumsub-create-questionnaire` (needed before level creation) 2. `sumsub-create-poa-preset` (needed before level creation) 3. `sumsub-create-level` (standard KYC level) 4. `sumsub-create-level` (EDD level, if needed) 5. `sumsub-create-workflow` (if risk-based routing needed) 6. `sumsub-create-aml-resolution-rules` (if AML hit auto-review needed; before the workflow when it routes on rule tags — the tag must exist first) 7. `sumsub-create-kyt-rules` (TM rules, if regulation requires transaction monitoring) 8. `sumsub-create-transaction` (instrument transaction submission) 9. Dashboard — activate TM rules (move from test mode to live) ``` --- ## Rules 1. **Language:** respond in the same language as the user's request. 2. **Think first:** use extended thinking before formulating the response — regulation texts are dense and requirements are often implicit. 3. **One jurisdiction at a time:** if the document covers multiple jurisdictions, ask which one to plan for before proceeding. Do not produce multi-jurisdiction plans unprompted. 4. **Validate before generating:** after analysis, present the "My Understanding" summary and wait for user confirmation before producing the full plan. 5. **No JSON:** this skill produces text descriptions only. Never generate API payloads, JSON objects, or configuration code. 6. **Be concrete:** the plan must use actual Sumsub parameter names and enum values, not prose descriptions. Write `docTypes: [PASSPORT, ID_CARD, DRIVERS]`, not "Passport and national ID". Write `videoRequired: passiveLiveness`, not "advanced liveness". Write `fields: [firstName, lastName, dob, tin]`, not "name and tax number". Include country codes in ISO-3166 alpha-3 (`BRA`, not "Brazil"). Name questionnaire item types (`bool`, `select`, `text`). Use the country-specific document mapping table in the Capability Map to translate local document names to IdDocType codes. 7. **Mark the boundary clearly:** every item in the plan must be in either ✅ (skills available now) or ⚠️ (Dashboard / skill in development). Never leave the boundary ambiguous. 8. **E-KYC is always opt-in:** always mark E-KYC as requiring CSM activation. List the activation steps. Do not present it as a default option. 9. **TM and AML resolution rules in plain language only:** describe trigger conditions and actions in business language (e.g., "block transactions over $50,000", "hits with mismatching name and date of birth → false positive"). Do not write SumScript expressions, condition ASTs, or technical rule syntax — `sumsub-create-kyt-rules` and `sumsub-create-aml-resolution-rules` handle that translation. 10. **No TM rules without explicit requirement:** only include TM rules in the plan if the regulation explicitly requires transaction monitoring. 11. **Licenses:** flag `DEVICE_INTELLIGENCE`, `E_KYC_TARGET`, `KYT`, `TRAVEL_RULE`, `TM_SCHEDULED_EVENTS` as requiring license verification. 12. **Out of scope:** explicitly list requirements the regulation contains that Sumsub cannot fulfill (data retention, authority reporting, etc.). --- ## Related Skills | Skill | When to invoke | |---|---| | `sumsub-create-level` | Always — core output of every regulation analysis | | `sumsub-create-questionnaire` | Regulation requires SOF, PEP, wealth, employment, or risk profile collection | | `sumsub-create-poa-preset` | Regulation requires address verification | | `sumsub-create-workflow` | Regulation requires risk-based routing, EDD flow, or multi-stage onboarding | | `sumsub-create-aml-resolution-rules` | Regulation addresses AML hit handling — false-positive clearing, PEP review policy, or screening-driven escalation | | `sumsub-create-kyt-rules` | Regulation requires transaction monitoring rules (thresholds, suspicious patterns, periodic re-KYC, Travel Rule) | | `sumsub-create-transaction` | Regulation requires transaction monitoring data submission | | `sumsub-integrate-websdk` | Regulation has UX or front-end onboarding requirements | | `sumsub-api-generic` | Check existing configuration before creating new entities |