Global social platform reaches 99.6% moderation accuracy on Amazon Bedrock
Shared anonymously — the customer’s name is held by VeUP and available on request.
Production multimodal NSFW content moderation on Amazon Bedrock with the Qwen 3 VL model as the sole production classifier — selected after a structured head-to-head evaluation of five candidate engines.
The customer
A consumer social platform with an age-restricted user cohort (under-18 users and regulator-flagged accounts). The platform serves user-generated content moderation at consumer-social scale and is regulator-facing, with policy enforcement as a load-bearing product requirement.
The challenge
The platform had no production moderation pipeline for its age-restricted cohort. Internal stakeholders were debating Amazon Rekognition (managed moderation labels) versus a multimodal LLM approach on Amazon Bedrock, with no apples-to-apples data on accuracy, latency, cost, or operational fit for the actual content distribution. Buying decisions were being made on intuition, and third-party moderation vendors had already been explored and set aside.
The solution
VeUP ran a Phase 1 head-to-head evaluation across five candidate classifier engines on an identical labeled dataset: Meta Llama 4 Maverick, Meta Llama Guard 4, Amazon Nova Premier, Anthropic Claude Opus, and Amazon Rekognition. Bedrock Qwen 3 VL (bedrock::qwen.qwen3-vl-235b-a22b) emerged as the sole production engine — a single-hop classifier-with-policy-prompt with the customer's Community Guidelines taxonomy and an asymmetric-loss policy (“err toward the explicit class”) encoded directly in the Qwen 3 VL system prompt. The model emits the structured per-frame pass/block verdict in a single Amazon Bedrock Converse API hop.
Around the Qwen 3 VL core, AWS provides the full production pipeline: AWS Step Functions with a Map state at MaxConcurrency=5 (a deliberate Bedrock-quota dial), containerized AWS Lambda (via Amazon ECR for ffmpeg), Amazon EventBridge Pipes, Amazon API Gateway with AWS_IAM SigV4 auth, Amazon S3, cross-account Amazon SNS/SQS with single-principal-scoped policies, AWS Secrets Manager (rotating bearer token), AWS IAM / IAM Identity Center (JumpCloud federated, zero standing keys), and AWS CloudWatch + CloudTrail — all Terraform-provisioned. Amazon Rekognition is retained behind the same engine-router contract for A/B and fallback. The pipeline went live in May 2026.

Architecture
From no moderation pipeline at all to the production architecture — a synchronous image path, an asynchronous video pipeline, and the security and observability rails around both.

Where it started
Assessed baseline · new implementationMedia & Entertainment — consumer social · United StatesNo production moderation model existed for the age-restricted Safe Mode cohort — this was a net-new capability, not a migration or rehost.
DSA, OSA, and COPPA-adjacent obligations demanded a quantifiable accuracy bar before any production launch.
False positives tolerable for restricted users; false negatives never — across both image and video content.
No quantitative data on which moderation engine to choose — Bedrock, Rekognition, or third party — and limited in-house AI/ML capability.
An existing AWS-native estate (EKS and EMR under VeUP-managed FinOps) made AWS the natural target for the new moderation capability.
A greenfield build — the starting point above is the context as assessed, not a prior architecture.
Production outcomes
| KPI | Result |
|---|---|
| NSFW classification accuracy | 99.56–99.58% on Bedrock Qwen 3 VL vs an Amazon Rekognition baseline of 56.67% NSFW recall on the same head-to-head benchmark. +45.6 percentage-point lift from naive baseline (54%) to production (99.58%) — from prompt engineering alone, no fine-tuning. |
| Cost per 1,000 evaluations | ~$1.00 per 1,000 images end-to-end on the Phase 1 evaluation slice. Bedrock token economics: $0.20–$0.53 per million tokens. |
| Throughput | ~1,000 images per 20–25 minutes on the Phase 1 evaluation pipeline. Production async pipeline runs Step Functions Map at MaxConcurrency=5 to stay inside Bedrock invocation quotas while keeping per-video walltime bounded. |
| Dataset | ~50,000-image labeled corpus with a ~1,500-image Phase 1 evaluation slice covering all major NSFW categories. |