Media Processing Node
Handle media in RCS workflows with AI-powered analysisWhat Is the Media Processing Node?
The Media Processing Node is a specialized node type designed to handle inbound images, video, and files in RCS conversations. Unlike the AI Conversation Node which handles text-based dialogue, the Media Processing Node focuses on validating, analyzing, and extracting data from visual media.The Media Processing Node separates media processing logic from conversation flow. This means you can build reusable media handling patterns that work across multiple workflows and clients.
Key Capabilities
- Quality Gate: Automatically detect blur, poor lighting, bad framing, and obstructions using Claude Sonnet
- Coverage Scoring: Track which required photos have been submitted against a predefined shot taxonomy
- Dynamic Data Extraction: Extract structured data (VIN, license plates, text) using Google Vision OCR + Claude
- Video Processing: Extract keyframes from video uploads and score them against your taxonomy
- Decision Triggers: Route conversations based on media quality, coverage completion, and extraction results
Common Use Cases
How It Works
The Media Processing Node contains 7 configurable sections that process media in sequence:Processing Flow
- Routes the input based on type (image, video, file, or text)
- Validates quality and rejects unusable submissions with specific retry guidance
- Scores the photo against your taxonomy to track coverage progress
- Extracts any configured data fields (VIN, plate numbers, etc.)
- Evaluates decision triggers to determine next steps
Section 1: Input Type Handling
The entry point that routes incoming RCS messages to the appropriate processing pipeline based on media type.How It Works
When a message arrives, the node inspects the content type and routes accordingly:- Images (JPG, PNG, HEIC, WebP) → Quality Gate
- Videos (MP4, MOV) → Keyframe Extraction → Quality Gate
- Files (PDF, documents) → Document Parsing
- Text → AI Conversation Node (pass-through)
Configuration Options
Unsupported Type Message
Configure the message sent when users submit unsupported media types:Section 2: Quality Gate
Validates incoming media for blur, lighting, framing, and obstructions before proceeding. Rejects unusable submissions with specific guidance on how to improve.How It Works
Each image is sent to Claude Sonnet with a quality assessment prompt. Claude returns:- Quality Score (0.0 - 1.0)
- Detected Issues: blur, low light, too far away, obstructed view, glare, wrong subject
Configuration Options
Retry Message Template
{quality_issues} and {guidance} variables are automatically populated based on detected issues.
Output Variables
Expected Impact: With proper threshold tuning, expect 85%+ first-submission pass rate. Start with 0.6 threshold and adjust based on your use case.
Section 3: Coverage Scoring
Scores incoming photos against a predefined shot taxonomy. Tracks which shots have been captured, identifies gaps, and requests specific missing angles.How It Works
Each photo is sent to Claude Sonnet with your taxonomy definition. Claude determines which shot type(s) the photo satisfies based on the AI descriptions you’ve configured. The node maintains a running tally of captured vs. required shots and responds with:- Confirmation of what was captured
- List of remaining required shots
- Specific request for the next missing shot
Configuration Options
Missing Shot Message Template
Output Variables
Example Interaction
User sends: [front of car photo] Bot: “Got the front view! I still need: rear, left side, right side, corners, VIN, plate, odometer, and close-ups of the damage. Let’s get the rear of the vehicle next.”Section 4: Dynamic Data Extraction
Extracts structured data from photos using OCR and AI. Fully dynamic — add any field with custom validation rules.How It Works
When extraction is enabled, each photo is processed through:- Google Cloud Vision for raw OCR text extraction
- Claude for structured extraction based on your field definitions
- Variable Name: Output variable (e.g.,
extracted_vin) - Data Type: String, number, date, or boolean
- AI Description: Natural language description of what to look for
- Validation Rule: VIN checksum, regex pattern, range, or format
Quick Presets
One-click add common extraction fields:- VIN Number
- License Plate
- Odometer Reading
- Date of Birth
- Address
- Phone Number
- Dollar Amount
- Serial Number
Field Templates
Load preconfigured field sets for common documents:Output Variables (Per Field)
For each extraction field (e.g., “vin”):
Plus global variables:
Freeform AI Instructions
Add custom extraction guidance for edge cases:Section 5: Video Processing
Automatically extracts keyframes from video uploads and scores them against the shot taxonomy.How It Works
When a video is uploaded:- FFmpeg extracts keyframes at configured intervals
- Each frame passes through the Quality Gate
- Usable frames are scored against your Taxonomy
- Gaps are identified
- User is prompted for specific missing shots as still photos
Configuration Options
Output Variables
Example Flow
User sends: 60-second walkthrough video Processing:- 45 frames extracted at 1-second intervals
- 38 frames passed quality gate
- Matched: front, rear, left side, right side, 3 corners, 2 damage areas
- Missing: rear-left corner, VIN, license plate, odometer
Section 6: Output Variables
All data generated by the Media Processing Node is exposed as variables for use in Decision Triggers, downstream nodes, API calls, and integrations.Complete Variable Reference
Quality Gate:quality_score(float) — 0.0-1.0 overall qualityquality_passed(boolean) — Met thresholdquality_issues[](array) — Detected issuesretry_count(integer) — Retry attempts
coverage_complete(boolean) — All required shots receivedcoverage_percentage(float) — % of shots capturedmissing_shots[](array) — Shots still neededcaptured_shots[](array) — Shots received
extracted_{field}(varies) — Extracted value{field}_valid(boolean) — Validation passed{field}_confidence(float) — OCR confidence
frame_count(integer) — Frames extractedvideo_duration(float) — Length in secondsmedia_urls[](array) — All media URLs
Using Variables in Downstream Nodes
Reference variables in prompts, API calls, and messages:Section 7: Decision Triggers
IF/THEN routing rules that determine what happens after media is processed. Evaluated top-to-bottom — first matching condition fires.How It Works
After processing completes, the node evaluates each trigger rule in order. The first rule whose condition evaluates to TRUE determines the action:- Stay: Remain in node, send a message, wait for more input
- Proceed: Move to a specific next node
- Escalate: Route to human agent
Standard Trigger Pattern
Most Media Processing Nodes should include these triggers (in order):Advanced Trigger Examples
Proceed with partial coverage for low-value claims:Decision triggers replace complex prompt engineering with explicit, testable logic. When something routes wrong, you can see exactly which trigger fired and why.
Next Steps
- Taxonomy Manager — Create and manage shot taxonomies
- Building Workflows — Learn how nodes connect
- Decision Triggers — Advanced routing logic