{"id":700,"date":"2026-04-15T02:00:43","date_gmt":"2026-04-15T02:00:43","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-anti-money-laundering-ai-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-industry-solutions\/"},"modified":"2026-04-15T02:00:43","modified_gmt":"2026-04-15T02:00:43","slug":"google-cloud-anti-money-laundering-ai-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-industry-solutions","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/google-cloud-anti-money-laundering-ai-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-industry-solutions\/","title":{"rendered":"Google Cloud Anti Money Laundering AI Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Industry solutions"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Industry solutions<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What this service is<\/h3>\n\n\n\n<p><strong>Anti Money Laundering AI<\/strong> is a Google Cloud <strong>Industry solutions<\/strong> offering for financial institutions that want to improve anti\u2013money laundering (AML) detection using machine learning. It is positioned for identifying suspicious behavior more accurately and reducing false positives compared to traditional rules-only monitoring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One-paragraph simple explanation<\/h3>\n\n\n\n<p>If you run AML monitoring (transaction monitoring, alerting, investigations), Anti Money Laundering AI is designed to help you <strong>spot higher-risk activity earlier<\/strong> and <strong>reduce time wasted on false alarms<\/strong>. Instead of relying only on static rules (thresholds, blacklists), it uses ML-driven signals derived from your transaction and customer data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">One-paragraph technical explanation<\/h3>\n\n\n\n<p>From a technical perspective, Anti Money Laundering AI is best understood as an <strong>industry solution<\/strong> that applies Google\u2019s ML capabilities to AML detection workflows. In practice, teams typically pair it with core Google Cloud data and AI services\u2014such as <strong>BigQuery<\/strong>, <strong>Cloud Storage<\/strong>, and <strong>Vertex AI<\/strong>\u2014to ingest transactional data, engineer features, score risk, and operationalize outcomes into alerting\/case management systems. Some parts of the offering and onboarding may be <strong>engagement-based rather than self-serve<\/strong> (verify current access model in official docs).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What problem it solves<\/h3>\n\n\n\n<p>AML programs often struggle with:\n&#8211; <strong>High false-positive alert volumes<\/strong> (expensive investigations, investigator fatigue).\n&#8211; <strong>Evolving typologies<\/strong> (new laundering patterns that rules fail to detect).\n&#8211; <strong>Disconnected entities<\/strong> (money laundering frequently involves networks of accounts, customers, businesses, and intermediaries).\n&#8211; <strong>Operational overhead<\/strong> (data pipelines, model governance, audits, and explainability requirements).<\/p>\n\n\n\n<p>Anti Money Laundering AI aims to address these by applying ML to better prioritize risk while supporting enterprise-grade security and governance expectations on Google Cloud.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Anti Money Laundering AI?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose<\/h3>\n\n\n\n<p>Anti Money Laundering AI is a Google Cloud solution in the financial services domain intended to help institutions <strong>detect and prioritize money laundering risk<\/strong> using machine learning.<\/p>\n\n\n\n<p>Because \u201cindustry solutions\u201d sometimes evolve packaging, onboarding, and delivery (for example: assisted onboarding, partner delivery, limited self-serve APIs), <strong>verify the current product scope and access model<\/strong> in the official product page and documentation:\n&#8211; https:\/\/cloud.google.com\/anti-money-laundering-ai<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (conceptual, verify exact features in docs)<\/h3>\n\n\n\n<p>Commonly described goals\/capabilities for Anti Money Laundering AI include:\n&#8211; ML-driven risk scoring to improve suspicious activity detection.\n&#8211; Reducing false positives compared to rules-only approaches.\n&#8211; Using richer signals from transaction flows and customer context.\n&#8211; Supporting operationalization into existing AML workflows (alerting, review, investigation, reporting).<br\/>\n<strong>Verify exact integration points and supported systems<\/strong> in official documentation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (how it typically fits in a Google Cloud implementation)<\/h3>\n\n\n\n<p>Even when the Anti Money Laundering AI offering is not a single \u201cone-click\u201d product, the end-to-end solution commonly includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Data ingestion layer<\/strong>: Batch and\/or streaming ingestion of transactions, customer profiles, accounts, counterparties, and reference lists.<\/li>\n<li>Often built with <strong>Pub\/Sub<\/strong>, <strong>Dataflow<\/strong>, <strong>Dataproc<\/strong>, or partner ingestion tools.<\/li>\n<li><strong>Data lake \/ warehouse<\/strong>: Central storage and analytics for feature creation and history.<\/li>\n<li>Frequently <strong>Cloud Storage<\/strong> + <strong>BigQuery<\/strong>.<\/li>\n<li><strong>ML layer<\/strong>: Training, evaluation, and\/or scoring (depending on the offering and your chosen architecture).<\/li>\n<li>Often <strong>Vertex AI<\/strong> and\/or <strong>BigQuery ML<\/strong> (implementation choice).<\/li>\n<li><strong>Serving \/ integration layer<\/strong>: Exporting scores and explanations to AML systems.<\/li>\n<li>APIs, BigQuery outputs, or connectors to downstream systems.<\/li>\n<li><strong>Governance &amp; security<\/strong>: IAM, audit logging, encryption, and data residency controls.<\/li>\n<li><strong>Cloud IAM<\/strong>, <strong>Cloud Logging<\/strong>, <strong>Cloud KMS<\/strong>, and potentially <strong>VPC Service Controls<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<p>Anti Money Laundering AI is categorized as a <strong>Google Cloud Industry solution<\/strong> (Financial Services). It is not simply a foundational compute\/storage service; it is a domain-specific solution intended to be integrated into a broader data\/AI architecture.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scope: regional\/global\/zonal and tenancy considerations<\/h3>\n\n\n\n<p>Industry solutions can be:\n&#8211; Delivered as <strong>Google-managed solution components<\/strong>, sometimes with region constraints.\n&#8211; Integrated into <strong>your project(s)<\/strong> and region choices via the underlying Google Cloud services.<\/p>\n\n\n\n<p>Because availability, data residency, and provisioning can vary, treat these as <strong>implementation decisions<\/strong> and <strong>verify<\/strong>:\n&#8211; Whether Anti Money Laundering AI is provisioned per project, per organization, or per engagement\/contract.\n&#8211; Which regions are supported for data processing and storage.\n&#8211; Whether any components are multi-region or require specific locations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Google Cloud ecosystem<\/h3>\n\n\n\n<p>Anti Money Laundering AI typically sits on top of Google Cloud\u2019s data and AI stack:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BigQuery<\/strong> for analytics, feature engineering, and storing historical transactions.<\/li>\n<li><strong>Vertex AI<\/strong> for model training\/serving and MLOps practices (if you operationalize custom models around AML AI outputs).<\/li>\n<li><strong>Looker<\/strong> (or BigQuery BI Engine) for investigator dashboards and alert analytics.<\/li>\n<li><strong>Cloud Logging\/Monitoring<\/strong> for operational observability.<\/li>\n<li><strong>IAM\/KMS\/VPC-SC<\/strong> for security and compliance controls.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Anti Money Laundering AI?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Lower investigation costs<\/strong> by reducing false positives and prioritizing higher-risk alerts.<\/li>\n<li><strong>Faster detection<\/strong> of suspicious behavior by leveraging ML signals beyond static thresholds.<\/li>\n<li><strong>Improved program effectiveness<\/strong>: better alert quality often translates to better investigator throughput and better compliance outcomes.<\/li>\n<li><strong>Better adaptability<\/strong>: ML can help detect patterns that are hard to encode as rules.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Augments rules-based systems<\/strong>: many AML stacks start with rules; ML adds risk ranking and pattern recognition.<\/li>\n<li><strong>Works with large datasets<\/strong>: modern AML requires processing high-volume transaction streams and long histories.<\/li>\n<li><strong>Supports richer features<\/strong>: customer behavior, counterparty patterns, temporal patterns, and (in some AML approaches) network relationships.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integrates into existing monitoring and case workflows (verify supported integration patterns).<\/li>\n<li>Encourages standardization of data pipelines, feature definitions, and monitoring.<\/li>\n<li>Can support separation of duties: data engineering, ML engineering, compliance operations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implement on <strong>Google Cloud<\/strong> with enterprise controls:<\/li>\n<li>IAM least privilege, audit logging, encryption, key management.<\/li>\n<li>Private networking patterns and data perimeter controls (where required).<\/li>\n<li>Helps with explainability requirements by structuring signals and outcomes for review (verify what explainability is provided by the solution vs what you must implement).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uses Google Cloud managed services that can scale with transaction volume and data growth.<\/li>\n<li>Suitable for both <strong>batch scoring<\/strong> (daily\/near-daily) and <strong>near-real-time<\/strong> scoring architectures\u2014depending on your design and requirements.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose Anti Money Laundering AI when:\n&#8211; You have <strong>large alert volumes<\/strong> and want to reduce false positives.\n&#8211; Your institution has enough data maturity to support consistent ingestion and normalization of AML-relevant datasets.\n&#8211; You need a solution aligned with cloud security and governance controls.\n&#8211; You want an architecture that scales and can be operated by platform and SRE teams.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When they should not choose it<\/h3>\n\n\n\n<p>Anti Money Laundering AI may not be the right fit when:\n&#8211; You cannot legally move AML data to cloud or you lack approved cloud controls (unless you can satisfy requirements with region selection, encryption, and contractual terms).\n&#8211; Your data is too sparse or inconsistent to support ML-driven outcomes.\n&#8211; You need a fully self-contained, on-prem-only solution with no cloud dependency.\n&#8211; You need immediate \u201cplug-and-play\u201d integration but your AML stack cannot export\/import the required data formats. (Integration effort is often non-trivial.)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Anti Money Laundering AI used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Retail and commercial banking<\/li>\n<li>Payments providers and money service businesses<\/li>\n<li>Fintechs with transaction monitoring obligations<\/li>\n<li>Capital markets firms (depending on jurisdiction and use cases)<\/li>\n<li>Insurance (for certain transaction\/payment monitoring contexts)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compliance and financial crime operations (investigations, SAR\/STR preparation)<\/li>\n<li>Data engineering \/ data platform teams<\/li>\n<li>ML engineering \/ data science teams<\/li>\n<li>Security and risk governance teams<\/li>\n<li>Cloud platform \/ SRE \/ DevOps teams<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Batch risk scoring of transaction datasets<\/li>\n<li>Streaming or near-real-time transaction evaluation<\/li>\n<li>Entity-level and customer-level risk aggregation<\/li>\n<li>Alert triage and prioritization analytics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lakehouse-style: Cloud Storage (raw) \u2192 BigQuery (curated) \u2192 scoring outputs \u2192 downstream systems.<\/li>\n<li>Streaming-first: Pub\/Sub \u2192 Dataflow \u2192 feature store\/warehouse \u2192 scoring \u2192 alert queue.<\/li>\n<li>Hybrid: on-prem transaction system exports to cloud for scoring and analytics, results returned to on-prem.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Production deployments often require:<\/li>\n<li>Data governance, lineage, and retention controls<\/li>\n<li>Detailed auditability for models and decisioning<\/li>\n<li>Change management across compliance stakeholders<\/li>\n<li>Dev\/test environments often use:<\/li>\n<li>Masked\/synthetic datasets<\/li>\n<li>Reduced retention and smaller scale<\/li>\n<li>Tighter budgets and strict cleanup automation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dev\/test<\/strong>: validate ingestion, schema mapping, data quality, baseline metrics, and integration with alerting.<\/li>\n<li><strong>Production<\/strong>: enforce data residency, implement monitoring\/SLOs, automate deployments, and validate regulatory expectations for model changes and explainability.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Anti Money Laundering AI (as an Industry solution) is commonly evaluated. For each, the implementation details and supported capabilities should be confirmed in official docs and through your Google Cloud engagement.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Alert volume reduction (false positives)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Rules-based systems generate huge numbers of alerts, most benign.<\/li>\n<li><strong>Why this service fits<\/strong>: ML-based prioritization can reduce false positives and focus investigations.<\/li>\n<li><strong>Example scenario<\/strong>: A retail bank reduces investigator queue size by ranking alerts and only escalating top-risk cases.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Risk-based alert prioritization<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Not all alerts are equal; investigators need order-of-operations.<\/li>\n<li><strong>Why this service fits<\/strong>: Produces risk signals\/scores used to triage.<\/li>\n<li><strong>Example scenario<\/strong>: Daily batch scoring assigns customer-level risk tiers; investigators focus on top tiers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Typology adaptation (new laundering patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Criminal behaviors shift; rules lag behind.<\/li>\n<li><strong>Why this service fits<\/strong>: ML can incorporate multi-signal patterns and adapt more quickly (depending on retraining and governance).<\/li>\n<li><strong>Example scenario<\/strong>: Emerging mule-account patterns appear; ML identifies unusual flow behavior earlier than threshold rules.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Network or relationship-driven risk detection (where applicable)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Laundering often involves networks of accounts, counterparties, shell entities.<\/li>\n<li><strong>Why this service fits<\/strong>: Many modern AML approaches incorporate entity relationships and graph-like features.<br\/>\n<strong>Verify<\/strong> whether Anti Money Laundering AI directly provides graph\/network analysis or whether you build it using BigQuery\/Vertex AI.<\/li>\n<li><strong>Example scenario<\/strong>: Accounts that look benign alone become high-risk when linked to a known suspicious hub.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Customer-level risk aggregation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Transaction-level alerts miss cumulative patterns across time.<\/li>\n<li><strong>Why this service fits<\/strong>: Aggregates behaviors into customer\/entity risk signals.<\/li>\n<li><strong>Example scenario<\/strong>: Many small cash-like deposits over weeks trigger higher customer risk even if each transaction is below thresholds.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Cross-channel pattern detection<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Behavior differs across ACH\/wires\/cards\/P2P; siloed monitoring misses multi-channel patterns.<\/li>\n<li><strong>Why this service fits<\/strong>: Consolidated feature engineering across channels improves pattern detection.<\/li>\n<li><strong>Example scenario<\/strong>: A customer receives P2P inflows, quickly converts to wires; ML flags rapid layering behavior.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Consistent scoring outputs for downstream case management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Investigators need consistent, explainable signals in their case tools.<\/li>\n<li><strong>Why this service fits<\/strong>: Standardized risk scores and reason codes (verify) can be integrated.<\/li>\n<li><strong>Example scenario<\/strong>: The case management system ingests daily risk score tables and surfaces \u201ctop contributing signals\u201d to investigators.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Scenario simulation and threshold tuning<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Compliance teams need to understand impact of policy changes.<\/li>\n<li><strong>Why this service fits<\/strong>: Analytics in BigQuery can simulate alert volumes at different cutoffs using model scores.<\/li>\n<li><strong>Example scenario<\/strong>: \u201cIf we alert on top 0.5% risk, how many alerts per day and what historical true-positive rate?\u201d<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Investigator productivity analytics<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Hard to measure end-to-end operational efficiency and backlog risk.<\/li>\n<li><strong>Why this service fits<\/strong>: Data warehouse reporting can connect alerts, investigations, outcomes, and model scores.<\/li>\n<li><strong>Example scenario<\/strong>: Looker dashboards show alert aging, investigator throughput, and model drift indicators.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Regulatory audit support via traceable pipelines<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Auditors require evidence of data lineage, access control, and change management.<\/li>\n<li><strong>Why this service fits<\/strong>: Google Cloud provides audit logs and policy controls; pipelines can be versioned and reproducible.<\/li>\n<li><strong>Example scenario<\/strong>: Provide auditors with lineage of input tables, feature definitions, model versions, and access logs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Near-real-time risk scoring for high-risk rails (optional architecture)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Certain transaction types demand faster intervention.<\/li>\n<li><strong>Why this service fits<\/strong>: Streaming ingestion + scoring can provide rapid risk flags (implementation-dependent).<\/li>\n<li><strong>Example scenario<\/strong>: High-value wire transfers are scored in seconds; high-risk events trigger manual review.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Harmonizing inconsistent data across subsidiaries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Multinational institutions have different schemas, codes, and formats.<\/li>\n<li><strong>Why this service fits<\/strong>: Standardization in BigQuery and shared feature definitions improve comparability.<\/li>\n<li><strong>Example scenario<\/strong>: A global bank creates canonical transaction schemas and centralized scoring outputs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Note: Because Industry solutions can be packaged differently across customers and time, treat the items below as <strong>core feature themes<\/strong> commonly associated with Anti Money Laundering AI implementations on Google Cloud. <strong>Verify exact features, SLAs, and interfaces in official documentation and your Google Cloud agreement.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 1: ML-driven suspicious activity detection<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Uses machine learning signals to estimate suspiciousness or risk.<\/li>\n<li><strong>Why it matters<\/strong>: Detects patterns that rules may miss; improves alert quality.<\/li>\n<li><strong>Practical benefit<\/strong>: Fewer low-value alerts; better focus on meaningful investigations.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Requires quality historical data; outcome labels can be noisy; governance required for retraining.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 2: Alert prioritization \/ risk scoring outputs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Produces risk scores or ranks that can be used as cutoffs.<\/li>\n<li><strong>Why it matters<\/strong>: Most AML teams need triage mechanisms more than \u201cperfect classification.\u201d<\/li>\n<li><strong>Practical benefit<\/strong>: Lets operations teams control alert volumes through thresholds.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Choosing cutoffs is a policy decision; you must monitor for drift and unintended bias.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 3: Works with transaction and customer context data<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Uses transaction history plus customer\/account attributes (where available).<\/li>\n<li><strong>Why it matters<\/strong>: Money laundering patterns often show up over time and in context.<\/li>\n<li><strong>Practical benefit<\/strong>: Better detection of behaviors like structuring, layering, and unusual counterparties.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Data completeness and consistent identifiers are critical.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 4: Integration with Google Cloud data platform (BigQuery\/Storage)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Aligns with common Google Cloud data pipelines for ingestion and feature engineering.<\/li>\n<li><strong>Why it matters<\/strong>: AML is data-intensive; BigQuery is a common backbone for analytics and reporting.<\/li>\n<li><strong>Practical benefit<\/strong>: Scalable queries, centralized governance, and easier BI integration.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Cost management is essential for large queries and long retention.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 5: Operationalization patterns (batch and\/or streaming)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Supports architectures that score in batches and optionally in near-real-time.<\/li>\n<li><strong>Why it matters<\/strong>: Different rails need different response times.<\/li>\n<li><strong>Practical benefit<\/strong>: Start with batch, evolve to streaming for higher-risk use cases.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Streaming increases complexity, cost, and operational overhead.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 6: Explainability and investigator support (where provided\/implemented)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Helps provide reasons\/signals behind scoring outcomes (implementation-dependent).<\/li>\n<li><strong>Why it matters<\/strong>: Compliance requires explainability and defensibility.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster investigations when investigators see \u201cwhy\u201d an alert is high risk.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: \u201cExplainability\u201d varies by model and implementation; you may need to implement reason-code logic.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 7: Governance, audit logging, and controlled access<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Uses Google Cloud IAM, audit logs, encryption controls.<\/li>\n<li><strong>Why it matters<\/strong>: AML datasets are sensitive and regulated.<\/li>\n<li><strong>Practical benefit<\/strong>: Aligns with enterprise security patterns: least privilege, key control, and traceability.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Misconfigured IAM is a common failure mode; you must design for separation of duties.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Feature 8: Scalable analytics for compliance reporting<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Enables reporting over alerts, outcomes, model performance, and operational KPIs.<\/li>\n<li><strong>Why it matters<\/strong>: Compliance leadership needs metrics; auditors need evidence.<\/li>\n<li><strong>Practical benefit<\/strong>: Centralized BI with consistent definitions.<\/li>\n<li><strong>Limitations\/caveats<\/strong>: Requires robust data modeling and careful access controls.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>Anti Money Laundering AI typically fits into a pipeline with five layers:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Sources<\/strong>: Core banking\/payment systems, customer KYC systems, sanctions\/PEP lists, CRM, case tools.<\/li>\n<li><strong>Ingestion<\/strong>: Batch file drops, CDC streams, or event streams.<\/li>\n<li><strong>Storage &amp; modeling<\/strong>: Raw storage + curated warehouse tables.<\/li>\n<li><strong>Detection\/scoring<\/strong>: AML scoring models and\/or rules enrichment.<\/li>\n<li><strong>Actioning<\/strong>: Alert queues, case management, dashboards, and reporting.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow<\/h3>\n\n\n\n<p>A typical batch flow looks like this:\n1. Source systems export transactions and entity data.\n2. Data lands in Cloud Storage and\/or streams through Pub\/Sub.\n3. Data is cleaned and standardized (Dataflow\/Dataproc\/BigQuery SQL).\n4. Features are computed in BigQuery.\n5. Scores are produced (Anti Money Laundering AI and\/or Vertex AI\/BigQuery ML depending on your setup).\n6. Results are written back to BigQuery and exported to case tools and dashboards.<\/p>\n\n\n\n<p>A near-real-time flow is similar but uses Pub\/Sub + Dataflow and a low-latency scoring endpoint (often Vertex AI endpoint for custom models). Whether Anti Money Laundering AI provides an online scoring API should be <strong>verified<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services (common building blocks)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BigQuery<\/strong>: curated transaction tables, feature tables, outputs, investigator analytics.<\/li>\n<li><strong>Cloud Storage<\/strong>: raw landing zone, replayable history.<\/li>\n<li><strong>Pub\/Sub + Dataflow<\/strong>: streaming ingestion and transformation.<\/li>\n<li><strong>Vertex AI<\/strong>: model training\/serving, model registry, pipelines (if you operationalize ML).<\/li>\n<li><strong>Looker<\/strong>: dashboards for alert trends and operational KPIs.<\/li>\n<li><strong>Cloud Logging\/Monitoring<\/strong>: pipeline health, error tracking, SLOs.<\/li>\n<li><strong>Cloud KMS<\/strong>: customer-managed encryption keys (where required).<\/li>\n<li><strong>Secret Manager<\/strong>: storing credentials for connectors (if any).<\/li>\n<li><strong>VPC Service Controls<\/strong>: data perimeter controls for sensitive datasets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>Anti Money Laundering AI implementations nearly always depend on:\n&#8211; A data warehouse (BigQuery) and\/or data lake (Cloud Storage)\n&#8211; IAM and org policy configuration\n&#8211; Networking configuration if private connectivity is required\n&#8211; Observability stack (logs\/metrics)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Access is typically controlled by <strong>Cloud IAM<\/strong> at the project and dataset levels.<\/li>\n<li>Service-to-service authentication uses <strong>service accounts<\/strong>.<\/li>\n<li>External system integration may use:<\/li>\n<li>Workload Identity Federation (preferred) for non-Google environments<\/li>\n<li>Service account keys (avoid if possible; if necessary, store in Secret Manager)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<p>Common patterns:\n&#8211; Public Google APIs with IAM controls (simple but may not meet strict compliance).\n&#8211; <strong>Private Google Access<\/strong> and\/or <strong>Private Service Connect<\/strong> (preferred where supported\/required).\n&#8211; Hybrid connectivity via <strong>Cloud VPN<\/strong> or <strong>Cloud Interconnect<\/strong> for on-prem sources.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Monitor ingestion latency, pipeline failures, schema drift, and data quality.<\/li>\n<li>Track scoring throughput, output completeness, and distribution changes.<\/li>\n<li>Use audit logs to track data access, IAM changes, and administrative actions.<\/li>\n<li>Implement data retention and lifecycle policies for raw vs curated datasets.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  A[Core banking \/ Payments systems] --&gt; B[Ingestion: batch files or events]\n  B --&gt; C[Cloud Storage (raw)]\n  B --&gt; D[BigQuery (curated)]\n  D --&gt; E[Anti Money Laundering AI scoring]\n  E --&gt; F[BigQuery (scores + reasons)]\n  F --&gt; G[Case management \/ Alerts]\n  F --&gt; H[Looker dashboards]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Sources\n    S1[Core transaction systems]\n    S2[KYC\/CRM systems]\n    S3[Reference lists (sanctions\/PEP)\\n(verify integration approach)]\n  end\n\n  subgraph Connectivity\n    C1[Cloud VPN \/ Interconnect]\n  end\n\n  subgraph Ingestion\n    I1[Pub\/Sub (stream)]\n    I2[Cloud Storage landing (batch)]\n    I3[Dataflow pipelines]\n  end\n\n  subgraph DataPlatform\n    D1[Cloud Storage raw zone\\n(bucket with retention)]\n    D2[BigQuery curated datasets\\npartitioned + clustered]\n    D3[Data quality checks\\n(SQL + scheduled queries)]\n  end\n\n  subgraph Scoring\n    M1[Anti Money Laundering AI\\n(scoring \/ risk signals)]\n    M2[Optional custom models\\n(Vertex AI \/ BigQuery ML)]\n  end\n\n  subgraph ServingAndAction\n    A1[BigQuery output tables\\nscores, explanations]\n    A2[Alert export job\\n(API\/SFTP\/connector)]\n    A3[Case mgmt system]\n    A4[Looker \/ BI]\n  end\n\n  subgraph SecurityOps\n    X1[IAM least privilege]\n    X2[Cloud KMS (CMEK)]\n    X3[VPC Service Controls]\n    X4[Cloud Logging + Monitoring]\n  end\n\n  S1 --&gt; C1 --&gt; I1\n  S1 --&gt; C1 --&gt; I2\n  S2 --&gt; C1 --&gt; I2\n  S3 --&gt; I2\n\n  I1 --&gt; I3 --&gt; D2\n  I2 --&gt; D1 --&gt; I3\n  I3 --&gt; D2\n  D2 --&gt; D3 --&gt; D2\n\n  D2 --&gt; M1 --&gt; A1\n  D2 --&gt; M2 --&gt; A1\n\n  A1 --&gt; A2 --&gt; A3\n  A1 --&gt; A4\n\n  X1 --- D2\n  X2 --- D1\n  X3 --- D2\n  X4 --- I3\n  X4 --- M1\n  X4 --- A2\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Because Anti Money Laundering AI is an Industry solution, prerequisites include both standard Google Cloud setup and any solution-specific provisioning.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Account\/project requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A <strong>Google Cloud project<\/strong> with <strong>billing enabled<\/strong>.<\/li>\n<li>An organization policy baseline suitable for regulated data (recommended).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>Minimum roles depend on what you will do in the lab and in production.<\/p>\n\n\n\n<p>For this tutorial lab (foundation + baseline AML analytics), you typically need:\n&#8211; <code>roles\/owner<\/code> (simplest for a sandbox), or a combination of:\n  &#8211; <code>roles\/serviceusage.serviceUsageAdmin<\/code> (enable APIs)\n  &#8211; <code>roles\/bigquery.admin<\/code>\n  &#8211; <code>roles\/storage.admin<\/code>\n  &#8211; <code>roles\/aiplatform.admin<\/code> (if using Vertex AI)\n  &#8211; <code>roles\/pubsub.admin<\/code> and <code>roles\/dataflow.admin<\/code> (only if you extend to streaming)<\/p>\n\n\n\n<p>For production, avoid Owner; use least privilege and separated admin roles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Billing account attached to the project.<\/li>\n<li>Budget alerts recommended.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CLI\/SDK\/tools needed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cloud Shell<\/strong> (recommended) or local tools:<\/li>\n<li><code>gcloud<\/code> CLI<\/li>\n<li><code>bq<\/code> CLI (included in Cloud Shell)<\/li>\n<li>Python 3 (optional for data generation)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose a BigQuery dataset location (US\/EU or region) consistent with your compliance needs.<\/li>\n<li>For Anti Money Laundering AI availability and supported regions: <strong>verify in official docs<\/strong><br\/>\n  https:\/\/cloud.google.com\/anti-money-laundering-ai<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Quotas vary by service:\n&#8211; BigQuery query and load quotas (project-level and per-user).\n&#8211; Storage and egress quotas\/limits.\n&#8211; Vertex AI training\/endpoint quotas (if used).\nAlways confirm in:\n&#8211; https:\/\/cloud.google.com\/docs\/quota<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services<\/h3>\n\n\n\n<p>For the hands-on tutorial in Section 10, you will use:\n&#8211; BigQuery\n&#8211; Cloud Storage\n&#8211; (Optional) Vertex AI (not strictly required if you use BigQuery ML)<\/p>\n\n\n\n<p>If you plan to build a streaming architecture, add:\n&#8211; Pub\/Sub\n&#8211; Dataflow<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Current pricing model (accurate framing)<\/h3>\n\n\n\n<p>Anti Money Laundering AI pricing is not always published as a simple public per-API-call price the way foundational services are. In many Industry solutions, pricing can be:\n&#8211; Contractual \/ negotiated (for the solution offering), and\/or\n&#8211; Based on underlying Google Cloud services consumed (BigQuery, Storage, Dataflow, Vertex AI, etc.)<\/p>\n\n\n\n<p><strong>Action<\/strong>: Confirm the current commercial model using:\n&#8211; Product page: https:\/\/cloud.google.com\/anti-money-laundering-ai\n&#8211; Google Cloud Pricing: https:\/\/cloud.google.com\/pricing\n&#8211; Pricing calculator: https:\/\/cloud.google.com\/products\/calculator\n&#8211; Underlying service pricing:\n  &#8211; BigQuery pricing: https:\/\/cloud.google.com\/bigquery\/pricing\n  &#8211; Cloud Storage pricing: https:\/\/cloud.google.com\/storage\/pricing\n  &#8211; Vertex AI pricing: https:\/\/cloud.google.com\/vertex-ai\/pricing\n  &#8211; Dataflow pricing: https:\/\/cloud.google.com\/dataflow\/pricing\n  &#8211; Pub\/Sub pricing: https:\/\/cloud.google.com\/pubsub\/pricing<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (what typically drives cost)<\/h3>\n\n\n\n<p>Even if Anti Money Laundering AI itself is contract-priced, your end-to-end system cost usually depends on:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Data volume<\/strong>\n   &#8211; Transactions per day\n   &#8211; Historical retention (months\/years)\n   &#8211; Feature table size and update frequency<\/p>\n<\/li>\n<li>\n<p><strong>Compute for transformation<\/strong>\n   &#8211; Dataflow jobs (streaming and batch)\n   &#8211; Dataproc clusters (if used)<\/p>\n<\/li>\n<li>\n<p><strong>BigQuery<\/strong>\n   &#8211; Storage (active + long-term)\n   &#8211; Query processing (on-demand bytes processed or capacity-based pricing)\n   &#8211; Scheduled queries and feature generation jobs<\/p>\n<\/li>\n<li>\n<p><strong>ML training and serving (if used)<\/strong>\n   &#8211; Vertex AI training hours\n   &#8211; Endpoint uptime and prediction volume\n   &#8211; Feature Store usage (if adopted)<\/p>\n<\/li>\n<li>\n<p><strong>Networking<\/strong>\n   &#8211; Inter-region egress (avoid where possible)\n   &#8211; Hybrid connectivity costs (VPN\/Interconnect)\n   &#8211; Data transfer to external case tools<\/p>\n<\/li>\n<li>\n<p><strong>Observability<\/strong>\n   &#8211; Logging volume (Cloud Logging ingestion and retention)\n   &#8211; Monitoring metrics and alert policies<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier (if applicable)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Many Google Cloud services have limited free tiers or always-free usage. These vary and change.<\/li>\n<li>For AML-scale workloads, free tier typically does not materially cover production needs.<\/li>\n<li>Check current free tier details:<\/li>\n<li>https:\/\/cloud.google.com\/free<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden or indirect costs to plan for<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BigQuery query costs<\/strong> from ad-hoc investigator analytics and dashboards.<\/li>\n<li><strong>Duplicate datasets<\/strong> for dev\/test environments.<\/li>\n<li><strong>Data reprocessing<\/strong> due to schema changes or late-arriving events.<\/li>\n<li><strong>Long retention<\/strong> of raw transaction history.<\/li>\n<li><strong>Egress charges<\/strong> if you export large score tables to non-Google systems.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep storage, processing, and BI in the <strong>same BigQuery location<\/strong> to reduce cross-location costs and complexity.<\/li>\n<li>Avoid frequent exports of large datasets across regions or to the public internet.<\/li>\n<li>Prefer private connectivity for on-prem integration where required.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BigQuery:<\/li>\n<li>Partition and cluster transaction tables.<\/li>\n<li>Use incremental feature builds (only new data) rather than full rebuilds.<\/li>\n<li>Consider capacity pricing for predictable workloads (verify if appropriate).<\/li>\n<li>Storage:<\/li>\n<li>Use lifecycle policies to move old raw data to colder storage classes (if compliant).<\/li>\n<li>Dataflow:<\/li>\n<li>Right-size worker types and autoscaling; avoid always-on streaming jobs if not needed.<\/li>\n<li>Logging:<\/li>\n<li>Use log exclusions for noisy logs; tune retention.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated prices)<\/h3>\n\n\n\n<p>A low-cost proof-of-concept can be kept small by:\n&#8211; Using synthetic data (tens of thousands of rows).\n&#8211; Using BigQuery with limited query runs.\n&#8211; Avoiding streaming jobs and always-on endpoints.<\/p>\n\n\n\n<p>Cost will be dominated by <strong>BigQuery query processing<\/strong> and <strong>storage<\/strong>, both of which you can estimate in the pricing calculator:\n&#8211; https:\/\/cloud.google.com\/products\/calculator<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>Production AML monitoring often includes:\n&#8211; Multi-year retention\n&#8211; Multiple rails\/channels\n&#8211; Frequent feature refresh\n&#8211; Frequent dashboard usage\n&#8211; Possibly near-real-time pipelines<\/p>\n\n\n\n<p>In that case, cost drivers typically become:\n&#8211; BigQuery query processing (feature engineering and reporting)\n&#8211; Dataflow streaming compute (if used)\n&#8211; Export\/integration jobs\n&#8211; Compliance-driven duplication (dev\/test\/prod) and DR<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab is designed to be <strong>real, executable, and low-cost<\/strong>, even if you do not yet have full Anti Money Laundering AI provisioning in your environment.<\/p>\n\n\n\n<p>Because Anti Money Laundering AI is an <strong>Industry solution<\/strong> that may require specific provisioning or an engagement, this tutorial focuses on:\n&#8211; Building the <strong>data foundation<\/strong> commonly required for AML AI projects on Google Cloud.\n&#8211; Creating a <strong>baseline AML-style risk scoring workflow<\/strong> using <strong>BigQuery + BigQuery ML<\/strong>.\n&#8211; Showing exactly where Anti Money Laundering AI typically plugs in (conceptually), without inventing undocumented API calls.<\/p>\n\n\n\n<p>If you already have Anti Money Laundering AI enabled\/provisioned, you can use the same dataset and outputs as integration inputs\/benchmarks and follow your official enablement guide for actual AML AI scoring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a BigQuery dataset for AML analytics.<\/li>\n<li>Generate a small synthetic transaction dataset.<\/li>\n<li>Engineer basic AML features in SQL.<\/li>\n<li>Train a baseline model with BigQuery ML to produce a risk score.<\/li>\n<li>Produce a \u201ctop alerts\u201d table investigators could consume.<\/li>\n<li>Clean up resources.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Time<\/strong>: ~45\u201375 minutes  <\/li>\n<li><strong>Cost<\/strong>: Low (mostly BigQuery queries + minimal storage; depends on your usage)<\/li>\n<li><strong>Tools<\/strong>: Cloud Shell, BigQuery<\/li>\n<li><strong>Outcome<\/strong>: A working dataset and scoring workflow you can extend and later compare with Anti Money Laundering AI outputs.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create and configure a Google Cloud project<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p>Open Cloud Shell in the Google Cloud Console.<\/p>\n<\/li>\n<li>\n<p>Set your project variables:<\/p>\n<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">export PROJECT_ID=\"YOUR_PROJECT_ID\"\nexport REGION=\"us-central1\"\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Ensure <code>gcloud<\/code> is using the right project:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">gcloud config set project \"${PROJECT_ID}\"\ngcloud config get-value project\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: Your active project is <code>YOUR_PROJECT_ID<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Enable required APIs<\/h3>\n\n\n\n<p>Enable the BigQuery and Storage APIs (and BigQuery ML is part of BigQuery):<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services enable \\\n  bigquery.googleapis.com \\\n  storage.googleapis.com\n<\/code><\/pre>\n\n\n\n<p>(Optional, only if you later extend to Vertex AI):<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services enable aiplatform.googleapis.com\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: APIs enable successfully (may take 30\u201390 seconds).<\/p>\n\n\n\n<p>Verification:<\/p>\n\n\n\n<pre><code class=\"language-bash\">gcloud services list --enabled --filter=\"name:(bigquery.googleapis.com storage.googleapis.com)\"\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create a BigQuery dataset<\/h3>\n\n\n\n<p>Choose a location consistent with your compliance requirements. For a sandbox, <code>US<\/code> is common. For EU residency, choose <code>EU<\/code>.<\/p>\n\n\n\n<pre><code class=\"language-bash\">export BQ_LOCATION=\"US\"\nexport BQ_DATASET=\"aml_lab\"\n\nbq --location=\"${BQ_LOCATION}\" mk -d \\\n  --description \"AML lab dataset for baseline scoring\" \\\n  \"${PROJECT_ID}:${BQ_DATASET}\"\n<\/code><\/pre>\n\n\n\n<p>Verification:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq ls \"${PROJECT_ID}:${BQ_DATASET}\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: Dataset <code>aml_lab<\/code> exists.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Generate a synthetic transaction dataset and load into BigQuery<\/h3>\n\n\n\n<p>This step creates a small CSV locally in Cloud Shell and loads it into BigQuery.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a file <code>generate_transactions.py<\/code>:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">cat &gt; generate_transactions.py &lt;&lt;'PY'\nimport csv\nimport random\nimport uuid\nfrom datetime import datetime, timedelta\n\nrandom.seed(7)\n\nNUM_CUSTOMERS = 200\nNUM_ACCOUNTS = 350\nNUM_TX = 25000\n\ncustomers = [f\"C{str(i).zfill(5)}\" for i in range(1, NUM_CUSTOMERS+1)]\naccounts = [f\"A{str(i).zfill(6)}\" for i in range(1, NUM_ACCOUNTS+1)]\n\n# Map accounts to customers (some customers have multiple accounts)\nacct_to_cust = {}\nfor a in accounts:\n    acct_to_cust[a] = random.choice(customers)\n\n# Some \"mule-like\" accounts: higher tx velocity and pass-through behavior\nmule_accounts = set(random.sample(accounts, 12))\n\nstart = datetime.utcnow() - timedelta(days=30)\n\ndef pick_amount(is_mule=False):\n    if is_mule:\n        # Many mid-size transfers\n        return round(random.uniform(400, 4800), 2)\n    # Typical consumer-ish\n    return round(random.choice([\n        random.uniform(5, 80),\n        random.uniform(80, 250),\n        random.uniform(250, 1200),\n        random.uniform(1200, 5000),\n    ]), 2)\n\ndef pick_channel():\n    return random.choice([\"ach\", \"wire\", \"card\", \"p2p\", \"cash_like\"])\n\nrows = []\nfor _ in range(NUM_TX):\n    ts = start + timedelta(minutes=random.randint(0, 30*24*60))\n    src = random.choice(accounts)\n    dst = random.choice(accounts)\n    while dst == src:\n        dst = random.choice(accounts)\n\n    is_mule = src in mule_accounts\n    channel = pick_channel()\n    amt = pick_amount(is_mule=is_mule)\n\n    # Add some \"structuring-like\" behavior: repeated near-threshold cash_like\n    if channel == \"cash_like\" and random.random() &lt; 0.08:\n        amt = round(random.uniform(900, 990), 2)\n\n    rows.append({\n        \"transaction_id\": str(uuid.uuid4()),\n        \"event_ts\": ts.isoformat(timespec=\"seconds\") + \"Z\",\n        \"source_account\": src,\n        \"source_customer\": acct_to_cust[src],\n        \"dest_account\": dst,\n        \"dest_customer\": acct_to_cust[dst],\n        \"amount\": amt,\n        \"currency\": \"USD\",\n        \"channel\": channel\n    })\n\n# Create a weak synthetic label for demo purposes only:\n# suspicious if mule account OR repeated near-threshold cash_like patterns are likely.\n# This is not a real AML label; it is just for a runnable ML demo.\ndef suspicious(row):\n    if row[\"source_account\"] in mule_accounts:\n        return 1\n    if row[\"channel\"] == \"cash_like\" and 900 &lt;= row[\"amount\"] &lt;= 995 and random.random() &lt; 0.5:\n        return 1\n    if row[\"channel\"] == \"wire\" and row[\"amount\"] &gt; 4500 and random.random() &lt; 0.25:\n        return 1\n    return 0\n\nfor r in rows:\n    r[\"label_suspicious\"] = suspicious(r)\n\nwith open(\"transactions.csv\", \"w\", newline=\"\") as f:\n    w = csv.DictWriter(f, fieldnames=list(rows[0].keys()))\n    w.writeheader()\n    w.writerows(rows)\n\nprint(\"Wrote transactions.csv with rows:\", len(rows))\nPY\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Run it:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">python3 generate_transactions.py\nls -lh transactions.csv\nhead -n 3 transactions.csv\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: A CSV file exists with 25,000 rows.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Create a BigQuery table and load the CSV:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">export TX_TABLE=\"${PROJECT_ID}:${BQ_DATASET}.transactions_raw\"\n\nbq mk --table \\\n  \"${TX_TABLE}\" \\\n  transaction_id:STRING,event_ts:TIMESTAMP,source_account:STRING,source_customer:STRING,dest_account:STRING,dest_customer:STRING,amount:FLOAT,currency:STRING,channel:STRING,label_suspicious:INT64\n<\/code><\/pre>\n\n\n\n<p>Load:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq load \\\n  --source_format=CSV \\\n  --skip_leading_rows=1 \\\n  \"${TX_TABLE}\" \\\n  .\/transactions.csv\n<\/code><\/pre>\n\n\n\n<p>Verification:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n'SELECT COUNT(*) AS rows, COUNTIF(label_suspicious=1) AS suspicious\n FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.transactions_raw`'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: <code>rows = 25000<\/code> and some suspicious labels &gt; 0.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Create curated tables and AML-style feature engineering<\/h3>\n\n\n\n<p>In real AML programs, features can be extensive. Here we implement a simple, explainable set:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Transaction amount and channel<\/li>\n<li>Per-account velocity (transactions in last day)<\/li>\n<li>Per-account total amount in last day<\/li>\n<li>Near-threshold cash-like indicator<\/li>\n<li>Pass-through behavior proxy (incoming and outgoing within 1 day) \u2014 simplified<\/li>\n<\/ul>\n\n\n\n<p>Run the following query to create a feature table:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n\"CREATE OR REPLACE TABLE \\`${PROJECT_ID}.${BQ_DATASET}.tx_features\\` AS\nWITH base AS (\n  SELECT\n    transaction_id,\n    event_ts,\n    source_account,\n    source_customer,\n    dest_account,\n    dest_customer,\n    amount,\n    channel,\n    label_suspicious\n  FROM \\`${PROJECT_ID}.${BQ_DATASET}.transactions_raw\\`\n),\nsrc_1d AS (\n  SELECT\n    b.*,\n    (\n      SELECT COUNT(*)\n      FROM base b2\n      WHERE b2.source_account = b.source_account\n        AND b2.event_ts BETWEEN TIMESTAMP_SUB(b.event_ts, INTERVAL 1 DAY) AND b.event_ts\n    ) AS src_tx_count_1d,\n    (\n      SELECT SUM(amount)\n      FROM base b2\n      WHERE b2.source_account = b.source_account\n        AND b2.event_ts BETWEEN TIMESTAMP_SUB(b.event_ts, INTERVAL 1 DAY) AND b.event_ts\n    ) AS src_amount_sum_1d\n  FROM base b\n),\ndst_1d AS (\n  SELECT\n    s.*,\n    (\n      SELECT COUNT(*)\n      FROM base b3\n      WHERE b3.dest_account = s.source_account\n        AND b3.event_ts BETWEEN TIMESTAMP_SUB(s.event_ts, INTERVAL 1 DAY) AND s.event_ts\n    ) AS incoming_to_src_count_1d\n  FROM src_1d s\n)\nSELECT\n  transaction_id,\n  event_ts,\n  source_account,\n  source_customer,\n  dest_account,\n  dest_customer,\n  amount,\n  channel,\n  src_tx_count_1d,\n  IFNULL(src_amount_sum_1d, 0.0) AS src_amount_sum_1d,\n  incoming_to_src_count_1d,\n  IF(channel = 'cash_like' AND amount BETWEEN 900 AND 995, 1, 0) AS near_threshold_cash_like,\n  label_suspicious\nFROM dst_1d;\"\n<\/code><\/pre>\n\n\n\n<p>Verification:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n'SELECT * FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.tx_features` LIMIT 5'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: A feature table exists with feature columns populated.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Train a baseline BigQuery ML model<\/h3>\n\n\n\n<p>We will train a simple logistic regression classifier. This is not a \u201creal AML model\u201d and not a replacement for Anti Money Laundering AI; it is a baseline to demonstrate an executable scoring pipeline.<\/p>\n\n\n\n<p>Create the model:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n\"CREATE OR REPLACE MODEL \\`${PROJECT_ID}.${BQ_DATASET}.aml_baseline_model\\`\nOPTIONS (\n  model_type='logistic_reg',\n  input_label_cols=['label_suspicious'],\n  data_split_method='AUTO_SPLIT'\n) AS\nSELECT\n  amount,\n  channel,\n  src_tx_count_1d,\n  src_amount_sum_1d,\n  incoming_to_src_count_1d,\n  near_threshold_cash_like,\n  label_suspicious\nFROM \\`${PROJECT_ID}.${BQ_DATASET}.tx_features\\`;\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: BigQuery ML model is created.<\/p>\n\n\n\n<p>Evaluate the model:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n\"SELECT * FROM ML.EVALUATE(MODEL \\`${PROJECT_ID}.${BQ_DATASET}.aml_baseline_model\\`);\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: Evaluation metrics (AUC, log_loss, etc.) appear. Metrics will vary because data is synthetic.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Score transactions and create an \u201calerts\u201d table<\/h3>\n\n\n\n<p>Create a scored table with predicted probability:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n\"CREATE OR REPLACE TABLE \\`${PROJECT_ID}.${BQ_DATASET}.tx_scored\\` AS\nSELECT\n  f.*,\n  p.predicted_label,\n  p.predicted_label_probs[OFFSET(1)].prob AS risk_score\nFROM \\`${PROJECT_ID}.${BQ_DATASET}.tx_features\\` f\nJOIN ML.PREDICT(MODEL \\`${PROJECT_ID}.${BQ_DATASET}.aml_baseline_model\\`,\n  (SELECT * EXCEPT(label_suspicious) FROM \\`${PROJECT_ID}.${BQ_DATASET}.tx_features\\`)\n) p\nUSING(transaction_id);\"\n<\/code><\/pre>\n\n\n\n<p>Create a \u201ctop alerts\u201d view\/table:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n\"CREATE OR REPLACE TABLE \\`${PROJECT_ID}.${BQ_DATASET}.alerts_top\\` AS\nSELECT\n  transaction_id,\n  event_ts,\n  source_customer,\n  source_account,\n  dest_customer,\n  dest_account,\n  amount,\n  channel,\n  risk_score,\n  near_threshold_cash_like,\n  src_tx_count_1d,\n  src_amount_sum_1d,\n  incoming_to_src_count_1d\nFROM \\`${PROJECT_ID}.${BQ_DATASET}.tx_scored\\`\nORDER BY risk_score DESC\nLIMIT 200;\"\n<\/code><\/pre>\n\n\n\n<p>Verification:<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n'SELECT * FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.alerts_top` LIMIT 10'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: You see the top 200 highest-risk transactions with supporting features.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Map this lab to Anti Money Laundering AI (where it plugs in)<\/h3>\n\n\n\n<p>At this point, you have:\n&#8211; A curated dataset (<code>transactions_raw<\/code>)\n&#8211; A feature table (<code>tx_features<\/code>)\n&#8211; A scored output (<code>tx_scored<\/code>, <code>alerts_top<\/code>)<\/p>\n\n\n\n<p>In a real Anti Money Laundering AI project, the \u201cScoring\u201d box would typically be:\n&#8211; Anti Money Laundering AI-provided scoring\/signals (instead of, or alongside, the BigQuery ML model), and\n&#8211; Outputs would be exported to your case tooling.<\/p>\n\n\n\n<p><strong>Next action<\/strong>: If your organization has Anti Money Laundering AI provisioned, follow the official integration workflow and adapt the input schema and scoring outputs to match the official interface.<br\/>\nOfficial starting point:\n&#8211; https:\/\/cloud.google.com\/anti-money-laundering-ai<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Run the following checks:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Row counts:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n'SELECT\n  (SELECT COUNT(*) FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.transactions_raw`) AS raw_rows,\n  (SELECT COUNT(*) FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.tx_features`) AS feature_rows,\n  (SELECT COUNT(*) FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.tx_scored`) AS scored_rows,\n  (SELECT COUNT(*) FROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.alerts_top`) AS alert_rows;'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: <code>raw_rows = feature_rows = scored_rows = 25000<\/code>, <code>alert_rows = 200<\/code>.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Risk score distribution (sanity check):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">bq query --use_legacy_sql=false \\\n'SELECT\n  APPROX_QUANTILES(risk_score, 10) AS deciles\nFROM `'\"${PROJECT_ID}.${BQ_DATASET}\"'.tx_scored`;'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: An array of decile values between 0 and 1.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>API not enabled<\/strong>\n&#8211; <strong>Symptom<\/strong>: <code>Access Not Configured<\/code> or <code>API has not been used in project<\/code>.\n&#8211; <strong>Fix<\/strong>: Re-run <code>gcloud services enable bigquery.googleapis.com storage.googleapis.com<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>BigQuery location mismatch<\/strong>\n&#8211; <strong>Symptom<\/strong>: Errors when joining tables across datasets with different locations.\n&#8211; <strong>Fix<\/strong>: Keep all datasets used together in the same location (US or EU).<\/p>\n<\/li>\n<li>\n<p><strong>BigQuery ML permission denied<\/strong>\n&#8211; <strong>Symptom<\/strong>: Cannot create model.\n&#8211; <strong>Fix<\/strong>: Ensure you have <code>roles\/bigquery.admin<\/code> or appropriate BigQuery permissions.<\/p>\n<\/li>\n<li>\n<p><strong>Schema parsing errors on CSV load<\/strong>\n&#8211; <strong>Symptom<\/strong>: Load fails due to type mismatches.\n&#8211; <strong>Fix<\/strong>: Recreate the table schema exactly and re-run <code>bq load<\/code>. Inspect CSV header and sample rows.<\/p>\n<\/li>\n<li>\n<p><strong>High cost risk from repeated queries<\/strong>\n&#8211; <strong>Symptom<\/strong>: Many ad-hoc queries scanning entire table.\n&#8211; <strong>Fix<\/strong>: Use partitioning for large tables (not necessary for this small lab), limit SELECTs, and avoid repeated full scans.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing costs, delete the dataset (this removes tables and the model):<\/p>\n\n\n\n<pre><code class=\"language-bash\">bq rm -r -f \"${PROJECT_ID}:${BQ_DATASET}\"\n<\/code><\/pre>\n\n\n\n<p>(Optional) Delete local files:<\/p>\n\n\n\n<pre><code class=\"language-bash\">rm -f transactions.csv generate_transactions.py\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: Dataset is removed and no longer appears in BigQuery.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Design a <strong>canonical transaction schema<\/strong> early (ids, timestamps, counterparties, channels, amounts, currency, status).<\/li>\n<li>Build a <strong>replayable raw zone<\/strong> in Cloud Storage for auditability and reprocessing.<\/li>\n<li>Use BigQuery as the curated \u201csource of truth\u201d for features, scoring outputs, and reporting.<\/li>\n<li>Separate ingestion, transformation, scoring, and export into independently deployable components.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>least privilege<\/strong> roles; avoid Owner in production.<\/li>\n<li>Separate duties:<\/li>\n<li>Platform admins<\/li>\n<li>Data engineers<\/li>\n<li>ML engineers<\/li>\n<li>Compliance investigators (read-only access to curated outputs)<\/li>\n<li>Prefer <strong>Workload Identity Federation<\/strong> over service account keys for external systems.<\/li>\n<li>Protect sensitive datasets with:<\/li>\n<li>BigQuery dataset\/table permissions<\/li>\n<li>Column-level security and\/or row-level security where needed (verify your design requirements)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Partition\/cluster BigQuery transaction and feature tables for large-scale workloads.<\/li>\n<li>Use incremental processing (daily partitions) rather than full rebuilds.<\/li>\n<li>Control BI costs:<\/li>\n<li>Pre-aggregate for dashboards<\/li>\n<li>Cache common metrics<\/li>\n<li>Set budgets and alerts:<\/li>\n<li>https:\/\/cloud.google.com\/billing\/docs\/how-to\/budgets<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep transformations set-based in BigQuery (SQL) when possible.<\/li>\n<li>For streaming, use Dataflow with schema evolution handling and dead-letter queues.<\/li>\n<li>Minimize cross-region movement; keep compute near data.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Implement retries and idempotency for ingestion and export.<\/li>\n<li>Use backfill strategies for late-arriving events.<\/li>\n<li>Maintain runbooks and SLOs for:<\/li>\n<li>ingestion latency<\/li>\n<li>scoring completion time<\/li>\n<li>export success<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralize logs with consistent correlation IDs (batch id, job id).<\/li>\n<li>Track data quality:<\/li>\n<li>missing fields<\/li>\n<li>duplicate transactions<\/li>\n<li>unexpected spikes\/drops<\/li>\n<li>Monitor score drift:<\/li>\n<li>distribution shift<\/li>\n<li>alert volume changes after model updates<\/li>\n<li>Version control SQL, pipelines, and model configuration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use consistent naming:<\/li>\n<li><code>raw_<\/code>, <code>curated_<\/code>, <code>features_<\/code>, <code>scores_<\/code><\/li>\n<li>Apply labels\/tags on projects and datasets for cost attribution.<\/li>\n<li>Document data lineage and data owners per dataset.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use Cloud IAM and BigQuery IAM:<\/li>\n<li>Project-level for admin actions<\/li>\n<li>Dataset\/table-level for data access<\/li>\n<li>Consider separate projects for:<\/li>\n<li>dev\/test<\/li>\n<li>staging<\/li>\n<li>production<\/li>\n<li>Use groups (Cloud Identity \/ Workspace) for human access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Default encryption at rest is provided by Google Cloud services.<\/li>\n<li>For regulated workloads, consider <strong>CMEK<\/strong> with Cloud KMS (where supported by the underlying services you use).<\/li>\n<li>Cloud KMS: https:\/\/cloud.google.com\/kms\/docs<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer private connectivity to on-prem and partner systems.<\/li>\n<li>Restrict egress with firewall rules and (where relevant) VPC Service Controls.<\/li>\n<li>Avoid exposing data export endpoints to the public internet if compliance requires private paths.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Store secrets in <strong>Secret Manager<\/strong>, not in code or CI logs:<\/li>\n<li>https:\/\/cloud.google.com\/secret-manager\/docs<\/li>\n<li>Prefer identity-based access (federation) over static credentials.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and retain:<\/li>\n<li>Admin Activity logs (enabled by default)<\/li>\n<li>Data Access logs for BigQuery datasets where required (note: can increase log volume and cost)<\/li>\n<li>Use audit logs to support compliance and incident response:<\/li>\n<li>https:\/\/cloud.google.com\/logging\/docs\/audit<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<p>AML data includes sensitive personal and financial information.\n&#8211; Validate your controls against your regulatory requirements (jurisdiction-specific).\n&#8211; Use data minimization and masking for dev\/test.\n&#8211; Define retention schedules aligned with AML recordkeeping rules.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Giving broad roles (Owner\/Editor) to too many users or service accounts.<\/li>\n<li>Mixing dev and prod data in the same dataset.<\/li>\n<li>Exporting large datasets to unmanaged endpoints.<\/li>\n<li>Lack of key rotation and lack of access reviews.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with an organization-level landing zone and policies.<\/li>\n<li>Use IaC (Terraform) to make IAM and network controls repeatable.<\/li>\n<li>Apply VPC Service Controls around BigQuery and Cloud Storage for sensitive perimeters (verify service compatibility in your environment).<\/li>\n<li>Run periodic IAM reviews and audit log reviews.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<blockquote>\n<p>Some items here depend on your exact Anti Money Laundering AI packaging and the Google Cloud services you use. Verify solution-specific constraints in official docs.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Known limitations (verify for Anti Money Laundering AI specifically)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Provisioning\/access<\/strong>: Some Industry solutions require an engagement and may not be self-serve.<\/li>\n<li><strong>Region constraints<\/strong>: Data residency requirements can constrain where processing occurs.<\/li>\n<li><strong>Integration constraints<\/strong>: Your case management and transaction systems may require custom connectors.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BigQuery quotas (queries, load jobs, API requests).<\/li>\n<li>Dataflow quotas (workers, job counts).<\/li>\n<li>Logging quotas and retention constraints.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Regional constraints<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BigQuery datasets are tied to a location; cross-location joins aren\u2019t allowed.<\/li>\n<li>If your AML workflow spans multiple regions, you must design for data locality.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing surprises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BigQuery costs from repeated feature queries and dashboards scanning large tables.<\/li>\n<li>Cloud Logging ingestion costs if verbose logs are retained.<\/li>\n<li>Data egress costs exporting scoring outputs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility issues<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Schema drift from upstream transaction systems can break pipelines.<\/li>\n<li>Inconsistent customer\/account identifiers reduce feature quality and detection.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Late-arriving transactions cause incomplete features unless you design backfills.<\/li>\n<li>Duplicate events can inflate velocity features unless you deduplicate.<\/li>\n<li>Model drift can cause sudden alert volume changes; coordinate with compliance teams.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Migration challenges<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Legacy AML systems often have proprietary data formats.<\/li>\n<li>Historical data may be incomplete or stored in disparate warehouses.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Vendor-specific nuances<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BigQuery\u2019s location model requires planning from day one.<\/li>\n<li>IAM and dataset permissions can be subtle\u2014test access patterns with least privilege early.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Anti Money Laundering AI is an Industry solution on Google Cloud; alternatives include building AML ML pipelines yourself, or using other clouds\u2019 AI\/ML platforms, or adopting specialized AML vendor platforms.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Google Cloud Anti Money Laundering AI<\/strong><\/td>\n<td>Financial institutions wanting a Google Cloud-aligned AML AI solution<\/td>\n<td>Domain-focused approach; integrates with Google Cloud data\/AI stack; enterprise security controls<\/td>\n<td>Provisioning and exact interfaces may be engagement-based; integration effort still required; verify region\/support<\/td>\n<td>When you want a Google Cloud-centered AML modernization path and can align data + governance<\/td>\n<\/tr>\n<tr>\n<td><strong>Build your own on Google Cloud (BigQuery + Vertex AI\/BigQuery ML)<\/strong><\/td>\n<td>Teams with strong DS\/ML engineering capacity<\/td>\n<td>Full control over data\/features\/models; flexible; self-serve<\/td>\n<td>Higher engineering and governance burden; harder to match domain productization<\/td>\n<td>When you need customization or want to start with a baseline before adopting a solution<\/td>\n<\/tr>\n<tr>\n<td><strong>Rules-only AML monitoring (legacy platforms)<\/strong><\/td>\n<td>Small programs or minimal-change environments<\/td>\n<td>Simple, established, explainable<\/td>\n<td>High false positives; slower to adapt<\/td>\n<td>When ML governance is not feasible yet or regulatory posture requires minimal change<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS (custom AML via SageMaker + data lake)<\/strong><\/td>\n<td>Organizations standardized on AWS<\/td>\n<td>Strong ML platform; broad services<\/td>\n<td>You build domain solution yourself; integration and governance burden<\/td>\n<td>When your enterprise platform is AWS-first and you can staff ML ops<\/td>\n<\/tr>\n<tr>\n<td><strong>Microsoft Azure (custom AML via Azure ML + data platform)<\/strong><\/td>\n<td>Organizations standardized on Azure<\/td>\n<td>Enterprise integration, ML tooling<\/td>\n<td>You build domain solution yourself; integration and governance burden<\/td>\n<td>When your enterprise platform is Azure-first and you can staff ML ops<\/td>\n<\/tr>\n<tr>\n<td><strong>Specialized AML vendor platforms (on-prem\/SaaS)<\/strong><\/td>\n<td>Institutions wanting out-of-the-box AML workflows<\/td>\n<td>Often includes case management and typologies; packaged workflows<\/td>\n<td>Cost, vendor lock-in; less control; integration complexity remains<\/td>\n<td>When you want a turnkey AML suite and accept vendor constraints<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example (large bank)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A multinational bank has millions of transactions per day and an AML monitoring system generating a high false-positive rate. Investigators are overloaded; audit requirements are strict; data residency is required (EU for certain lines of business).<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>On-prem transaction systems \u2192 private connectivity (Interconnect) \u2192 Cloud Storage raw zone (EU)  <\/li>\n<li>Dataflow batch\/stream transforms \u2192 BigQuery curated EU datasets (partitioned by day)  <\/li>\n<li>Scoring via Anti Money Laundering AI (where provisioned) and\/or Vertex AI for supporting models  <\/li>\n<li>Outputs written to BigQuery \u2192 exported to existing case management system  <\/li>\n<li>Looker dashboards for operational KPIs and model monitoring  <\/li>\n<li>Security: CMEK via Cloud KMS, VPC Service Controls perimeter, strict IAM roles, audit logs enabled<\/li>\n<li><strong>Why this service was chosen<\/strong>:<\/li>\n<li>Need a Google Cloud-aligned AML AI solution that fits into an enterprise data platform.<\/li>\n<li>Desire to reduce false positives and improve prioritization while meeting security controls.<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>Reduced alert volume at a fixed investigator capacity.<\/li>\n<li>Improved time-to-triage and better prioritization of high-risk behavior.<\/li>\n<li>Better audit readiness through centralized logging and controlled pipelines.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example (fintech)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A fintech needs an AML monitoring capability but has a small compliance team and limited engineering bandwidth. They need a pragmatic approach to prioritize alerts while meeting basic audit needs.<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>Transaction events exported daily \u2192 Cloud Storage \u2192 BigQuery  <\/li>\n<li>SQL-based features and simple baseline ML scoring via BigQuery ML (initially)  <\/li>\n<li>Alerts table exported to a lightweight internal case workflow  <\/li>\n<li>As maturity grows, evaluate Anti Money Laundering AI provisioning and integrate scoring signals<\/li>\n<li><strong>Why this service was chosen<\/strong>:<\/li>\n<li>Google Cloud managed services reduce ops overhead.<\/li>\n<li>BigQuery enables fast iteration and reporting.<\/li>\n<li>Anti Money Laundering AI is a potential next step once data maturity and governance are ready.<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>A functioning, auditable baseline monitoring pipeline.<\/li>\n<li>Clear path to improved detection and alert ranking as the program scales.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1) Is Anti Money Laundering AI a standalone API I can enable from the console?<\/h3>\n\n\n\n<p>It depends on the current packaging and availability. Many Google Cloud Industry solutions are not purely self-serve. Start at the official product page and follow the documented onboarding path (or contact sales if required): https:\/\/cloud.google.com\/anti-money-laundering-ai<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2) Do I need Vertex AI to use Anti Money Laundering AI?<\/h3>\n\n\n\n<p>Not necessarily. Anti Money Laundering AI is an Industry solution; some implementations may use Vertex AI alongside it for custom models or orchestration. Verify solution requirements in official docs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3) What data do I typically need for AML AI workflows?<\/h3>\n\n\n\n<p>Common inputs include transactions (amount, timestamp, source\/destination), accounts, customers, and contextual attributes (channel, currency, geography) plus investigation outcomes for model evaluation. Exact schema requirements for Anti Money Laundering AI should be verified in official docs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4) Can I start without labels (confirmed SAR\/STR outcomes)?<\/h3>\n\n\n\n<p>You can start with heuristics and rules to build baselines and data quality, but ML evaluation improves significantly with reliable labels. Some solutions may provide value without your labels; verify Anti Money Laundering AI requirements.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5) Is Anti Money Laundering AI real-time?<\/h3>\n\n\n\n<p>Some AML architectures support near-real-time scoring, but whether Anti Money Laundering AI provides online scoring versus batch interfaces must be verified. Many institutions begin with batch scoring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6) How do I reduce BigQuery cost in AML analytics?<\/h3>\n\n\n\n<p>Partition and cluster transaction tables, use incremental processing, restrict ad-hoc queries, and pre-aggregate for dashboards. Use the pricing calculator to estimate query patterns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7) How do I keep AML data private on Google Cloud?<\/h3>\n\n\n\n<p>Use IAM least privilege, private connectivity, encryption (including CMEK where needed), VPC Service Controls perimeters, and careful logging\/retention settings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8) How do I integrate scores into case management systems?<\/h3>\n\n\n\n<p>Typically by exporting risk scores and supporting fields to the system\u2019s ingestion mechanism (API, files, queues). Exact integration depends on the tool; plan for mapping identifiers and investigator workflows.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">9) How do I support explainability for investigators?<\/h3>\n\n\n\n<p>Use interpretable features and provide \u201creason codes\u201d or top contributing signals. If Anti Money Laundering AI provides built-in explanations, verify how they are delivered and what they mean.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">10) What are common failure modes in AML AI projects?<\/h3>\n\n\n\n<p>Poor data quality, inconsistent entity identifiers, lack of governance for model changes, and insufficient monitoring for drift and operational impact.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">11) Does this replace rules-based monitoring?<\/h3>\n\n\n\n<p>Usually no. Most AML programs use hybrid approaches: rules for certain regulatory scenarios and ML for prioritization and pattern detection.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">12) What\u2019s the difference between AML detection and fraud detection?<\/h3>\n\n\n\n<p>Fraud detection typically focuses on unauthorized or deceptive transactions (often immediate), while AML focuses on identifying laundering patterns and suspicious activity over time and networks; workflows and compliance requirements differ.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">13) How do I validate model performance without exposing sensitive data?<\/h3>\n\n\n\n<p>Use controlled environments, access controls, masked datasets for dev\/test, and aggregated reporting. Use audit logs to track access and enforce approvals.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">14) How long does an AML AI implementation take?<\/h3>\n\n\n\n<p>It varies widely based on data readiness, integration complexity, and governance. A small POC can take weeks; production rollout often takes months.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">15) Can I run this fully on-prem?<\/h3>\n\n\n\n<p>Anti Money Laundering AI is a Google Cloud solution. If you must stay fully on-prem, you may need a different approach (self-managed tools and models). Some hybrid designs keep sources on-prem and process in cloud under strict controls.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">16) How do I handle region\/data residency requirements?<\/h3>\n\n\n\n<p>Choose BigQuery dataset locations and storage regions accordingly, avoid cross-region processing, and validate that all components used in the solution are available in the required locations.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Anti Money Laundering AI<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official product page<\/td>\n<td>Google Cloud \u2014 Anti Money Laundering AI<\/td>\n<td>Primary entry point; scope, positioning, and onboarding details: https:\/\/cloud.google.com\/anti-money-laundering-ai<\/td>\n<\/tr>\n<tr>\n<td>Official docs (general)<\/td>\n<td>Google Cloud documentation<\/td>\n<td>Start here to find solution docs and integration guidance: https:\/\/cloud.google.com\/docs<\/td>\n<\/tr>\n<tr>\n<td>Pricing (solution + services)<\/td>\n<td>Google Cloud Pricing<\/td>\n<td>Explains pricing concepts and links to services: https:\/\/cloud.google.com\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Pricing calculator<\/td>\n<td>Google Cloud Pricing Calculator<\/td>\n<td>Estimate BigQuery\/Storage\/Dataflow\/Vertex AI costs: https:\/\/cloud.google.com\/products\/calculator<\/td>\n<\/tr>\n<tr>\n<td>BigQuery pricing<\/td>\n<td>BigQuery pricing<\/td>\n<td>Understand storage + query cost drivers: https:\/\/cloud.google.com\/bigquery\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Vertex AI pricing<\/td>\n<td>Vertex AI pricing<\/td>\n<td>If you run custom models: https:\/\/cloud.google.com\/vertex-ai\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Cloud Storage pricing<\/td>\n<td>Cloud Storage pricing<\/td>\n<td>Raw data lake costs: https:\/\/cloud.google.com\/storage\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Dataflow pricing<\/td>\n<td>Dataflow pricing<\/td>\n<td>Streaming\/batch pipeline costs: https:\/\/cloud.google.com\/dataflow\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Security logging<\/td>\n<td>Cloud Audit Logs<\/td>\n<td>Auditability and compliance logging: https:\/\/cloud.google.com\/logging\/docs\/audit<\/td>\n<\/tr>\n<tr>\n<td>Security keys<\/td>\n<td>Cloud KMS docs<\/td>\n<td>CMEK and key management concepts: https:\/\/cloud.google.com\/kms\/docs<\/td>\n<\/tr>\n<tr>\n<td>Architecture guidance<\/td>\n<td>Google Cloud Architecture Center<\/td>\n<td>Reference patterns for data\/AI architectures (search within): https:\/\/cloud.google.com\/architecture<\/td>\n<\/tr>\n<tr>\n<td>Quotas<\/td>\n<td>Google Cloud quotas documentation<\/td>\n<td>Plan limits and request increases: https:\/\/cloud.google.com\/docs\/quota<\/td>\n<\/tr>\n<tr>\n<td>Learning (data\/ML)<\/td>\n<td>BigQuery ML overview<\/td>\n<td>Practical ML inside BigQuery (useful baseline for AML-like scoring): https:\/\/cloud.google.com\/bigquery\/docs\/bqml-introduction<\/td>\n<\/tr>\n<tr>\n<td>Learning (MLOps)<\/td>\n<td>Vertex AI documentation<\/td>\n<td>MLOps and model serving patterns: https:\/\/cloud.google.com\/vertex-ai\/docs<\/td>\n<\/tr>\n<tr>\n<td>Community (general)<\/td>\n<td>Google Cloud Tech YouTube<\/td>\n<td>Official videos on BigQuery, Vertex AI, security, and architectures: https:\/\/www.youtube.com\/googlecloudtech<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, cloud engineers, architects<\/td>\n<td>Google Cloud fundamentals, DevOps, CI\/CD, cloud operations (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Developers, DevOps learners<\/td>\n<td>SCM, DevOps tooling, fundamentals (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud ops teams, SREs<\/td>\n<td>Cloud operations, reliability, automation (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, platform teams<\/td>\n<td>SRE practices, observability, reliability engineering (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops teams adopting ML\/automation<\/td>\n<td>AIOps concepts, monitoring automation, ML in operations (verify course catalog)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>Cloud\/DevOps training content (verify offerings)<\/td>\n<td>Students, engineers seeking guided training<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training (verify offerings)<\/td>\n<td>DevOps engineers, platform engineers<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps help\/training (verify offerings)<\/td>\n<td>Teams needing short-term coaching<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support\/training resources (verify offerings)<\/td>\n<td>Ops\/DevOps teams<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company name<\/th>\n<th>Likely service area<\/th>\n<th>Where they may help<\/th>\n<th>Consulting use case examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps\/data consulting (verify services)<\/td>\n<td>Architecture, implementation support, operationalization<\/td>\n<td>Data platform setup; CI\/CD; observability design<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Training + consulting (verify services)<\/td>\n<td>Enablement, DevOps transformation, cloud adoption<\/td>\n<td>Platform engineering setup; pipeline automation; cloud best practices<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting (verify services)<\/td>\n<td>DevOps processes, tooling, reliability improvements<\/td>\n<td>CI\/CD design; infrastructure automation; monitoring stack implementation<\/td>\n<td>https:\/\/devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<p>To succeed with Anti Money Laundering AI projects on Google Cloud, you should know:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Google Cloud fundamentals<\/strong><\/li>\n<li>Projects, billing, IAM, service accounts<\/li>\n<li>VPC basics, private connectivity options<\/li>\n<li><strong>Data engineering foundations<\/strong><\/li>\n<li>Cloud Storage, BigQuery datasets\/tables<\/li>\n<li>Partitioning, clustering, scheduled queries<\/li>\n<li>Data quality and schema management<\/li>\n<li><strong>Security and governance<\/strong><\/li>\n<li>Audit logs, least privilege, KMS\/CMEK concepts<\/li>\n<li>Data residency and retention planning<\/li>\n<li><strong>AML domain basics<\/strong><\/li>\n<li>Transaction monitoring concepts<\/li>\n<li>Alerting, investigations, SAR\/STR lifecycle (high level)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MLOps on Google Cloud<\/strong><\/li>\n<li>Vertex AI pipelines, model registry, monitoring (as applicable)<\/li>\n<li><strong>Streaming architectures<\/strong><\/li>\n<li>Pub\/Sub + Dataflow patterns, exactly-once semantics (where feasible), DLQs<\/li>\n<li><strong>Advanced analytics<\/strong><\/li>\n<li>Feature stores, entity resolution (if needed), graph analytics (if you implement relationship-based signals)<\/li>\n<li><strong>Compliance engineering<\/strong><\/li>\n<li>Model risk management, documentation, validation practices, audit support<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Solution Architect (Financial Services)<\/li>\n<li>Data Engineer \/ Analytics Engineer<\/li>\n<li>ML Engineer \/ Applied Scientist<\/li>\n<li>Platform Engineer \/ SRE<\/li>\n<li>Security Engineer (cloud governance)<\/li>\n<li>Financial Crime \/ AML Technology Specialist<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>There is not a known dedicated \u201cAnti Money Laundering AI certification\u201d on Google Cloud. A practical path is:\n&#8211; Google Cloud Associate\/Professional certifications relevant to your role (cloud architect, data engineer, ML engineer).<br\/>\nVerify current certifications: https:\/\/cloud.google.com\/learn\/certification<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build a canonical transaction schema and curated BigQuery model with partitioning.<\/li>\n<li>Implement data quality checks (nulls, duplicates, late events) and alert on anomalies.<\/li>\n<li>Create investigator dashboards (Looker or BigQuery) with top alerts and trends.<\/li>\n<li>Implement a batch scoring pipeline with BigQuery ML, then migrate to Vertex AI for managed MLOps.<\/li>\n<li>Build a synthetic entity network and experiment with relationship-based risk features (as an educational project).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AML (Anti\u2013Money Laundering)<\/strong>: Policies, controls, and processes to detect and report suspicious financial activity.<\/li>\n<li><strong>Alert<\/strong>: A flagged event\/transaction\/customer requiring review based on rules or model scores.<\/li>\n<li><strong>Case management<\/strong>: Systems and workflows used by investigators to review alerts, gather evidence, and document outcomes.<\/li>\n<li><strong>Feature engineering<\/strong>: Transforming raw data into model-ready inputs (counts, sums, recency, ratios, etc.).<\/li>\n<li><strong>False positive<\/strong>: An alert triggered for activity that is ultimately not suspicious.<\/li>\n<li><strong>Label<\/strong>: The target outcome used for supervised learning (for example, confirmed suspicious vs not).<\/li>\n<li><strong>Model drift<\/strong>: When model performance degrades due to changing data patterns over time.<\/li>\n<li><strong>Partitioning (BigQuery)<\/strong>: Splitting a table by time\/date or integer range to reduce scan cost and improve performance.<\/li>\n<li><strong>Clustering (BigQuery)<\/strong>: Organizing data by column values to reduce scanned data for filtered queries.<\/li>\n<li><strong>CMEK (Customer-Managed Encryption Keys)<\/strong>: Encryption keys controlled by the customer via Cloud KMS.<\/li>\n<li><strong>VPC Service Controls<\/strong>: Google Cloud security feature to reduce data exfiltration risk by creating service perimeters.<\/li>\n<li><strong>On-demand vs capacity pricing (BigQuery)<\/strong>: Paying per bytes processed vs reserving compute capacity (verify current options).<\/li>\n<li><strong>SAR\/STR<\/strong>: Suspicious Activity Report \/ Suspicious Transaction Report (jurisdiction-dependent terminology).<\/li>\n<li><strong>Typology<\/strong>: A known pattern of suspicious behavior used in AML detection.<\/li>\n<li><strong>Data residency<\/strong>: Requirement that data is stored\/processed in specific geographic locations.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Anti Money Laundering AI is a <strong>Google Cloud Industry solutions<\/strong> offering aimed at helping financial institutions improve AML detection and prioritization with machine learning. It matters because AML programs often face high false-positive volumes, evolving laundering patterns, and heavy operational costs.<\/p>\n\n\n\n<p>On Google Cloud, Anti Money Laundering AI typically fits into a broader architecture built around <strong>BigQuery<\/strong>, <strong>Cloud Storage<\/strong>, and (optionally) <strong>Vertex AI<\/strong>, with strong controls available for <strong>IAM<\/strong>, <strong>audit logging<\/strong>, <strong>encryption<\/strong>, and <strong>data perimeter security<\/strong>. Cost is usually driven less by \u201cAML AI calls\u201d and more by the surrounding data platform usage\u2014especially BigQuery query processing, retention, and pipeline compute\u2014so cost governance must be designed in from the start.<\/p>\n\n\n\n<p>Use Anti Money Laundering AI when you have the data maturity and governance capability to operationalize ML-driven risk scoring in a regulated environment, and when your organization can support the integration work into existing monitoring and case workflows. As a next step, review the official product page and documentation for the latest availability, onboarding, and interfaces: https:\/\/cloud.google.com\/anti-money-laundering-ai<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Industry solutions<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51,55],"tags":[],"class_list":["post-700","post","type-post","status-publish","format-standard","hentry","category-google-cloud","category-industry-solutions"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=700"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/700\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}