שירותים פיננסיים / מדריך טכני

אוטומציית הצטרפות לקוחות KYC/AML בשירותים פיננסיים עם n8n ו-Claude מדריך שלב אחר שלב

מדריך מלא לבניית pipeline ב-n8n עם Claude שלוכד מועמד להצטרפות, מאמת תעודת זהות ממשלתית עם liveness, מסנן מול OFAC SDN, UN, EU ו-PEP, נותן ציון סיכון תחת CIP/CDD, מסמן טריגרים ל-SAR ודוחף רשומה נקייה ל-Salesforce Financial Services Cloud, straight-through מתחת ל-90 דקות במקום יומיים וחצי.

קריאה של 16 דקות
בינוני – מתקדם
n8n + Claude API
עודכן: מאי 2026
מה תבנה

קליטת מועמד + צילום תעודה

אימות מסמך + liveness (Persona/Onfido)

סינון סנקציות + PEP

טריאז' סיכון + SAR ב-Claude

שכבת סיכון (low / med / EDD)

סנכרון Salesforce FSC / nCino

יומן ביקורת לבוחנים

1. הבעיה: למה הצטרפות KYC נתקעת על יומיים וחצי

כל broker-dealer מפוקח, RIA או דיגיטל-בנק נתקלים באותה צוואר בקבוק. המועמד נרשם, התור של ה-compliance בולע אותו. תעודת הזהות נלכדת אבל לא מנותחת. סינון הסנקציות רץ רק ב-batch של בוקר למחרת. מישהו שולף ידנית דוח Refinitiv World-Check. קצין סיכון מסתכל על הצמדות PEP. ראש קומפליאנס בכיר עובר על התיק לפני אישור החשבון. כל handoff הוא תור, כל תור הוא יום, והמועמד נוטש לפני שהכסף מגיע ל-brokerage.

מספרים אמיתיים מ-broker-dealer אזורי (400 לקוחות retail בחודש)

בקשות לפתיחת חשבון retail (לחודש) ~400
זמן ממוצע לפתיחת חשבון 2.5 ימים
מועמדים שנוטשים לפני funding 28%
שעות compliance להצטרפות 42 דקות
false-positive על סנקציות שדורש בדיקה ידנית 17%
תיקי PEP שנבדקים תוך 24 שעות 61%

תכל'ס יש פה אסימטריה שכואבת פעמיים. מועמדי low-risk (אותם 80% עם בדיקות נקיות) מחכים בדיוק כמו אלה שבאמת עם סיכון גבוה. קציני compliance שורפים את רוב השבוע על false-positives במקום על התיקים שבאמת ראויים לבדיקה. מעבר לזה, בוחני FINRA רוצים ראיות ש-Rule 3310 בוצעה לכל חשבון, והראיה יושבת בשבע מערכות ושלושה תיבות דואר משותפות.

מה זה אומר "KYC אוטומטי" כאן

זה לא AI יחיד שמחליט לאשר חשבונות. זו טריאז' של ארבע רמות שמושיב אדם מול התיקים הנכונים, ושאר התיקים זורמים עם trail מתועד:

  • Low-risk straight-through (יעד ~70%): התאמת תעודה נקייה, liveness עבר, אין הצמדה לסנקציות/PEP, ציון CDD נמוך. אישור אוטומטי, funding, מייל פתיחה.
  • CDD רגיל (~22%): אי-התאמה קלה בנתונים, כתובת חוצת-גבול, ציון סיכון בינוני. אנליסט compliance בודק עם תיק מסוכם מראש.
  • Enhanced Due Diligence (EDD, ~6%): הצמדת PEP, גיאוגרפיה בסיכון גבוה (רשימת FATF), פיקדון פתיחה גדול. קצין BSA בודק, מבקש מסמכי source-of-funds.
  • SAR trigger / סירוב (~2%): התאמת סנקציה, איתות הונאת זהות, דפוס structuring. ננעל, מועלה, ניתן לדיווח ל-FinCEN.
תובנה
ההישג הכי גדול הוא לכווץ את המסלול של low-risk מ-2.5 ימים לפחות מ-90 דקות, תוך שמירה על audit trail מתועד של Rule 3310. ה-funding נכנס לחשבון באותו יום, נטישה יורדת, וצוות ה-compliance מקבל בחזרה את השבוע שלו. אותו דפוס חוזר על עצמו בפריסות אוטומציה לפיננסים שלנו.

2. ארכיטקטורת המערכת

שבעה רכיבים, כל אחד ניתן להחלפה. שכבת ה-orchestration היא n8n self-hosted בתוך אותו VPC כמו ה-data store של הלקוחות, ככה שבוחן FINRA יוכל לעקוב אחרי כל קריאת API חיצונית שנגעה ב-PII של מועמד. Postgres מחזיק את תיק המקרה, ראיות הסינון, ו-audit log לא-משתנה. שום דבר לא יוצא מהרשת בלי hash מתועד.

הסטאק

n8n (self-hosted)
Orchestration. Docker על VM 4 vCPU / 16GB בתוך ה-VPC של החברה, queue mode, אין egress חיצוני חוץ מ-endpoints מאושרים.
Claude API (ZDR)
Sonnet לחשיבת סיכון וטיוטות SAR, Haiku להוצאת שדות מסמך זול. Enterprise tier עם zero-data-retention.
Persona / Onfido / Jumio
ניתוח תעודה ממשלתית, קריאת NFC chip איפה שיש, selfie liveness, OCR למסמך כתובת.
Refinitiv World-Check / Dow Jones
סנקציות (OFAC SDN, UN, EU, UK HMT), PEP, adverse media. ComplyAdvantage תקין כחלופה זולה לחברות בשלב מוקדם.
Plaid / MX
קישור חשבון בנק ל-ACH funding, ואיתות soft להכנסה/יתרה שמזין את ציון הסיכון.
Postgres + S3 (מוצפן)
תיק מקרה, ראיות סינון JSON, audit log, bucket WORM למסמכים. הצפנת KMS, retention 6 שנים לפי BSA.
Salesforce FSC / nCino
System of record ללקוח, חשבון, שלב lifecycle ותוצאת KYC. nCino נפוץ בבנקים, FSC נפוץ ב-broker-dealer ו-RIA.

