Skip to content
Back to skills

Gcp Aml Ai

ASecurity

Leverage Google Cloud's purpose-built Anti Money Laundering AI for transaction monitoring, risk scoring, and suspicious activity detection with explainable results.

  • 31 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 6, 2026
ai-agentspythongogcptestingapiperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 6, 2026

npx -y skills add frank-luongt/faos-skills-marketplace --skill gcp-aml-ai --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gcp Aml Ai?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gcp Aml Ai
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/frank-luongt-gcp-aml-ai/badge)](https://www.skillsdirectory.com/skills/frank-luongt-gcp-aml-ai)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT -->
---
name: gcp-aml-ai
description: Google Cloud Anti Money Laundering AI for financial crime detection. Use when implementing AML transaction monitoring, risk scoring, SAR prioritization, or integrating Google's pre-trained AML models with existing compliance systems.
tags: [gcp, aml, fraud, compliance, financial-crime]
---

# Google Cloud AML AI

Leverage Google Cloud's purpose-built Anti Money Laundering AI for transaction monitoring, risk scoring, and suspicious activity detection with explainable results.

## When to Use

- Implementing or modernizing AML transaction monitoring systems
- Replacing rules-based AML alerting with ML-based risk scoring
- Reducing false positives in existing AML alert pipelines (up to 60% reduction)
- Integrating AML risk scores into AI agent workflows for compliance investigation
- Building SAR prioritization and investigation tools

## Google AML AI Capabilities

| Capability | Description |
|---|---|
| **Risk Scoring** | ML-based customer and transaction risk scores (0-1 scale) |
| **Alert Prioritization** | Rank alerts by actual risk vs. false positives |
| **Network Analysis** | Detect suspicious fund flow patterns across entities |
| **Explainability** | Human-readable reasons for each risk score |
| **Back-testing** | Validate model performance against historical SARs |
| **Continuous Learning** | Model improves with feedback from investigation outcomes |

## Patterns

### 1. AML AI Instance Setup

```python
from google.cloud import financialservices_v1

def create_aml_instance(project_id: str, location: str, instance_id: str) -> dict:
    """Create an AML AI instance for a financial institution."""
    client = financialservices_v1.AMLClient()

    instance = financialservices_v1.Instance(
        display_name=f"AML Instance - {instance_id}",
        kms_key=f"projects/{project_id}/locations/{location}/keyRings/aml-keyring/cryptoKeys/aml-key",
    )

    operation = client.create_instance(
        parent=f"projects/{project_id}/locations/{location}",
        instance=instance,
        instance_id=instance_id,
    )

    return operation.result()
```

### 2. Ingest Transaction Data

```python
from google.cloud import bigquery

def prepare_aml_dataset(project_id: str, dataset_id: str):
    """Prepare BigQuery dataset with AML AI required schema.

    AML AI expects transaction data in a specific schema including:
    - Party table (customers/entities)
    - Transaction table (financial transactions)
    - Account table (bank accounts)
    - Party-Account link table
    """
    bq_client = bigquery.Client(project=project_id)

    # Party (customer) table
    party_schema = [
        bigquery.SchemaField("party_id", "STRING", mode="REQUIRED"),
        bigquery.SchemaField("type", "STRING"),  # INDIVIDUAL, ORGANIZATION
        bigquery.SchemaField("registration_date", "TIMESTAMP"),
        bigquery.SchemaField("country", "STRING"),
        bigquery.SchemaField("risk_category", "STRING"),
        bigquery.SchemaField("pep_status", "BOOLEAN"),
    ]

    # Transaction table
    transaction_schema = [
        bigquery.SchemaField("transaction_id", "STRING", mode="REQUIRED"),
        bigquery.SchemaField("type", "STRING"),  # WIRE, ACH, CASH, CHECK
        bigquery.SchemaField("direction", "STRING"),  # DEBIT, CREDIT
        bigquery.SchemaField("amount", "FLOAT64"),
        bigquery.SchemaField("currency", "STRING"),
        bigquery.SchemaField("timestamp", "TIMESTAMP"),
        bigquery.SchemaField("originator_account", "STRING"),
        bigquery.SchemaField("beneficiary_account", "STRING"),
        bigquery.SchemaField("originator_country", "STRING"),
        bigquery.SchemaField("beneficiary_country", "STRING"),
    ]

    table_configs = [
        (f"{dataset_id}.party", party_schema),
        (f"{dataset_id}.transaction", transaction_schema),
    ]

    for table_id, schema in table_configs:
        table = bigquery.Table(f"{project_id}.{table_id}", schema=schema)
        bq_client.create_table(table, exists_ok=True)
```

### 3. Run Risk Scoring

```python
from google.cloud import financialservices_v1

def run_risk_scoring(
    project_id: str,
    location: str,
    instance_id: str,
    dataset: str,
    engine_config_id: str,
) -> dict:
    """Execute AML AI risk scoring on transaction data.

    Returns risk scores for all parties with explainability signals.
    """
    client = financialservices_v1.AMLClient()

    parent = f"projects/{project_id}/locations/{location}/instances/{instance_id}"

    # Create engine config (defines model and scoring parameters)
    engine_config = financialservices_v1.EngineConfig(
        display_name="Production AML Scoring",
        engine_version="latest",
        dataset=f"projects/{project_id}/locations/{location}/instances/{instance_id}/datasets/{dataset}",
    )

    # Run prediction
    prediction_result = client.create_prediction_result(
        parent=parent,
        prediction_result=financialservices_v1.PredictionResult(
            engine_config=f"{parent}/engineConfigs/{engine_config_id}",
        ),
    )

    return prediction_result.result()


def get_risk_scores(project_id: str, prediction_table: str, threshold: float = 0.7) -> list[dict]:
    """Query high-risk scores from AML AI prediction results.

    Args:
        project_id: GCP project ID
        prediction_table: BigQuery table with prediction results
        threshold: Risk score threshold (0-1, default 0.7 for high risk)
    """
    from google.cloud import bigquery

    bq = bigquery.Client(project=project_id)
    query = f"""
        SELECT
            party_id,
            risk_score,
            risk_category,
            explanation,
            top_signals
        FROM `{prediction_table}`
        WHERE risk_score >= {threshold}
        ORDER BY risk_score DESC
        LIMIT 100
    """
    results = bq.query(query).result()
    return [dict(row) for row in results]
```

### 4. Integrate Risk Scores into Agent Workflow

```python
def check_customer_aml_risk(customer_id: str) -> str:
    """Check AML risk score for a customer from Google AML AI.

    Args:
        customer_id: The customer/party identifier
    """
    from google.cloud import bigquery

    bq = bigquery.Client()
    query = """
        SELECT risk_score, risk_category, explanation, scored_at
        FROM `project.aml_results.latest_scores`
        WHERE party_id = @customer_id
        ORDER BY scored_at DESC
        LIMIT 1
    """
    job_config = bigquery.QueryJobConfig(
        query_parameters=[bigquery.ScalarQueryParameter("customer_id", "STRING", customer_id)]
    )
    rows = list(bq.query(query, job_config=job_config).result())

    if not rows:
        return f"No AML risk score found for customer {customer_id}."

    row = rows[0]
    risk_level = "HIGH" if row["risk_score"] >= 0.7 else "MEDIUM" if row["risk_score"] >= 0.4 else "LOW"

    result = (
        f"Customer {customer_id} AML Risk Assessment:\n"
        f"  Risk Score: {row['risk_score']:.3f} ({risk_level})\n"
        f"  Category: {row['risk_category']}\n"
        f"  Last Scored: {row['scored_at']}\n"
        f"  Explanation: {row['explanation']}"
    )

    if risk_level == "HIGH":
        result += "\n  ACTION REQUIRED: Escalate to compliance officer for enhanced due diligence."

    return result
```

### 5. Back-Testing Model Performance

```python
def backtest_aml_model(project_id: str, location: str, instance_id: str, engine_config_id: str) -> dict:
    """Run back-test to validate AML AI model against historical SARs.

    Compares model predictions against known suspicious activity to measure:
    - True positive rate (caught SARs)
    - False positive reduction vs. rules-based system
    - Coverage of different typologies
    """
    client = financialservices_v1.AMLClient()

    parent = f"projects/{project_id}/locations/{location}/instances/{instance_id}"

    backtest = client.create_backtest_result(
        parent=parent,
        backtest_result=financialservices_v1.BacktestResult(
            engine_config=f"{parent}/engineConfigs/{engine_config_id}",
        ),
    )

    result = backtest.result()
    return {
        "true_positive_rate": result.metrics.get("true_positive_rate"),
        "false_positive_reduction": result.metrics.get("false_positive_reduction"),
        "coverage": result.metrics.get("typology_coverage"),
    }
```

## Architecture

```
Core Banking / Payment System
  --> BigQuery (transaction + party data, AML AI schema)
    --> Google AML AI (ML risk scoring + explainability)
      --> BigQuery (risk scores + signals)
        --> AI Agent (investigation assistant, SAR drafting)
          --> Compliance Dashboard (human review + filing)
```

## Anti-Patterns

- Using AML AI scores as final decisions without human review -- regulatory requirement for human oversight
- Skipping back-testing before production deployment -- model validation is a regulatory expectation
- Not feeding investigation outcomes back to the model -- reduces model improvement over time
- Storing raw PII in AML AI without encryption -- use CMEK and data masking
- Running AML scoring infrequently (monthly) -- high-risk customers need near-real-time monitoring

## References

- [Google Cloud AML AI](https://cloud.google.com/financial-services/anti-money-laundering/docs/overview)
- [AML AI API Reference](https://cloud.google.com/financial-services/anti-money-laundering/docs/reference)
- [AML AI Architecture](https://cloud.google.com/architecture/anti-money-laundering-ai-architecture)
- [FATF Guidance on AI/ML in AML](https://www.fatf-gafi.org/)

<!-- Source: .faos/custom/skills/cloud/gcp/gcp-aml-ai/SKILL.md -->

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.