AML (Anti-Money Laundering)

intelligence

AML (Anti-Money Laundering)

Definition

Anti-Money Laundering (AML) encompasses the comprehensive framework of laws, regulations, institutional procedures, and technological systems designed to detect, prevent, and report the laundering of proceeds derived from criminal activity through the financial system. Money laundering transforms illicit funds into ostensibly legitimate assets through three canonical stages: placement (introducing illicit funds into the financial system), layering (creating complex transaction chains to obscure the funds' origin), and integration (reinvesting the laundered funds into legitimate commerce). In the Prismatic Platform, AML capabilities are operationalized through integrated OSINT intelligence gathering, sanctions screening against global watchlists, entity resolution across jurisdictions, and risk-scored due diligence workflows that produce audit-ready compliance documentation.

Overview

Money laundering is among the oldest financial crimes, with historical roots predating modern banking. The term itself allegedly derives from Al Capone's use of laundromats to commingle illegal gambling and bootlegging revenue with legitimate business income during the 1920s Prohibition era. However, the modern AML regulatory framework emerged only in the late 20th century, driven by the recognition that financial systems were being systematically exploited by organized crime, drug trafficking, and eventually terrorism financing.

The evolution of AML regulation follows a clear trajectory of increasing scope and stringency:

YearMilestoneImpact
1970US Bank Secrecy Act (BSA)First reporting requirements for financial institutions
1986US Money Laundering Control ActMade money laundering a federal crime
1989FATF established (G7 Paris Summit)International standard-setting body created
1990FATF 40 Recommendations (1st edition)First international AML standards
1991EU 1st Anti-Money Laundering DirectiveCustomer identification requirements
2001USA PATRIOT ActPost-9/11 expansion to terrorism financing
2001FATF 8 Special Recommendations on TFCounter-terrorism financing standards
2005EU 3rd AMLDRisk-based approach introduced
2012FATF Recommendations revisedCombined AML/CFT standards
2015EU 4th AMLD (2015/849)Beneficial ownership registers mandated
2018EU 5th AMLD (2018/843)Virtual currencies, enhanced PEP measures
2020EU 6th AMLD (2018/1673)Harmonized predicate offenses, aiding/abetting
2021EU AML Package proposedSingle EU AML authority (AMLA), direct regulation
2024EU AML Regulation & AMLA establishedDirectly applicable rules, AMLA in Frankfurt
2025Czech AML Act amendments (ZKB 264/2025 Sb.)Enhanced cyber-related AML obligations

The Financial Action Task Force (FATF) serves as the global standard-setter, with its 40 Recommendations forming the de facto international AML framework. FATF's mutual evaluation process assesses member countries' compliance, and placement on the FATF "grey list" or "black list" carries severe economic consequences, effectively weaponizing AML compliance as a tool of international financial governance.

The three stages of money laundering each present distinct detection opportunities:

StageActivityDetection SignalsPrismatic Detection
PlacementIntroducing cash into financial systemStructuring (splitting deposits below reporting thresholds), cash-intensive businesses, smurfingTransaction pattern analysis
LayeringComplex transactions to obscure originShell companies, cross-border transfers, trade-based laundering, cryptocurrency mixingEntity resolution, ownership graph analysis
IntegrationReinvesting laundered fundsLuxury asset purchases, real estate, legitimate business investmentBeneficial ownership analysis, wealth-source verification

The estimated global volume of money laundering is 2-5% of global GDP annually (approximately $800 billion to $2 trillion USD), according to United Nations Office on Drugs and Crime (UNODC) estimates. Despite massive compliance investments (estimated at $274 billion globally in 2023), detection rates remain below 1% of total illicit flows, highlighting both the scale of the challenge and the opportunity for technology-driven improvements.

Technical Details

AML Program Components

A comprehensive AML program as required by FATF and EU regulations must include:

ComponentDescriptionRegulatory Basis
Customer Due Diligence (CDD)Identity verification, risk assessmentFATF R.10, EU AMLD Art. 13
Enhanced Due Diligence (EDD)Additional measures for high-risk customersFATF R.10, EU AMLD Art. 18
Simplified Due Diligence (SDD)Reduced measures for low-risk situationsEU AMLD Art. 15
Ongoing MonitoringContinuous transaction scrutinyFATF R.10, EU AMLD Art. 13(1)(d)
Suspicious Activity Reporting (SAR)Reports to Financial Intelligence UnitsFATF R.20, EU AMLD Art. 33
Record Keeping5-year minimum retention of CDD recordsFATF R.11, EU AMLD Art. 40
Beneficial OwnershipIdentifying ultimate beneficial owners (25%+ threshold)FATF R.24-25, EU AMLD Art. 30
PEP ScreeningPolitically Exposed Persons identificationFATF R.12, EU AMLD Art. 20
Sanctions ScreeningChecking against designated person/entity listsFATF R.6, EU Reg. 2580/2001
TrainingStaff AML awareness and procedure trainingFATF R.18, EU AMLD Art. 46

Risk-Based Approach

Modern AML regulation mandates a risk-based approach (RBA), where the intensity of compliance measures is proportional to the assessed risk level:

Risk Assessment Formula:
  Overall Risk = f(Customer Risk, Geographic Risk, Product Risk, Channel Risk, Transaction Risk)

  Customer Risk Factors:
  - Entity type (natural person, legal entity, trust, foundation)
  - Beneficial ownership complexity
  - PEP status (domestic, foreign, international organization)
  - Source of wealth/funds verifiability
  - Industry sector (cash-intensive, gambling, crypto, weapons)

  Geographic Risk Factors:
  - FATF grey/black list status
  - Transparency International CPI score
  - Sanctions regime applicability
  - Tax haven / secrecy jurisdiction indicators

  Product/Channel Risk Factors:
  - Remote onboarding (higher risk)
  - Virtual assets involvement
  - Correspondent banking chains
  - Trade finance complexity

Sanctions List Architecture

Global sanctions screening requires matching against multiple overlapping lists:

ListIssuerScopeUpdate Frequency
OFAC SDNUS TreasuryDesignated nationals and blocked personsDaily
EU ConsolidatedEuropean CommissionEU autonomous and UN-implemented sanctionsWeekly
UN Security CouncilUnited NationsGlobal designationsAs adopted
HMTUK TreasuryUK financial sanctionsDaily
SECOSwiss State SecretariatSwiss-implemented sanctionsWeekly
Czech National BankCNBCzech-specific designationsMonthly

Typology Framework

Money laundering typologies are classified patterns that compliance systems must detect:

FATF Typology Categories:
├── Trade-Based Money Laundering (TBML)
│   ├── Over/under-invoicing
│   ├── Multiple invoicing
│   └── Falsely described goods/services
├── Professional Money Laundering
│   ├── Shell company networks
│   ├── Trust/nominee structures
│   └── Professional intermediary abuse
├── Virtual Asset Laundering
│   ├── Cryptocurrency mixing/tumbling
│   ├── DeFi protocol exploitation
│   └── Cross-chain bridging
├── Real Estate Laundering
│   ├── Cash purchases through legal entities
│   ├── Renovation cost inflation
│   └── Rapid buying/selling cycles
└── Gatekeeping Professions
    ├── Legal professional exploitation
    ├── Accountant/auditor complicity
    └── Real estate agent facilitation

Implementation in Prismatic Platform

Sanctions Screening Engine

The platform implements real-time sanctions screening against OFAC SDN, EU Consolidated, and UN Security Council lists:

defmodule PrismaticDD.SanctionsChecker do
  @moduledoc """
  Multi-list sanctions screening engine with fuzzy matching,
  phonetic algorithms, and confidence scoring. Supports OFAC SDN,
  EU Consolidated Sanctions, and UN Security Council designations.
  """

  @type screening_result :: %{
          entity: String.t(),
          matches: [match_result()],
          risk_level: :clear | :potential_match | :confirmed_match,
          screening_timestamp: DateTime.t(),
          lists_checked: [atom()]
        }

  @type match_result :: %{
          list: atom(),
          matched_entry: map(),
          confidence: float(),
          match_type: :exact | :fuzzy | :phonetic | :alias,
          details: map()
        }

  @spec check(String.t() | map(), keyword()) ::
          {:ok, screening_result()} | {:error, term()}
  def check(entity, opts \\ []) do
    lists = Keyword.get(opts, :lists, [:ofac_sdn, :eu_consolidated, :un_sc])
    threshold = Keyword.get(opts, :threshold, 0.85)

    results =
      lists
      |> Task.async_stream(fn list ->
        screen_against_list(entity, list, threshold)
      end, timeout: 30_000)
      |> Enum.flat_map(fn
        {:ok, matches} -> matches
        {:exit, _reason} -> []
      end)

    risk_level = classify_screening_results(results)

    {:ok, %{
      entity: normalize_entity_name(entity),
      matches: results,
      risk_level: risk_level,
      screening_timestamp: DateTime.utc_now(),
      lists_checked: lists
    }}
  end

  @spec screen_against_list(String.t() | map(), atom(), float()) ::
          [match_result()]
  defp screen_against_list(entity, list, threshold) do
    normalized = normalize_entity_name(entity)

    list
    |> load_list_entries()
    |> Enum.flat_map(fn entry ->
      scores = [
        {:exact, exact_match_score(normalized, entry)},
        {:fuzzy, fuzzy_match_score(normalized, entry)},
        {:phonetic, phonetic_match_score(normalized, entry)},
        {:alias, alias_match_score(normalized, entry)}
      ]

      scores
      |> Enum.filter(fn {_type, score} -> score >= threshold end)
      |> Enum.map(fn {type, score} ->
        %{list: list, matched_entry: entry, confidence: score, match_type: type, details: %{}}
      end)
    end)
  end
end

AML Risk Assessment Pipeline

The platform's due diligence system computes composite AML risk scores across seven dimensions:

defmodule PrismaticDD.AML.RiskAssessor do
  @moduledoc """
  Computes AML risk scores across seven dimensions using evidence
  from OSINT sources, sanctions screening, and ownership analysis.
  Produces audit-ready risk assessments per FATF risk-based approach.
  """

  @risk_dimensions [
    :financial,      # Insolvency, tax compliance, financial health
    :legal,          # Court proceedings, regulatory actions
    :ownership,      # UBO opacity, nominee structures, PEP connections
    :operational,    # Business activity consistency, industry risk
    :reputational,   # Adverse media, public records
    :sanctions,      # Sanctions list hits, jurisdiction risk
    :cyber           # Digital footprint, infrastructure security
  ]

  @spec assess(map(), map(), keyword()) ::
          {:ok, map()} | {:error, term()}
  def assess(entity, evidence, opts \\ []) do
    dimension_scores =
      @risk_dimensions
      |> Enum.map(fn dimension ->
        {dimension, score_dimension(dimension, entity, evidence)}
      end)
      |> Map.new()

    composite_score = compute_composite_score(dimension_scores, opts)
    risk_category = categorize_risk(composite_score)

    {:ok, %{
      entity_id: entity.id,
      dimension_scores: dimension_scores,
      composite_score: composite_score,
      risk_category: risk_category,
      assessment_date: DateTime.utc_now(),
      evidence_count: length(Map.values(evidence) |> List.flatten()),
      recommendation: generate_recommendation(risk_category),
      audit_trail: build_audit_trail(entity, evidence, dimension_scores)
    }}
  end

  @spec categorize_risk(float()) :: atom()
  defp categorize_risk(score) when score >= 0.8, do: :critical
  defp categorize_risk(score) when score >= 0.6, do: :high
  defp categorize_risk(score) when score >= 0.4, do: :medium
  defp categorize_risk(score) when score >= 0.2, do: :low
  defp categorize_risk(_score), do: :minimal
end

Entity Ownership Graph Analysis

The platform leverages KuzuDB graph database to analyze ownership structures and detect layered laundering vehicles:

defmodule PrismaticDD.AML.OwnershipAnalyzer do
  @moduledoc """
  Analyzes entity ownership graphs to detect AML red flags:
  circular ownership, nominee structures, excessive layering,
  and connections to high-risk jurisdictions.
  """

  @spec analyze_ownership_structure(String.t()) ::
          {:ok, map()} | {:error, term()}
  def analyze_ownership_structure(entity_id) do
    with {:ok, graph} <- build_ownership_graph(entity_id),
         {:ok, ubos} <- identify_ultimate_beneficial_owners(graph),
         {:ok, red_flags} <- detect_structural_red_flags(graph),
         {:ok, jurisdiction_risk} <- assess_jurisdiction_risk(graph) do
      {:ok, %{
        entity_id: entity_id,
        ownership_depth: graph_depth(graph),
        beneficial_owners: ubos,
        red_flags: red_flags,
        jurisdiction_risk: jurisdiction_risk,
        opacity_score: calculate_opacity_score(graph, ubos)
      }}
    end
  end

  @spec detect_structural_red_flags(map()) :: {:ok, [map()]}
  defp detect_structural_red_flags(graph) do
    red_flags =
      []
      |> maybe_add(detect_circular_ownership(graph))
      |> maybe_add(detect_nominee_indicators(graph))
      |> maybe_add(detect_excessive_layering(graph, max_layers: 4))
      |> maybe_add(detect_shell_company_indicators(graph))
      |> maybe_add(detect_jurisdiction_hopping(graph))

    {:ok, red_flags}
  end
end

Comparison with Alternatives

SolutionCoverageAutomationOSINT IntegrationGraph AnalysisCompliance ReportingCost
Prismatic DD PlatformGlobal + Czech specialtyHigh120+ sourcesKuzuDB graph DBAudit-readyMedium
Refinitiv World-CheckGlobal, comprehensiveMediumLimited (proprietary data)BasicStandard reportsVery high
Dow Jones Risk & ComplianceGlobal, media-focusedMediumAdverse media strengthBasicStandard reportsVery high
ComplyAdvantageGlobal, AI-enhancedHighMediumLimitedGoodHigh
LexisNexis Risk SolutionsGlobal, US-focusedMediumLimitedNetwork analysisStandard reportsVery high
Open-source toolsVariableLowManual integrationCustom-builtManualLow
Manual complianceDepends on analystNoneManual researchNoneManualVery high (labor)

The Prismatic Platform differentiates through its deep Czech regulatory expertise (ARES, Justice Ministry, ISIR integration), graph-based ownership analysis via KuzuDB, and integration with 120+ OSINT sources that provide evidence beyond traditional AML databases.

Best Practices

  1. Screen against all applicable sanctions lists simultaneously: Do not rely on a single sanctions list. Screen against OFAC SDN, EU Consolidated, UN Security Council, and relevant national lists in parallel. Different lists have different coverage and update frequencies, and a miss on one list may be caught by another.

  2. Implement fuzzy matching with configurable thresholds: Exact string matching catches only trivially evasive name variations. Implement Levenshtein distance, Jaro-Winkler similarity, Soundex/Metaphone phonetic matching, and transliteration-aware comparison. Set matching thresholds per risk category (lower thresholds for high-risk jurisdictions).

  3. Maintain comprehensive audit trails: Every screening decision, risk assessment, and compliance action must be documented with full provenance. Regulators expect to see not just what was decided, but the complete reasoning chain. Design audit trail architecture before implementing business logic.

  4. Automate ongoing monitoring, not just onboarding: AML compliance is not a one-time event. Implement continuous re-screening against updated sanctions lists, periodic risk reassessment, and transaction pattern monitoring. Use event-driven architecture to trigger re-evaluation when new intelligence becomes available.

  5. Build beneficial ownership resolution into the core pipeline: Understanding who ultimately controls an entity is fundamental to AML compliance. Invest in ownership graph construction, UBO identification algorithms, and cross-jurisdictional ownership tracing. The EU 4th AMLD mandates beneficial ownership registers, but register data quality varies significantly across member states.

  6. Calibrate risk scoring with regulatory feedback: Risk scoring models must evolve based on regulatory examination findings, SAR filing outcomes, and typology updates from FATF and national FIUs. Static risk models degrade over time as laundering techniques evolve.

  7. Integrate Czech-specific regulatory requirements: For operations involving Czech entities, integrate with ARES (economic subjects register), ISIR (insolvency register), and the Czech Commercial Register. Czech AML Act 253/2008 Sb. has specific requirements that differ from the EU baseline, including enhanced obligations under ZKB 264/2025 Sb.

Common Pitfalls

  • Over-reliance on name screening alone: Name-based sanctions screening catches only the most obvious matches. Sophisticated laundering operations use nominee structures, shell companies, and intermediaries that are not themselves sanctioned. Combine name screening with network analysis, jurisdiction assessment, and behavioral pattern detection.

  • Treating AML compliance as a checkbox exercise: Regulators increasingly look beyond formal program elements to assess "effectiveness." Having policies, procedures, and technology is necessary but insufficient. Regulators want evidence that the AML program actually detects and prevents laundering, measured by SAR quality, investigation outcomes, and regulatory examination results.

  • Ignoring data quality in sanctions lists: Sanctions list entries vary dramatically in quality. Some entries have complete identification data (date of birth, passport number, address); others have only a name and nationality. Matching algorithms must handle this variability gracefully, adjusting confidence scores based on the specificity of available matching fields.

  • Failing to update typology knowledge: Money laundering techniques evolve continuously. Virtual asset laundering, trade-based laundering, and professional money laundering networks use increasingly sophisticated methods. AML systems that rely on static rules without regular typology updates become progressively less effective.

  • Underestimating cross-border complexity: AML regulations differ across jurisdictions in obligations, reporting thresholds, and enforcement approaches. An entity that is compliant in one jurisdiction may violate rules in another. Map regulatory requirements per jurisdiction and implement jurisdiction-aware compliance logic.

  • Neglecting the human element: Technology enhances but does not replace human judgment in AML compliance. Complex cases require experienced investigators who understand both the regulatory framework and the business context. Ensure that algorithmic screening supports rather than supplants expert analysis.

Use Cases

Czech Entity Due Diligence

The platform's Czech OSINT adapters (28 sources including ARES, Justice Ministry, ISIR, Commercial Register, and Trade Register) enable comprehensive due diligence on Czech entities. The AML workflow queries all relevant registries, constructs ownership graphs from commercial register data, checks insolvency status, verifies tax compliance, and screens against both EU and Czech-specific sanctions lists. The resulting due diligence report satisfies Czech AML Act 253/2008 Sb. documentation requirements.

Cross-Jurisdictional Ownership Tracing

Using KuzuDB graph analysis, the platform traces ownership chains across multiple jurisdictions to identify ultimate beneficial owners. This is particularly valuable for detecting layered structures designed to obscure ownership, such as a Czech s.r.o. owned by a Cyprus holding company owned by a Cayman Islands trust. The graph analysis detects red flags like circular ownership, excessive layering (>4 levels), and connections to secrecy jurisdictions.

Sanctions Screening with Continuous Monitoring

The platform implements continuous sanctions screening that re-checks all monitored entities whenever sanctions lists are updated. When OFAC publishes a new SDN entry, all entities in the platform's monitoring portfolio are automatically re-screened within minutes. Potential matches trigger alerts with confidence scores, and confirmed matches generate compliance notifications with full audit documentation.

PEP and Adverse Media Screening

Politically Exposed Persons (PEP) identification combines structured data from public registries with unstructured intelligence from media monitoring. The platform's OSINT tools aggregate information from government websites, corporate registries, news sources, and public databases to identify PEP connections that may not appear in commercial PEP databases. Adverse media screening uses natural language processing to identify negative news coverage relevant to AML risk assessment.

  • KYC - Know Your Customer requirements forming the identity verification foundation of AML compliance
  • Sanctions Screening - Automated checking against designated person and entity lists as a core AML control
  • Due Diligence - Comprehensive investigation framework that operationalizes AML obligations for entity risk assessment
  • Beneficial Ownership - Identification of ultimate beneficial owners to detect layered laundering structures
  • Entity Resolution - Cross-source identity consolidation that enables comprehensive AML screening across jurisdictions
  • Risk Score - Quantified risk assessment producing numeric scores that drive AML decision-making
  • Compliance Framework - Regulatory structures (FATF, AMLD, ZKB) that define AML obligations
  • PEP Screening - Identification of politically exposed persons requiring enhanced due diligence under AML regulations

See Also


Connect & Contribute

Created by Tomas Korcak (korczis) | Open Source under GHL