אומדן עלות (400 הצטרפויות לחודש)

Claude Sonnet (400 סיכון + 60 טיוטות SAR, ~3,200 tok in / 700 tok out) ~$140
Claude Haiku (400 הוצאת שדות מסמך) ~$18
Persona ID + liveness (400 אימותים) ~$640
Refinitiv World-Check (400 סינונים, ניטור שוטף) ~$800
Plaid Auth + Identity (400 קישורים) ~$240
חישוב VPC (n8n + Postgres על AWS m6i.xlarge + RDS) ~$310
Monitoring + log retention (CloudWatch + Datadog) ~$95
סה"כ לחודש ~$2,243

ב-400 חשבונות לחודש, העלות יוצאת בערך $5.61 להצטרפות, מול ~$31 עלות מלאה של איש compliance שעושה את זה ידנית. החיסכון מחזיר את הבנייה בתוך רבעון אחד, וההפסד מנטישה שנמנע מחזיר את זה שוב. אותה שכבת orchestration נכנסת לשירותי אוטומציית AI הרחבים שלנו.

1

קליטת מועמד

ה-pipeline מתחיל מ-webhook מאומת מה-front end של פתיחת החשבון (web או mobile). שלושה דברים חייבים להגיע בקריאה הראשונה: שדות זהות מועמד תחת CIP של החברה, session ID של פורטל הלקוח, וחתימה על consent להרצת בדיקות KYC. כל השאר (תעסוקה, הכנסה, מטרת השקעה לצורך FINRA Rule 2111) יכול להגיע אחר כך באותו תיק.

שדות CIP שה-webhook חייב ללכוד

  • שם משפטי בדיוק כפי שמופיע על תעודת הזהות הממשלתית. שם פרטי/משפחה נשמר בנפרד.
  • תאריך לידה מניע flags של גיל-בגירות וסניור-משקיע.
  • כתובת מגורים קבועה (PO Box נדחה לחשבון retail תחת FinCEN BSA CIP).
  • מספר זיהוי SSN/ITIN לאזרחי US, דרכון + מדינה ל-non-US, עם נתוני NFC chip איפה שיש.
  • אזרחות + תושבות מס מזין את הסיווג FATCA/CRS בהמשך.
  • הצהרה עצמית על PEP אף פעם לא נסמכים עליה לבד, אבל היא מתועדת כאיתות סתירה אם World-Check חולק.

קונפיג ה-Webhook ב-n8n

node Webhook יחיד ב-n8n מקבל את ה-JSON של הבקשה. אימות HMAC עם המפתח הפרטי של ה-front-end זה הדבר הראשון שרץ, לפני שאף שדה נקרא. כל מה שנכשל ב-HMAC נופל ומתועד. שדות PII לעולם לא מופיעים ב-execution log של n8n: ה-n8n מוגדר עם redaction ברמת node.

n8n Webhook payload — KYC application schemaJSON
{
  "application_id": "app_01HXYZ...",
  "received_at": "2026-05-03T09:14:22Z",
  "signature": "sha256=...",
  "channel": "web" | "mobile" | "advisor_assisted",
  "applicant": {
    "legal_first_name": "Maria",
    "legal_last_name":  "Hernandez Lopez",
    "date_of_birth":    "1986-08-14",
    "ssn_tokenized":    "tok_4f2c...",
    "citizenship":      ["US"],
    "tax_residency":    ["US"],
    "address": {
      "line1": "1422 Oak Ridge Dr",
      "city":  "Austin",
      "state": "TX",
      "postal_code": "78704",
      "country": "US"
    },
    "occupation":      "Software Engineer",
    "employer":        "Acme Software Inc",
    "annual_income_band": "100k-150k",
    "net_worth_band":     "250k-500k",
    "source_of_funds":    "employment_income",
    "investment_objective": "growth",
    "pep_self_declaration": false
  },
  "consent": {
    "kyc_screening": true,
    "credit_check":  false,
    "consent_signed_at": "2026-05-03T09:13:58Z",
    "ip_address_hash": "ipha_..."
  }
}
שים לב
SSN ו-DOB מלא לא יושבים ב-workflow logs. עושים tokenize ל-SSN ב-front-end (או ב-sidecar service מגובה Vault), ומעבירים רק את ה-token דרך n8n. ה-endpoint של detokenization נגיש רק מ-node הסינון, עם call שמתועד בנפרד. בוחני FINRA מחפשים בדיוק את הבקרה הזו.
2

אימות תעודה + Liveness

זהות שהמועמד מצהיר עליה שווה אפס עד שהיא נקשרת לתעודת זהות מאומתת ולפנים חיים. Persona, Onfido ו-Jumio עושים את העבודה הכבדה: OCR למסמך, קריאת NFC chip בדרכונים אלקטרוניים, בדיקת הולוגרמות ופיצ'רי אבטחה, התאמת video selfie לדיוקן שעל התעודה. אותו דפוס חוזר על עצמו באוטומציות compliance-heavy שאנחנו מריצים באוטומציות AI לתעשיית הביטוח.

קסקדת אימות (defence in depth)

  1. צילום מסמך קדמי + אחורי של תעודה ממשלתית, כפיית קריאת NFC על דרכונים שתומכים.
  2. OCR + ניתוח MRZ חילוץ ה-machine-readable zone, אימות check digits בצד שרת.
  3. אותנטיות מסמך ציון הספק על הולוגרמות, פונטים, layout מול תבניות מוכרות.
  4. Selfie liveness פסיבי (PAD level 2) או challenge אקטיבי (סיבוב ראש, מצמוץ). חוסם deepfakes.
  5. Face match selfie מול דיוקן מהתעודה, סף ציון ≥ 90%.
  6. אישור כתובת חשבון חשמל או דף בנק, OCR, תאריך עד 90 יום, התאמת כתובת לבקשה בסבילות fuzzy.
  7. עקביות בין שדות DOB בתעודה תואם לבקשה, שם תואם בסבילות אותיות לטיניות, תוקף בעתיד.

SQL: store של תוצאות אימות

Postgres — id_verification (per applicant)SQL
CREATE TABLE id_verification (
  application_id     text PRIMARY KEY,
  provider           text NOT NULL,        -- persona | onfido | jumio
  provider_inquiry   text NOT NULL,
  document_type      text NOT NULL,        -- passport | drivers_license | id_card
  document_country   text NOT NULL,
  document_authentic boolean,              -- holograms / templates
  mrz_valid          boolean,
  nfc_chip_read      boolean,
  liveness_passed    boolean,
  face_match_score   numeric(5,2),
  poa_match          boolean,
  poa_doc_age_days   int,
  result             text NOT NULL,        -- approved | review | declined
  raw_payload_s3_key text NOT NULL,
  completed_at       timestamptz NOT NULL,
  created_at         timestamptz DEFAULT now()
);

-- Quick decision view that the routing node reads
CREATE VIEW id_decision AS
SELECT application_id,
       (document_authentic AND mrz_valid AND liveness_passed
        AND face_match_score >= 90 AND poa_match) AS straight_through,
       result
FROM   id_verification;
תובנה
שומרים את payload האימות המלא ב-S3 עם key content-addressable (sha256 של ה-JSON), ואז ב-Postgres רק את ה-key. בוחנים יוכלו להריץ מחדש את התגובה המדויקת של הספק שנים אחר כך, וה-DB נשאר קטן. WORM lock על ה-bucket (שינוי ראיות KYC בדיעבד זה יום רע).
3

סינון סנקציות + PEP

כל מועמד נסרק מול רשימת OFAC SDN, רשימת מועצת הביטחון של האו"ם, רשימת הסנקציות של ה-EU, רשימת UK HMT ובסיס הנתונים הנבחר של PEP ו-adverse media (Refinitiv World-Check, Dow Jones Risk & Compliance, או ComplyAdvantage). API הסינון מחזיר רשימת candidate matches עם ציוני דמיון. הטריק זה לטפל בשיעור ה-false-positive: שמות לטינו-אמריקאים או ערביים נפוצים מתאימים לעשרות מסונקצנים בסיבוב הראשון.

רשימות בסקופ הסינון

OFAC SDN
Specially Designated Nationals (US Treasury), חובה לכל חברה עם נגיעה ב-US.
OFAC Consolidated
Sectoral sanctions (SSI), non-SDN PLC, Foreign Sanctions Evaders.
UN / EU / UK HMT
סנקציות בינלאומיות, נדרש לכל פעילות חוצת-גבולות.
PEP — Refinitiv / Dow Jones
Politically Exposed Persons, כולל משפחה ומקורבים (RCAs).
Adverse media
חדשות שליליות על פשע פיננסי, הונאה, טרור. Source-graded על ידי הספק.
Internal blocklist
רשימת firm-specific של מועמדים שנדחו, חשד למיולים, נושאי SAR קודמים.

n8n HTTP Request ל-Refinitiv World-Check

n8n HTTP Request — sanctions + PEP screenJSON
{
  "method": "POST",
  "url": "https://api-worldcheck.refinitiv.com/v2/cases/screeningRequest",
  "headers": {
    "authorization": "Bearer {{ $credentials.worldcheck.token }}",
    "content-type": "application/json"
  },
  "body": {
    "groupId":  "{{ $env.WC_GROUP_ID }}",
    "entityType": "INDIVIDUAL",
    "providerTypes": [
      "WATCHLIST",   // sanctions
      "PEP",
      "MEDIA"
    ],
    "secondaryFields": [
      { "typeId": "DATE_OF_BIRTH",
        "value":  "{{ $json.applicant.date_of_birth }}" },
      { "typeId": "COUNTRY",
        "value":  "{{ $json.applicant.citizenship[0] }}" }
    ],
    "name": "{{ $json.applicant.legal_first_name }} {{ $json.applicant.legal_last_name }}"
  }
}
תובנה
תמיד להעביר DOB ומדינה כ-secondary identifiers. סינון על שם בלבד מייצר false-positive של 17%+, הוספת DOB מורידה את זה מתחת ל-3%. כל החלטת match (auto-clear, escalate, block) נכתבת ל-audit log עם הציון הבסיסי והשדות המשניים שנעשה בהם שימוש: זה ה-artefact שבוחן FINRA יבקש.
4

מודל סיכון של Claude

מנוע חוקים מסורתי ל-KYC risk צריך כיול ידני בכל פעם שצצה גיאוגרפיה חדשה, מוצר חדש או טיפולוגיית הלבנה חדשה. Claude קורא את הבקשה המאומתת, ראיות הסינון, איתות קישור הבנק ומדיניות ה-CDD של החברה, ומחזיר JSON מובנה עם שכבת סיכון CDD/EDD ונימוק כתוב, בדיוק מה שבוחן רוצה לראות בתיק.

שש מימדי הסיכון

geography_risk
מדינת מגורים, אזרחות, מקור תשלום מול רשימות FATF / FinCEN בסיכון גבוה.
customer_risk
תעסוקה, מעסיק, סבירות מקור הון, גיל, היסטוריית structuring.
product_risk
Margin, options L3+, crypto, העברות בינלאומיות. לכל אחד משקל AML משלו.
screening_risk
ציון ביטחון של hit סנקציות, שכבת PEP (1-4), חומרת adverse media.
behavioural_risk
מספר fingerprints של מכשירים, exit של VPN, סתירות בטופס הבקשה.
funding_risk
יתרה/הכנסה ב-Plaid מול הון מוצהר, גודל פיקדון פתיחה, מדינת בנק המקור.

System prompt לציון סיכון

נבדק על 12 חודשי הצטרפויות היסטוריות עם תוצאות מתועדות (closed-clean, EDD-required, declined, post-onboarding SAR). בלוק מדיניות ה-CDD ניתן לעריכה לכל חברה, מבנה הפלט קבוע ככה ש-node הניתוב יכול להחליט עליו דטרמיניסטית.

Claude system prompt — KYC risk assessorTXT
You are a KYC/AML risk-tiering engine for a US broker-dealer
operating under FINRA Rule 3310 and FinCEN BSA CIP/CDD rules.

You are NOT the final decision maker. You assign a risk tier
and write a justification that a registered compliance principal
will read before approving, escalating, or declining.

CDD POLICY (editable per firm):
- Geographies LOW: US, Canada, UK, EU/EEA, Australia, Japan
- Geographies MEDIUM: most LATAM, GCC, Eastern Europe
- Geographies HIGH: FATF call-for-action + black-list
  (currently: DPRK, Iran, Myanmar). Auto-route to EDD.
- Customer LOW: salaried, employer matches public records,
  source of funds = employment income, age 25-65
- Customer HIGH: cash-intensive business, NGO, complex trust,
  shell-company patterns, age <21 with >$50k initial deposit

SCREENING RULES:
- OFAC SDN exact-match (score >=95) -> tier=BLOCK
- OFAC SDN partial (80-94) with DOB+country match -> tier=BLOCK
- PEP tier 1 (head of state, minister) -> tier=EDD always
- PEP tier 2-3 -> tier=EDD if combined with HIGH geography
- PEP tier 4 (RCA, distant family) -> tier=STANDARD with note
- Adverse media on financial crime / terrorism -> tier=EDD
- Adverse media older than 7 years & resolved -> mention but do not escalate

OUTPUT — strict JSON, no prose outside the schema:
{
  "tier": "low" | "standard" | "edd" | "block",
  "dimensions": {
    "geography_risk":   0-100,
    "customer_risk":    0-100,
    "product_risk":     0-100,
    "screening_risk":   0-100,
    "behavioural_risk": 0-100,
    "funding_risk":     0-100
  },
  "composite_score":  0-100,
  "justification":    "3-5 sentences citing the strongest signals.
                       Cite policy lines by phrase, not line number.",
  "sar_flags": [
    "structuring_pattern" |
    "identity_inconsistency" |
    "high_risk_geography_funding" |
    "pep_undisclosed" |
    "sanctions_partial_match" |
    "source_of_funds_implausible"
  ],
  "edd_documentation_required": [
    "source_of_wealth_letter" |
    "employer_verification" |
    "bank_reference" |
    "tax_return_2y" |
    "trust_deed"
  ],
  "recommended_action": "auto_approve" | "analyst_review" |
                        "bsa_officer_review" | "decline"
}

Hard rules:
- If sanctions exact match: tier=block, sar_flags must include
  sanctions_partial_match (or exact), recommended_action=decline.
- Never invent screening hits. If the input has no PEP record,
  do not write one.
- Never store SSN or full DOB in the justification text.
- Cite the specific data point that drove each dimension score.

n8n HTTP Request ל-Claude

n8n HTTP Request — risk assessment callJSON
{
  "method": "POST",
  "url": "https://api.anthropic.com/v1/messages",
  "headers": {
    "x-api-key": "{{ $credentials.anthropic.apiKey }}",
    "anthropic-version": "2023-06-01",
    "content-type": "application/json"
  },
  "body": {
    "model": "claude-sonnet-4-5",
    "max_tokens": 1200,
    "system": "{{ $json.kycSystemPrompt }}",
    "messages": [
      {
        "role": "user",
        "content": "Application (PII redacted to fields the model needs):n{{ JSON.stringify($json.applicantRedacted) }}nnID verification result:n{{ JSON.stringify($json.idVerification) }}nnScreening hits:n{{ JSON.stringify($json.screeningHits) }}nnPlaid signal:n{{ JSON.stringify($json.bankSignal) }}"
      }
    ]
  }
}
תובנה
שומרים את מחרוזת הנימוק המלאה ב-Salesforce FSC כשדה "KYC Reasoning" על ה-Account. בוחנים סומכים על המודל הרבה יותר מהר כשהם רואים "EDD בגלל PEP tier-2 (סגן שר, ברזיל 2018-2021) + פיקדון פתיחה $180k מישות non-domiciled בקפריסין." הנימוק זה ה-artefact, הציון זה ה-trigger.
5

ניתוב + טריאז' SAR

ברגע ששכבת הסיכון נוחתת, הניתוב דטרמיניסטי. Low-risk straight-through הולך ל-auto-approve, funding ומייל פתיחה. שכבת standard מזינה את תור האנליסט עם תיק מסוכם מראש. EDD הולך לקצין BSA עם בקשות תיעוד שכבר נוסחו. תיקים שסומנו ל-SAR נועלים את החשבון, מקפיאים funding ממתין, ופותחים אירוע במערכת ניהול המקרים של החברה.

מטריצת ניתוב

שכבה בודק Funding תיעוד שלב FSC
Low אין, אישור אוטומטי שוחרר באותו יום אין מעבר ל-CIP Active
Standard אנליסט compliance (SLA 4 שעות) שוחרר אחרי חתימת אנליסט אין מעבר ל-CIP Pending Review
EDD קצין BSA (SLA 24 שעות) מוקפא עד מסמכי EDD מכתב SoW, אימות מעסיק, מס שנתיים EDD Hold
Block / SAR קצין BSA + ועדת AML קפוא SAR בטיוטה, deadline 30 יום ל-FinCEN Restricted

התראת Slack על SAR (ערוץ BSA)

Slack — incoming webhook (Block Kit)JSON
{
  "channel": "#bsa-alerts",
  "blocks": [
    {
      "type": "header",
      "text": { "type": "plain_text",
                "text": ":rotating_light: SAR trigger — application app_01HXYZ" }
    },
    {
      "type": "section",
      "fields": [
        { "type": "mrkdwn",
          "text": "*Tier*nBLOCK" },
        { "type": "mrkdwn",
          "text": "*Trigger*nsanctions_partial_match + identity_inconsistency" }
      ]
    },
    {
      "type": "section",
      "text": { "type": "mrkdwn",
                "text": "*Why blocked:* OFAC SDN match score 92 with DOB+country corroboration; address-of-record points to high-risk jurisdiction; declared occupation does not match Plaid income signal. Account locked, funding frozen, SAR draft generated for BSA review." }
    },
    {
      "type": "actions",
      "elements": [
        { "type": "button", "text": { "type": "plain_text",
          "text": "Open case" }, "style": "danger", "action_id": "open_case" },
        { "type": "button", "text": { "type": "plain_text",
          "text": "View SAR draft" }, "url": "https://internal.firm.com/sar/{{caseId}}" }
      ]
    }
  ]
}

Prompt לטיוטת נרטיב SAR ב-Claude

Claude לא מגיש את ה-SAR. הוא מנסח את חלק הנרטיב בפורמט ש-FinCEN מצפה לו, ככה שקצין ה-BSA בודק ומסיים ב-BSA E-Filing. הנרטיב חייב להיות ספציפי (מי, מה, מתי, איפה, למה, איך), להימנע מספקולציה, ולהפנות לראיות הבסיסיות לפי מזהי תיק.

Claude prompt — SAR narrative draftTXT
You draft a SAR narrative that a BSA officer will review,
edit and file in FinCEN BSA E-Filing.

Format:
1. Who - subject identifiers (case file ID, NOT raw SSN)
2. What - the suspicious activity in plain English
3. When - dates and timestamps
4. Where - branch / channel / jurisdiction
5. Why - why is this suspicious
6. How - the mechanism / typology

Rules:
- 5W1H, no jargon, no marketing language
- Cite exact dollar amounts and dates from the evidence JSON
- Reference each underlying record by its case-file ID
- Identify the typology (structuring, layering, smurfing, etc.)
  if recognisable; otherwise say "typology not yet determined"
- Do NOT speculate about criminal intent
- Do NOT include raw SSN, full account numbers, or full DOB
- 350-700 words, examiner-ready prose

קצין ה-BSA תמיד עורך ומאשר לפני הגשה. המודל לא נוגע ב-BSA E-Filing ישירות, ההגשה היא human-only by design. אותו דפוס human-in-the-loop מופיע בכל העבודה שלנו עבור אוטומציות AI למשרדי עורכי דין ושירותים משפטיים, איפה שכל artefact שטיוטות AI יוצא רק אחרי חתימת בודק מורשה.

6

סנכרון CRM + יומן ביקורת

Salesforce Financial Services Cloud (או nCino בבנקאות retail) נשאר ה-system of record לכל חשבון, household ותוצאת KYC. ה-workflow ב-n8n עושה upsert ל-Person Account, מצמיד אותו ל-Household record, מעדכן שלב lifecycle, וכותב את שכבת הסיכון, הנימוק, hits הסינון והפניות ל-artefacts אימות לשדות מותאמים שצוות ה-compliance יכול לתשאל. כל כתיבה משתקפת ל-audit log לא-משתנה ב-Postgres: זו הטבלה שבוחן FINRA יבקש.

Upsert ל-Salesforce FSC (Person Account)

Salesforce FSC — upsert payloadJSON
{
  "method": "PATCH",
  "url": "https://firm.my.salesforce.com/services/data/v59.0/sobjects/Account/External_Application_Id__c/app_01HXYZ",
  "headers": {
    "authorization": "Bearer {{ $credentials.salesforce.token }}",
    "content-type": "application/json"
  },
  "body": {
    "FirstName":  "Maria",
    "LastName":   "Hernandez Lopez",
    "PersonBirthdate": null,                              // never write full DOB
    "PersonMailingPostalCode": "78704",
    "Lifecycle_Stage__c":     "Active",
    "KYC_Risk_Tier__c":       "low",
    "KYC_Composite_Score__c": 22,
    "KYC_Justification__c":   "{{ $json.risk.justification }}",
    "Sanctions_Hits_Json__c": "{{ JSON.stringify($json.screening.hits) }}",
    "ID_Verification_S3_Key__c": "kyc-evidence/app_01HXYZ/persona.json",
    "EDD_Required__c":        false,
    "Last_KYC_Review__c":     "2026-05-03",
    "Next_Periodic_Review__c":"2027-05-03"
  }
}

SQL ליומן ביקורת לא-משתנה

Postgres — kyc_audit_logSQL
-- Append-only table. INSERT-only role. No UPDATE / DELETE grants.
-- Hash chain so any tampering breaks the chain.

CREATE TABLE kyc_audit_log (
  id              bigserial PRIMARY KEY,
  application_id  text NOT NULL,
  step            text NOT NULL,            -- intake | id_verify | screen | risk | route | crm
  actor           text NOT NULL,            -- system:n8n | user:jdoe | system:claude
  action          text NOT NULL,            -- e.g. risk.tier=edd, screen.hit_logged
  evidence_s3_key text,
  prompt_sha256   text,
  output_sha256   text,
  prev_hash       text NOT NULL,            -- previous row's row_hash
  row_hash        text NOT NULL,            -- sha256 of (everything above)
  occurred_at     timestamptz NOT NULL DEFAULT now()
);

REVOKE UPDATE, DELETE ON kyc_audit_log FROM PUBLIC;
GRANT  INSERT, SELECT ON kyc_audit_log TO kyc_writer;

-- View FINRA examiners get (read-only, includes hash verification)
CREATE VIEW kyc_audit_examiner AS
SELECT id, application_id, step, actor, action,
       evidence_s3_key, occurred_at,
       (encode(digest(
          id || application_id || step || actor || action ||
          coalesce(evidence_s3_key,'') ||
          coalesce(prompt_sha256,'')   ||
          coalesce(output_sha256,'')   ||
          prev_hash || occurred_at::text,
          'sha256'),'hex') = row_hash) AS hash_valid
FROM   kyc_audit_log;
תובנה
שרשרת ה-hash הופכת טבלה רגילה ל-log עם ראיות חיתוכים בלי לשלם את העלות התפעולית של DB ledger אמיתי. מריצים job מאמת ב-night שעובר על השרשרת, אם hash_valid=false במקום כלשהו, page לקצין BSA ולמוביל אבטחה. בוחנים אוהבים את הבקרה הזו כי הם יכולים להריץ אותה בעצמם ב-query אחד.

כשלים נפוצים ותיקונים

ארבעה דפוסי כשל מופיעים כמעט בכל פריסת KYC. כל אחד מהם שרף לקוח אמיתי באיזשהו שלב. תכננו אותם מיום אחד, הם זולים לעקוף בעיצוב ויקרים לתקן בזמן בדיקה.

