AI automatically analyzes every image and video. The system knows what you have, what worked, and what to use next—without manual tagging. Your creative library becomes searchable, LLM-navigable, and performance-aware.
Thousands of images scattered across Google Drive, Dropbox, and local folders. No way to find what performed well. No memory of which creative resonated with which audience.
Files named "IMG_1234.jpg" or "final_v2_FINAL.png". Impossible to search. Requires manual browsing of hundreds of assets.
Which image drove 3% CTR? Which video got shared 500 times? That knowledge died with the campaign spreadsheet.
Product A's winning hero image could work for Product B. But nobody remembers it exists. Assets aren't discoverable across products.
When the Creative Agent needs an image, it receives asset descriptions directly in context:
"AST-ABC123: Modern fitness tracker on wrist, outdoor setting, morning light |
Tags: product-shot, lifestyle, outdoor | Mood: aspirational | Has People: yes | 1920x1080"
The agent reads descriptions like a human would, then selects the perfect asset. No embeddings, no RAG—just context injection.
From File: Local path upload
From Bytes: Direct data upload
Generated: AI-generated assets (DALL-E, Midjourney)
Imported: External URLs
Images: JPG, PNG, GIF, WebP, SVG, BMP, TIFF
Videos: MP4, MOV, AVI, WebM, MKV, M4V
Audio: MP3, WAV, OGG, M4A, FLAC, AAC
Documents: PDF, DOC, XLS, PPT, TXT, CSV
By Tags: Keyword matching
By Text: Natural language queries
By Product/Campaign: Association filters
By Properties: Dimensions, colors, mood, style
Videos: ffmpeg extracts frame at 3s
Documents: PyMuPDF renders first page
Auto-upload: Thumbnails stored in S3
CDN URLs: Fast delivery via presigned URLs
Auto-expire: 700 days after last use
Usage Tracking: Record when assets are used
Soft Delete: Mark deleted, not removed
Cleanup Jobs: Remove expired assets
Strict Boundaries: Assets scoped to brands
No Cross-Brand: Assets never leak between brands
Multi-Brand Safe: Agencies manage portfolios
Separate Storage: S3 paths per brand
| Component | Technology | Purpose |
|---|---|---|
| Storage | AWS S3 | All files stored in S3 bucket (mandatory, no local fallback) |
| Vision Analysis | Gemini 2.5 Flash / OpenAI Vision | Automatic image/video analysis with descriptions, tags, mood |
| Metadata Store | Session Folder (JSON) | Asset metadata in brands/{brand_id}/assets.json |
| Video Thumbnails | ffmpeg | Extract frame at 3s, upload to S3 |
| Document Thumbnails | PyMuPDF / pdf2image | Render first page as image |
| Image Processing | Pillow | Resize, format conversion, optimization |
{bucket}/
└── {brand_id}/
└── assets/
├── image/
│ ├── AST-12345678.png
│ └── AST-12345678_thumb.jpg
├── video/
│ ├── AST-ABCDEF12.mp4
│ └── AST-ABCDEF12_thumb.jpg
├── audio/
│ └── AST-98765432.mp3
└── document/
├── AST-FEDCBA98.pdf
└── AST-FEDCBA98_thumb.jpg
The system tracks which assets performed well. When generating new variants, successful creative elements are prioritized. Winning imagery compounds like winning insights.
Traditional asset management has no memory of performance. You might reuse an image that performed poorly or ignore one that drove exceptional results. With performance tracking, the system automatically biases toward creative that has proven effectiveness—compounding your wins over time.
When generating ad variants, the Creative Agent receives rich asset context:
Assets are delivered via presigned S3 URLs with configurable expiration: