Asset Generation
AI-generated images are created by the Image Planner Agent and stored in Cloudflare R2.
Visual World Consistency
The Image Planner establishes a visual world prefix once, then applies it to all image prompts for a project. This ensures all images feel like they belong to the same shoot/style.
Example visual world prefix:
"Corporate photography, soft natural light, clean white studio backgrounds, professional German business aesthetic, muted color palette with warm tones, high-end editorial quality —"
All subsequent prompts are prefixed with this, ensuring:
- Consistent lighting
- Consistent color grading
- Consistent subject style
- No jarring mismatches between sections
Prompt Structure
typescript
interface ImagePrompt {
worldPrefix: string // Shared visual world definition
subject: string // What this specific image shows
role: ImageRole // How it's used on the page
dimensions: Dimensions // Width × Height
}
// Full prompt = worldPrefix + ", " + subject
const fullPrompt = `${worldPrefix}, ${subject}`Image Roles
| Role | Typical Use | Aspect Ratio |
|---|---|---|
hero | Full-width hero background | 16:9 |
feature | Feature section illustration | 4:3 or 1:1 |
team | Team member portrait | 3:4 |
background | Subtle section texture | 16:9 |
icon | Section icon/illustration | 1:1 |
Storage
Assets are stored in Cloudflare R2 under:
r2://[bucket]/projects/[projectId]/assets/[assetId].[ext]Public CDN URL:
https://assets.design.localsolutions.de/projects/[projectId]/[assetId].[ext]Regeneration
Users can regenerate any single image without re-running the full pipeline:
typescript
// POST /api/assets/regenerate
{
"assetId": "uuid",
"modifiedPrompt": "Same world prefix, but now show a team meeting instead"
}