כשל 1: false-positive על סנקציות בשמות נפוצים

סימפטום: "Maria Garcia" מתאימה ל-47 ערכים ב-World-Check בסיבוב הראשון. תור ה-compliance מתמלא ב-false-positives, תיקי EDD אמיתיים מחכים, ה-SLA נשבר.

תיקון: תמיד להעביר DOB ומדינה כ-secondary identifiers. שומרים cache של "previously cleared" לפי שם+DOB+מדינה עם הערת אישור של האנליסט מצורפת, ככה שאותו מועמד לא יצטרך להיות מאושר פעמיים. מכיילים את ספי ההתאמה של ספק הסינון בתיאום עם compliance, ומתעדים את הכיול עם חתימה ב-audit log.

כשל 2: PEP מוצהר עצמית שהמסנן פספס

סימפטום: מועמד מסמן "אני PEP" בטופס. המסנן מחזיר בלי hit של PEP. מנוע האישור האוטומטי לא רואה את הסתירה ושולח straight-through. ביקורת compliance תופסת את זה שלושה חודשים אחר כך.

תיקון: מתייחסים להצהרה העצמית כאיתות hard שדורס את ביטחון הסינון. אם pep_self_declaration=true, לכפות tier=EDD בלי קשר למה ש-World-Check אומר. מסמנים את הסתירה בתיק ("הצהיר על PEP אבל המסנן לא החזיר רשומה") ככה שקצין BSA יחליט אם לעדכן את ה-cache של ה-PEP בחברה.

כשל 3: deepfakes על liveness

סימפטום: כנופיית הונאה פותחת 14 חשבונות retail בשבוע. כל אחד עובר liveness עם video deepfake שונה. הכספים זזים החוצה לפני שהדפוס מזוהה.

תיקון: דורשים liveness אקטיבי (סיבוב ראש + אמירת ביטוי) לכל בקשה מעל סף פיקדון או מגיאוגרפיה בסיכון גבוה. מריצים deduplication של device-fingerprint על פני בקשות. אם 14 fingerprints מתחלפים ב-14 IPs אבל חולקים hardware ID, כל ה-14 נעצרים. נרשמים ל-feed של דפוסי deepfake של ספק הסינון.

כשל 4: תור הביקורת התקופתית קורס בסוף החודש

סימפטום: שנה אחרי השקה, גל של משימות ביקורת תקופתית נוחת באותו תאריך שבו המערכת הוקמה לראשונה. צוות ה-compliance לא יכול לעבד אותם בזמן, החברה מפספסת את ה-SLA של בדיקת CDD שלה.

תיקון: מפזרים ביקורות תקופתיות על תאריך הרישום ± jitter רנדומלי 0-90 יום. גם מפזרים לפי שכבת סיכון: לקוחות EDD נבדקים כל 6 חודשים, standard כל 12, low-risk כל 24-36 (במסגרת מדיניות החברה). מריצים את ה-job של re-screening ב-night ככה שכל עדכון רשימת סנקציות יורה התראות גם בין ביקורות פורמליות.

תאימות: FINRA Rule 3310, BSA, GLBA, SOC 2

הצטרפות ב-broker-dealer אמריקאי נוגעת בארבעה משטרים חופפים. FINRA Rule 3310 לתוכנית AML, חוקי FinCEN BSA ל-CIP/CDD/SAR, GLBA לשמירה על נתוני לקוח, ו-SOC 2 Type 2 לסביבת ההפעלה של הסטאק. מתייחסים לתאימות כמגבלת עיצוב שאפויה לכל שלב, לא רשימה שמודבקת בסוף.

בקרות FINRA Rule 3310 שזה מספק

  • תוכנית AML כתובה: system prompts, חוקי הניתוב וסכמת ה-audit log הם התוכנית-as-code. מנוהל ב-git, חתום על ידי קצין ה-AML.
  • בדיקה עצמאית: דוח precision/recall על שכבות הסיכון רץ רבעונית על ידי חברת בדיקה חיצונית, על מדגם holdout.
  • מינוי קצין AML: משתמש קצין BSA הוא התפקיד היחיד עם הרשאה לאשר תוצאות EDD ולסיים טיוטות SAR.
  • הדרכה שוטפת: צוות compliance מתאמן מחדש על המערכת רבעונית, סיום ההדרכה מתועד באותה טבלת audit.
  • CIP מבוסס סיכון: מתועד ב-prompt, מוחל לכל מועמד, נימוק נשמר בתיק.

מה Claude רואה (ומה לא)

  • רואה: שם משפטי, DOB מצונזר (שנה בלבד), מדינה, תעסוקה, מעסיק, hits סינון עם ציוני ביטחון, booleans של אימות תעודה, רצועת הון מוצהר, רצועת יתרת Plaid.
  • לא רואה: SSN/ITIN, DOB מלא, מספרי חשבון, טקסט גולמי של עסקת בנק, תמונות תעודה, video selfie, IP גולמי, סכומי פיקדון מדויקים מעבר לרצועה.

פרטי שמירת רשומות BSA

BSA מחייב את החברה לשמור רשומות CIP ל-5 שנים אחרי שהחשבון נסגר (מידע CIP), ורשומות הקשורות ל-SAR ל-5 שנים מתאריך ההגשה. מיישמים את זה כמדיניות retention ברמת רשומה ב-S3 עם legal hold ברמת אובייקט שנדלק כש-SAR מוגש. ה-audit log ב-Postgres שומר retention לכל החיים, כי אחסון זול ובוחנים יכולים לבקש כל דבר. GLBA מתווסף מעל. נתוני לקוח חייבים להיות מוצפנים at rest (KMS, מפתח נפרד לכל tenant) ובמעבר (TLS 1.2+ מינימום), logs של גישה נבדקים חודשית.

בקרות SOC 2 Type 2 שזה מספק

  • Audit trail: כל קריאת סינון, hash של prompt, hash של output ו-write ל-CRM נרשמים בטבלת hash-chained לא-משתנה.
  • Change management: n8n workflows גרים ב-git עם CI deploy pipeline וכלל אישור 4-eyes על ה-main. אין עריכת prod ב-point-and-click.
  • בקרות גישה: credentials ב-n8n מבוססי תפקיד, secrets מגובי vault, הפרדת חובות בין מפעיל ה-n8n לקצין ה-BSA שמאשר תוצאות.
  • ניהול ספקים: Anthropic enterprise tier עם zero-data-retention פעיל, BAA איפה ש-PHI זורם, שאלון SIG-Lite בתיק ל-Persona/Refinitiv/Plaid.
אבטחה
משתמשים ב-enterprise tier של Anthropic עם zero-data-retention פעיל. גם עם ZDR דלוק, אף פעם לא שולחים SSN גולמי, מספרי חשבון מלאים או תמונות תעודה למודל. מימדי הסיכון והנימוק נשענים על שדות ברצועות ומצונזרים בעיצוב, מינימיזציית הנתונים זה מה שעושה את הארכיטקטורה defensible מול בוחן FINRA ששואל איזה data יצא מרשת החברה.

תוצאות שנמדדו: 90 יום אחרי השקה

מספרים מפריסה אמיתית ב-broker-dealer אזורי (400 לקוחות retail בחודש, צוות compliance של 6 כולל 2 קציני BSA) אחרי הרבעון המלא הראשון על ה-pipeline החדש. אין שינוי בנפח הבקשות הנכנסות בתקופת הבדיקה. ההישג מגיע מ-straight-through routing על תיקי low-risk, ומקריסת ה-false-positive על סינון.

זמן לפתיחת חשבון
82 דק'
ממוצע low-risk, היה 2.5 ימים
נטישה
-71%
28% ← 8.1%
שעות compliance / בקשה
9 דק'
low-risk, היה 42 דק' ממוצע
false-positive סנקציות
-83%
17% ← 2.9%

המטריקה הראשית בתוך צוות ה-compliance זה precision על שכבת EDD. 94% מהתיקים שנותבו ל-EDD באמת דרשו תיעוד מורחב לפי שיפוט האנליסט בסוף. זה המספר שנותן לקצין BSA מספיק אמון לבאמת לאצול את שכבת ה-standard לפול האנליסטים. בלעדיו, הבודק הבכיר בודק הכל ובנית אפס. הכלכלה של חשבונות funded גם זזה: הצטרפות מהירה יותר פלוס נטישה נמוכה יותר העלו את יתרת ה-funded ב-90 הימים הראשונים ב-19% בקוהורט שעבר ב-pipeline החדש.

לוח זמנים ועלות יישום

מסלול DIY
90 – 140 שעות
  • פריסת n8n ב-VPC + queue mode + חיווט KMS: 10-14 שעות
  • Tokenization sidecar + nodes של redaction: 8-12 שעות
  • אינטגרציית Persona / Onfido + S3 evidence store: 10-14 שעות
  • סינון Refinitiv / Dow Jones + כיול התאמה: 14-20 שעות
  • Plaid Auth + Identity + funding signal: 8-10 שעות
  • Prompt של Claude + backtest על 12 חודשי היסטוריה: 16-24 שעות
  • סכמת Salesforce FSC / nCino + סנכרון: 10-14 שעות
  • שרשרת hash של audit log + job מאמת: 6-10 שעות
  • Prompt טיוטת SAR + UI לבדיקת BSA: 6-10 שעות
  • הדרכת compliance + עדכון מדריך נהלים: 4-6 שעות
עם SEOKRU
פריסה ב-6 שבועות
  • שבוע 1: סקירת מדיניות CDD + הגדרת שכבות + RFP לספק תעודה
  • שבוע 2: פריסת VPC + tokenization + חיווט Persona
  • שבוע 3: Refinitiv / Dow Jones + Plaid + בניית prompt של Claude
  • שבוע 4: סנכרון Salesforce FSC + audit log + טיוטת SAR
  • שבוע 5: backtest על 12 חודשים + כיול אנליסטים + tuning
  • שבוע 6: השקת פיילוט במצב shadow + חתימת compliance
  • כולל: סקירת Rule 3310, חבילת ראיות SOC 2, דוח precision רבעוני
קבל פריסה מותאמת ←

שאלות נפוצות

לא. Claude מקצה שכבת סיכון, מנסח נימוק ומציע פעולה מומלצת. compliance principal רשום (בדרך כלל קצין ה-BSA של החברה או אנליסט מואצל בשכבת standard) בודק ומסיים כל תיק שאינו low-risk. גם במסלול ה-auto-approve של low-risk, מדריך נהלי ה-AML של החברה מגדיר בעלים אנושי לקוהורט וחובת ביקורת מדגמית רבעונית. המודל הוא force multiplier לאנליסט, לא מקבל ההחלטה. הפרדת החובות הזו זה בדיוק מה ש-FINRA Rule 3310 מצפה מתוכנית AML כתובה.
Rule 3310 דורש תוכנית AML כתובה עם CIP/CDD מבוסס סיכון, ניטור שוטף, בדיקה עצמאית, מינוי קצין AML והדרכה שוטפת. ה-pipeline מבצע operationalize לכל אלמנט. ה-system prompt וחוקי הניתוב הם התוכנית-as-code, ה-audit log הלא-משתנה הוא trail הראיות, קצין ה-BSA הוא התפקיד היחיד עם זכויות סיום של EDD/SAR, ודוח ה-precision הרבעוני (שמריצה חברת בדיקה חיצונית על מדגם holdout) הוא הבדיקה העצמאית. מדריך הנהלים מפנה למדריך הזה ול-release מ-git.
לא. node הסינון מכה ב-OFAC SDN, ב-OFAC consolidated lists, ברשימת מועצת הביטחון של האו"ם, ברשימת ה-EU, ברשימת UK HMT ובבסיס PEP/adverse-media הנבחר של החברה (Refinitiv World-Check, Dow Jones או ComplyAdvantage). למועמדים non-US, סיווג ה-FATCA/CRS נוסף לפני פתיחת חשבון ככה שהטפסים הנכונים (W-8BEN, CRS self-cert) נאספים מראש. סיכון גיאוגרפי ב-prompt משתמש ב-call-for-action ובגריי-ליסט של FATF, לא רק ביקום של OFAC.
אותה ארכיטקטורה, node סנכרון אחר. ל-n8n יש node HTTP גנרי ל-nCino REST API ו-node Salesforce ל-FSC. מודל הנתונים ממופה נקי כי nCino בנוי על פלטפורמת Salesforce. תוצאת ה-KYC נוחתת על אובייקט nCino Loan או Onboarding במקום על Person Account של FSC. טבלת ה-audit log ב-Postgres זהה בכל מקרה. רוב לקוחות retail-banking מריצים nCino, broker-dealers ו-RIAs נוטים ל-FSC. כל אחד מהם זה החלפת node בודד, לא שינוי ארכיטקטורה.
שתי דרכים. ראשית, קריאת ה-API לסינון תמיד מעבירה DOB ומדינה כ-secondary identifiers, מה שמכווץ את רשימת ה-candidate-match לפני ש-Claude בכלל רואה אותה. שנית, ה-prompt של Claude נותן down-weight מפורש להתאמות שם בלבד ודורש אימות DOB+מדינה לפני המלצה לחסום. הוא מצטט את הראיות של השדה המשני בנימוק. ה-cache של "previously cleared" אז עוקף false-positives חוזרים על אותו מועמד בזמן re-screening תקופתי. בכל הפריסות שלנו זה מוריד את ה-false-positive מהבסיס התעשייתי של 17% למתחת ל-3%.
לא, וגם לא צריך. הגשת SAR היא פעולה אנושית בלעדית דרך מערכת ה-BSA E-Filing של FinCEN, מבוצעת על ידי קצין AML רשום. Claude מנסח את חלק הנרטיב בפורמט 5W1H בעזרת הראיות בתיק, קצין BSA בודק, עורך ומגיש. ה-deadline של 30 יום של FinCEN מתחיל מזיהוי ראשוני של הפעילות החשודה. המערכת חושפת SAR triggers מיידית, אבל השעון וההגשה נשארים אחריות אנושית. העבודה שלנו בעמודות מפוקחות סמוכות (ראו אוטומציות AI למרפאות ובריאות) הולכת באותו דפוס: AI מנסח, אנשים מורשים מגישים.
אותן ראיות סינון רצות מחדש בלוח זמנים שמותאם לשכבת סיכון. לקוחות EDD כל 6 חודשים, standard כל 12, low-risk כל 24-36 (במסגרת מדיניות החברה). מעל זה, delta feed של ספק הסינון דוחף כל אירוע סנקציות/PEP/adverse-media חדש על לקוחות שכבר עברו onboarding לתוך n8n, שמפעיל הערכה מחדש של Claude ומתריע לקצין BSA אם השכבה משתנה. ניטור עסקאות (פוסט-funding) זה pipeline נפרד שצורך את אותה שכבת סיכון לקוח מ-Salesforce FSC. המדריך הזה מצומצם להצטרפות בלבד.
חוק CIP מאפשר פטורים לסוגי חשבון מסוימים (למשל מוסדות פיננסיים מפוקחים, חברות ציבוריות), ולקוחות קיימים לא צריכים CIP חדש בכל פתיחת חשבון חדש כל עוד רשומות ה-CIP המקוריות בתיק. node הקליטה מתייג את הבקשה עם קטגוריית הפטור מראש, מה שמנתב סביב שלב Persona/liveness ולתוך בדיקה קלה יותר. ה-audit log עדיין מתעד את הפטור ואת סעיף המדיניות שעליו הוא נשען, ככה שבוחן רואה בדיוק למה ה-CIP קוצר. אימות מחדש על לקוחות קיימים נדלק כשיש שינוי בנתוני יסוד (כתובת, שם, בעלות) או אחרי מחזור הרענון המתועד של החברה.
שלוש שכבות תופסות את זה. ראשית, חוקי הניתוב כופים EDD בכל פעם שיש איתות hard (סנקציות hit ≥80, pep_self_declaration true, מגורים ב-FATF black-list) בלי קשר למה ש-Claude אומר. המודל יכול להמליץ למטה, לעולם לא לדרוס למעלה. שנית, הבדיקה העצמאית הרבעונית עושה דגימה חוזרת לתיקי auto-approve ומציינת אותם, כל miss הוא פריט כיול. שלישית, ניטור עסקאות על החשבון ה-funded זה רשת ביטחון לכל מה שחמק בהצטרפות. זה מה ש-BSA מתכוון אליו עם כלל ה-retention של 5 שנים. הנקודה היא לא לעולם לא לפספס, אלא לזהות, לתעד ולתקן כשזה קורה.
NY DFS Part 504 דורש תוכנית transaction-monitoring ו-sanctions-filtering עם הסמכה שנתית ברמת דירקטוריון. ה-audit log ודוח ה-precision הרבעוני הם בדיוק הראיות שההסמכה מבקשת. CCPA מכסה פרטיות צרכן. מינימיזציית הנתונים של הארכיטקטורה (אין SSN/DOB מלא ל-Claude, ערכים פיננסיים ברצועות, ראיות S3 ב-WORM) תומכת ישירות בעמדת ה-CCPA של החברה, ו-DSR endpoints (זכות לדעת, זכות למחוק בכפוף ל-retention של BSA) מחווטים לאותן טבלאות Postgres. ניואנסים של רישוי במדינות (כמו Texas State Securities Board, Massachusetts Securities Division) מתועדים במדריך הנהלים firm-specific, לא ב-pipeline עצמו.

רוצים שיבנו לכם את זה לזרימת ההצטרפות?

SEOKRU פורסת את המערכת הזו בדיוק תוך 6 שבועות. עושים backtest למודל הסיכון מול 12 החודשים האחרונים של חשבונות שצורפו, מחווטים אימות תעודה, סינון, Plaid וה-CRM שלכם, מריצים את סקירת Rule 3310 עם קצין ה-AML שלכם, ומפיקים את חבילת ראיות ה-SOC 2 ביום אחד של go-live. אתם שומרים בעלות על כל רכיב (workflows, prompts, Postgres, הכל) שרץ בתוך ה-VPC שלכם עם מפתחות ה-KMS שלכם.

דברו עם מהנדס אוטומציה לשירותים פיננסיים