JSON-prompting не как формат, а как система
Главная ошибка вокруг JSON-prompting'а — думать что это просто «вместо предложения пишем словарь». На самом деле это spec-driven generation pipeline: пять связанных слоёв, где промпт — финальный артефакт, а не вход.
Зачем вообще переходить с free-form промпта на JSON?
Free-form: «сгенерируй красивый баннер кофе на тёмном фоне с тёплым освещением и крупным заголовком "−30% сегодня"».
JSON-spec: разложить это на 8 типизированных полей, каждое — отдельная ручка.
| Бенефит | Что даёт практически |
|---|---|
| Воспроизводимость | Тот же spec → близкий к идентичному креатив. Клиент захотел «как тот вариант, но другой текст» — меняем 1 поле. |
| A/B варианты | Вместо реролла («сгенерируй ещё раз») — мутируем 1 ключ. 12 вариантов «hook position: top → center → bottom» собираются автоматом. |
| Кэширование | Хэш JSON-spec'а → cache-hit. На повторных задачах ничего не генерим заново. |
| Аудит до генерации | LLM-судья проверяет spec на брифовое соответствие до того как мы потратим $0.135 на Nano Banana. |
| Композиция | Reusable блоки: «brand_block для клиента X» + «niche_block для ниши Y» + «format_block 9:16» → собирается готовый spec. |
Пять слоёв системы
Это и есть «не просто JSON, а система которая формирует JSON на основе вводных данных» — то, на что Тимур указал.
Пример CreativeSpec
Так выглядит финальный объект, который рождается из слоёв 1-2 и идёт в компилятор:
{
"meta": {
"client": "dental_almaty_smile",
"campaign": "summer_promo_2026",
"format": "1:1",
"size_px": [1080, 1080],
"platform": "meta_ads_feed"
},
"composition": {
"layout": "product_centered",
"focal_point": "top_third",
"subject_size_pct": 70,
"grid": "asymmetric_3col"
},
"subject": {
"type": "dental_service_demo",
"props": ["clean_white_teeth", "calm_patient_smile"],
"environment": "modern_clinic_soft_blur",
"forbidden": ["dental_tools_visible", "blood", "surgery_imagery"]
},
"color": {
"primary": "#0F4C81",
"accent": "#7DD3FC",
"background_mood": "warm_neutral",
"palette_locked": true
},
"lighting": {
"direction": "soft_top_left",
"contrast": "medium",
"mood": "clean_premium_clinical"
},
"hook": {
"text": "Чистка зубов −40% до 30 июня",
"position": "top_left",
"weight": "bold_high",
"style": "editorial_sans",
"language": "ru"
},
"cta": {
"text": "Записаться",
"style": "button_pill_accent",
"position": "bottom_right"
},
"brand": {
"logo_zone": "bottom_left_80x80",
"palette_enforce": true,
"voice": "expert_warm_local"
},
"niche": {
"id": "dental_clinic",
"props_locked": ["smile", "clean_teeth", "modern_chair"]
},
"render": {
"model": "nano_banana_pro",
"seed": 42,
"steps": 28,
"guidance": 7.5
}
}
Как этот JSON становится промптом
Слой 3 (компилятор) — это просто функция-renderer на Python. Берёт spec и собирает строку. Чтобы вы видели как это устроено:
# pseudo-Python (упрощённо)
def render_nano_banana(spec):
prompt = (
f"Photo-realistic {spec.subject.type} creative, "
f"{spec.composition.layout} with {spec.composition.subject_size_pct}% subject, "
f"{spec.lighting.direction} lighting, {spec.lighting.mood} mood. "
f"Color palette: {spec.color.primary} primary, {spec.color.accent} accent, "
f"{spec.color.background_mood} background. "
f"Subject props: {', '.join(spec.subject.props)}. "
f"Environment: {spec.subject.environment}. "
f"AVOID: {', '.join(spec.subject.forbidden)}. "
f"Render bold Russian text '{spec.hook.text}' in top-left, "
f"{spec.hook.style} style, white color with subtle shadow. "
f"CTA button '{spec.cta.text}' in {spec.cta.position}, "
f"accent color pill shape. "
f"Brand logo placeholder in {spec.brand.logo_zone}. "
f"Format: square 1080x1080, marketing feed creative."
)
return prompt
Variant engine — превращение 1 spec'а в 12 креативов
Это слой 5. Один baseline spec — много вариантов через mutation одного-двух полей. Пример A/B плана для одного клиента:
| Вариант | Что меняется | Гипотеза |
|---|---|---|
| V1 (baseline) | — | контроль |
| V2 | hook.position = "center" | hook по центру сильнее на скролле |
| V3 | hook.text = "Запишитесь сегодня" | action-led hook → CTR |
| V4 | color.accent = "#F59E0B" | тёплый accent → внимание |
| V5 | composition.subject_size_pct = 50 | больше воздуха → premium feel |
| V6 | subject.environment = "soft_studio_white" | чище → trust |
Каждый вариант — это 1 mutation + 1 generation. Раньше это была ручная prompt-инженерия на каждый кейс. Теперь — функция.
Реализация — стек
- Pydantic (Python) — типизированные схемы CreativeBrief / CreativeSpec / BrandKit / NicheProps
- Claude tool_use — каждый «spec agent» (слой 2) вызывается с tool-schema → возвращает структурированный JSON
- JSON Schema — валидация spec на каждом переходе слоя
- Higgsfield MCP / OpenAI SDK — генерация (слой 4)
- SQLite + spec hash — кэширование generated результатов
Performance Scoring loop — light version с нулевыми данными
Тимур правильно подметил: ждать 500-1000 креативов чтобы начать ML — это слишком медленно. Я перестроил подход в 4 уровня зрелости, где Level 0 запускается прямо сегодня с нулём собственных данных. ML появляется только на Level 3 — и не как обязательный этап.
Главный сдвиг мышления
Performance Scoring ≠ «обучить свою модель на данных». Performance Scoring = «иметь систему обратной связи, которая улучшает следующее поколение креативов». Это можно делать на разных носителях — LLM-судья, человеческий feedback log, simple regression. ML — не обязательная финальная форма.
4 уровня зрелости
Level 0 · LLM-as-Judge (0 креативов нужно)
Берём Vision LLM (Claude/Gemini) и просим оценить каждый креатив до публикации по rubric'у. Vision-модели уже обучены на миллиардах изображений — они знают что такое хороший рекламный креатив, без нашего датасета.
Rubric (5 категорий × 10 баллов = 50 max):
| Категория | Что проверяем |
|---|---|
| Hook clarity | Читается ли первая строчка с дистанции 30 см (≈ 375px mobile viewport)? Нет ли двусмысленности? |
| Subject prominence | Продукт/сервис занимает 50-80% визуального веса? Не теряется ли в фоне? |
| Brand fit | Палитра, шрифт, тон — соответствует brand kit клиента? |
| Copy strength | CTA понятен и действенен? Не воды? |
| Niche relevance | Атрибуты ниши уместны? Не «беспородный» креатив? |
Логика автоматизации:
- Score < 35/50 → auto-reject + regenerate (с adjusted spec на failed категорию)
- Score 35-42/50 → human review (Тимур или менеджер)
- Score > 42/50 → ship to client
Level 1 · Client feedback loop (30-100 креативов)
Каждому ship'нутому креативу клиент ставит простую оценку и 1-2 строчки feedback'а:
- 🟢 Зашёл / 🟡 Пойдёт / 🔴 Не то
- Свободный комментарий («hook слабый», «лого не там», «стиль не наш»)
LLM-категоризатор (Claude) парсит свободный текст в фиксированные категории: hook_weak, logo_misplaced, style_off, color_wrong и т.д. Из этого собирается signal — что мутировать в следующий запуск.
Pattern detection: Claude раз в неделю смотрит лог feedback'а по клиенту/нише и пишет короткий отчёт типа:
«У клиента dental_almaty_smile за 12 креативов: 4× жалоба на hook (слишком формальный) → нужен переход на разговорный тон. 2× жалоба на колорит «слишком холодный» → добавить warm accent (#F59E0B вместо #7DD3FC). 1× ошибка ниши (показан стоматологический инструмент несмотря на forbidden) → ужесточить prompt guard.»
Это уже работает без ML, без датасета, без data science. Это просто structured feedback log + LLM-summarizer.
Level 2 · Stats + LLM analysis (100-300 креативов)
На этом этапе появляются реальные performance-метрики (CTR, CPL, CPM) — клиент видит, какие креативы дают результат. Лог становится богаче:
{
"creative_id": "c_2026_05_31_001",
"client": "dental_almaty_smile",
"spec": { ...полный CreativeSpec... },
"performance": {
"impressions": 12450,
"clicks": 198,
"ctr": 1.59,
"cpl": 450,
"cpm": 920
},
"feedback_human": "green",
"qa_score": 44
}
Раз в 2 недели Claude анализирует датасет и выдаёт инсайты типа: «креативы с composition.subject_size_pct > 65 + hook.position = top у клиентов сегмента dental имеют средний CTR 1.8 vs 1.1 у остальных». Это становится default для будущих spec'ов.
Никакого XGBoost не нужно. Просто SQL + Claude analyst.
Level 3 · Per-client ML (300+ креативов, опционально)
Только тут запускаем XGBoost/LightGBM. И — важно — per-client, не глобально:
- Features: 15-20 категориальных переменных из CreativeSpec
- Target: CTR / CPL / conversion_rate
- Модель уникальная для каждого клиента (или сегмента ниш)
Это уже defensible моат — у каждого клиента «их персональный CTR predictor», который ни один конкурент не повторит.
Brand-aware QA Pass — 5 проверок параллельно
QA Pass — это «taste-фильтр», который автоматически проверяет каждый креатив до того как он попадёт клиенту. 5 независимых проверок, каждая со своим detection-методом и pass/fail логикой. Реализация ~600 строк Python, без хитрого ML.
Архитектурно
Check 1 · Slot integrity
Что проверяем: продукт занимает правильную долю кадра, hook в верхней трети, CTA в нижней, нет overlap'а с logo zone.
Detection:
- BiRefNet или SAM-2 (Segment Anything Model 2) — выделяет mask продукта
- Считаем
mask_area / total_area→ реальный % площади - Y-координата bounding box центра → в какой трети находится
Validation:
- Продукт занимает 50-80% площади (если spec говорит 70% — допуск ±10pp)
- Hook центр на Y < H/3 (верхняя треть)
- CTA центр на Y > 2H/3 (нижняя треть)
- Расстояние между subject mask и logo bbox ≥ 16px
Output: pass/fail + heatmap визуализация занятых зон.
Check 2 · Logo zone validation
Что проверяем: логотип клиента находится в правильной safe-зоне, не искажён, не пересекается с продуктом.
Detection:
- ORB feature matching (OpenCV) против brand logo template из BrandKit
- Или CLIP embedding similarity (более robust к небольшим визуальным вариациям)
Validation:
- Логотип найден (match score > 0.85)
- Bounding box внутри pre-defined safe zone (например
bottom_left_80x80) - Аспект логотипа сохранён (ratio diff < 5%)
- Нет overlap с subject mask
Output: pass/fail + bbox + match score.
Check 3 · Color adherence
Что проверяем: доминирующая палитра креатива близка к brand palette.
Detection:
colorthief— извлекает 5 доминирующих цветов изображения- Конвертим RGB → L*a*b* через
colorsysилиscikit-image - Для каждого dominant color: считаем delta-E (CIEDE2000) до ближайшего brand kit цвета
Validation:
- Топ-3 dominant colors: delta-E < 15 (близко, незаметно глазу)
- Топ-5 dominant colors: delta-E < 25 (заметно, но в пределах brand-семьи)
- Background tone mood (warm/cold/neutral) соответствует spec
Output: pass/fail + delta-E на каждый dominant.
Check 4 · Typography legibility
Что проверяем: весь текст читается, контраст соответствует WCAG, кириллица не «съехала».
Detection:
- Tesseract OCR (или EasyOCR — лучше под кириллицу) распознаёт все text fragments
- Для каждого fragment: bounding box + текст + confidence
- Sample фона под текстом → расчёт контраста
Validation:
- Все text fragments распознаны с confidence > 0.7
- Контраст text/background ≥ 4.5:1 (WCAG AA)
- Не обрезано (padding к edges ≥ 16px)
- Кириллические символы присутствуют в Unicode ranges U+0400-04FF, U+0500-052F
- Распознанный текст близок к hook.text из spec (Levenshtein distance < 3)
Output: pass/fail + per-block scores + распознанный текст.
Check 5 · Brand voice / semantic coherence
Что проверяем: общий tone креатива соответствует описанию бренда в BrandKit.
Detection: Vision LLM (Claude Sonnet 4.6 или Gemini 2.5 Flash).
Prompt:
Это рекламный креатив для бренда. Описание бренда:
{brand_kit.voice}
Соответствует ли этот креатив описанию бренда по таким аспектам:
- общий тон (formal/casual, premium/mass, warm/cold)
- стилистическая консистентность
- эмоциональное впечатление
Оцени по шкале 0-10 и кратко обоснуй (2-3 строки).
Validation: score ≥ 6/10 → pass.
Output: score + текстовый reasoning.
Реализация — конкретно
- Python пакет
brand_qa/с 5 файлами-чекерами - Async выполнение через
asyncio(5 checks параллельно → ~3-5 сек total) - Configuration через тот же CreativeSpec — пороги вшиты в spec.qa_thresholds (опционально override)
- Output: structured QA report (JSON) + visual overlay PDF (для дебага/клиента)
Как нам быть без 450M ads? Другая категория продукта.
Тимур правильно сказал: «нам не нужна такая мощная система, нам нужен уверенный твёрдый среднячок, но самое важное — креативы должны передавать суть бизнеса, ниши и оффера, быть релевантными». Это и есть наша другая категория. Не «AI знает что работает в рекламе» — а «AI знает специфику вашего бизнеса».
Перепозиционирование
AdCreative.ai
Позиция: «AI знает что работает».
Моат: 450M ads + $34B spend → CTR predictor.
Output: «оптимизированный для performance» (но универсальный — не учитывает специфику бренда глубоко).
Цена: от $29/мес до $599/мес enterprise.
Мы (Performante / ai-targetolog)
Позиция: «AI знает ваш бренд».
Моат: Brand Ingestion + Niche Library + LLM-as-Judge — собственная картография бренда клиента.
Output: «релевантный сути бизнеса» (даже если CTR не самый высокий — это brand-safe).
Цена: 19 990-49 990 ₽/мес SaaS + agency tier (с поддержкой).
3 пилона нашей релевантности
Пилон 1 · Brand Ingestion (точка дифференциации)
AdCreative.ai не имеет глубокого brand fingerprint. Мы — имеем.
Что внутри:
- Клиент даёт URL (сайт / Instagram / lookbook)
- Firecrawl crawl'ит публичные страницы (hero / about / services)
- Vision LLM (Gemini 2.5 Pro) анализирует визуальную айдентику
- Output — BrandKit JSON:
- palette (5 цветов с HEX + role)
- typography (font family classification: serif / sans / display)
- voice tone (warm/cool, formal/casual, premium/mass)
- signature elements (паттерны, иллюстрации, специфические композиции)
- logo placement preference
- forbidden patterns (что в брендбуке делать нельзя)
Этот BrandKit — переиспользуется во ВСЕХ последующих креативах клиента. Один раз ingested — N креативов из него собираются.
Пилон 2 · Niche Library (наш data asset)
Не 450M ads, но 50-100 ниш с глубокой spec'ой. Это и есть наш реальный proprietary актив — собранный руками + AI на проверенных примерах.
Каждая ниша имеет:
props_locked— обязательные визуальные атрибуты («smile, clean teeth» для стомы)props_forbidden— что точно не показывать (dental tools, blood для стомы)environment_defaults— типичные окружения (modern clinic / cosy restaurant / open office)voice_archetypes— варианты tone (expert authoritative / warm local / premium minimalist)hook_templates— проверенные структуры заголовков по нишеpalette_recommendations— нишевые цветовые семьи
Старт: 10-15 priority niches (stomatology, beauty, restaurants, B2B SaaS, e-commerce, fitness, real estate, education, healthcare, legal). За месяц можно покрыть.
Пилон 3 · LLM-as-Judge QA (нулевые данные)
Описан выше в Performance Scoring Level 0. Vision LLM проверяет каждый креатив на 5 категорий, отсекает мусор автоматически. Это даёт «уверенный среднячок» который Тимур озвучил как минимальное требование.
Что мы НЕ обещаем (важно для позиционировки)
- Не обещаем «AI предскажет winner» (нет данных для этого)
- Не обещаем «+30% CTR гарантированно» (это маркетинговая ложь у конкурентов)
- Не обещаем «replaceable креатив-команду» (мы инструмент для команды)
Что обещаем
- Релевантный сути бизнеса креатив (через Brand Ingestion + Niche Library)
- Brand-safe вывод (через QA Pass)
- 5x скорость от ручной prompt-инженерии
- Структурированные A/B варианты на каждый baseline
- Per-client персонализация по мере накопления данных
Recraft vs Figma MCP vs Canva MCP — что подходит
Тимур упомянул «Canvas MCP» и идею что мы сначала генерим монолитную картинку, потом переводим в editable. Я раскладываю 4 рабочих варианта. Скорее всего речь была про Canva (платформа дизайна), у которой есть официальный Dev MCP с 2026.
Вариант A · Recraft V4 (vector-native generation)
Что: модель которая сразу генерит SVG/vector, не raster.
Pro: infinitely scalable, чистая editable геометрия, отличная типографика, low file size.
Con: photo-realism слабее Nano Banana, не подходит для «фотографий» продукта.
Цена: ~$0.05 / image.
Доступ: Picsart GenAI MCP включает Recraft V4 / Recraft Lite.
Лучше для: typographic posters, abstract illustrations, simple geometric compositions, logo marks.
Подходит для отдельного SKU (vector tier — не основной).
Вариант B · Raster → SVG conversion (trace)
Что: генерим raster через Nano Banana, конвертим в SVG через Vector Magic / Inkscape Trace / Adobe Illustrator.
Pro: используем любую raster модель.
Con: photo content плохо конвертится — получается «комикс-trace», уродливо.
Не подходит — теряем качество photo-realism, ради чего и берём Nano Banana.
Вариант C · Figma + Figma MCP (наш фаворит)
Что: генерим raster (high quality фон через Nano Banana / gpt-image-2) → импортим в Figma как layer → поверх кладём text / logo / CTA как Figma-объекты (vector + editable).
Pro:
- Visual remains high-quality raster (no compromise)
- Text / logo / colors редактируются в Figma за секунды
- Команда дизайна (если есть у клиента) уже в Figma
- Export в любой формат (PNG, JPG, PDF, SVG layers)
Con:
- 2 платформы в pipeline — overhead
- Figma подписка нужна (от $15/seat/мес — для нас, не клиента)
MCP: figma-developer-mcp (open source, активный) — даёт Claude API для Figma file manipulation.
Workflow:
Лучший hybrid — high quality фон + editable structure.
Вариант D · Canva + Canva Dev MCP (для клиента)
Что: аналогично Figma подходу, но через Canva. Клиент дорабатывает сам — Canva массовая платформа для маркетологов.
Pro:
- Клиент УЖЕ в Canva (большая часть маркетологов малого бизнеса)
- Canva выпустила официальный Canva Dev MCP в 2026
- Export напрямую в Meta Ads / Instagram
Con:
- Vendor lock-in (Canva меняет API/цены)
- Шаблонная эстетика — Canva тащит свой visual language
- Ограниченная типографика (нет custom font upload без Pro)
Подходит как опция handover — клиент нажимает «Edit in Canva», доделывает сам. Не как основной pipeline.
Вариант E · JSON-spec composer (BannerAgency-style)
Что: backend Python renderer (Pillow / cairo / Skia) собирает картинку из layers по spec'у. Каждый layer (background_image, text_layer, logo_layer, cta_button) описан в JSON.
Pro:
- Каждый layer редактируется через spec edit
- Не нужна Figma/Canva подписка
- Полный контроль через код
Con:
- Background всё равно raster (нужно генерить через Nano Banana отдельно)
- Много backend кода для качественной типографики, тени, эффекты
- Reinventing the wheel — Figma это уже всё умеет
Дополнительный layer поверх Figma подхода — для batch автоматизации (генерим N вариантов программно без открытия Figma).
Финальная рекомендация — multi-tier подход
| Tier | Что используем | Для чего |
|---|---|---|
| T1 · Primary | Nano Banana Pro + gpt-image-2 | Photo-real generation — raster, high quality |
| T2 · Editable | Figma + figma-developer-mcp | Post-edit (text/logo/colors как Figma objects поверх raster) |
| T3 · Vector | Recraft V4 (через Picsart MCP) | Специфические SKU где нужен чистый vector (logos, illustrations) |
| T4 · Client handover | Canva Dev MCP | Опция «Открыть в Canva и доработать самостоятельно» |
| T5 · Batch composer | Python (Pillow + cairo) | Программная сборка N вариантов из spec без UI |
figma-developer-mcp на тестовом проекте, прогнать 3-5 creative циклов: spec → raster → Figma import → text/logo layers → export. Если flow ergonomic — это становится T2 default. Если ergonomic слабый — пробуем Canva Dev MCP как альтернативу.
Nano Banana Pro + gpt-image-2 — router-логика
Решение Тимура: работаем с двумя моделями, Qwen Image 2.0 отбрасываем (нет ресурса на третью A/B-линию). Это упрощает архитектуру и фокусирует тестирование.
Профиль каждой модели
Nano Banana Pro (Vertex / gemini-3-pro-image)
Сила: ~100% cyrillic accuracy, photo-real product, soft tones, brand-friendly mood, отличный seed reproducibility.
Слабость: sharp editorial типографика слабее, дороже (~$0.135 / image).
Sweet spot: photo-real ads, premium feel, длинные cyrillic hook'и, brand-consistent series.
gpt-image-2 (OpenAI)
Сила: sharp contrast, bold editorial typography, дешевле (~$0.08-0.12), хорош для редакционного стиля.
Слабость: ~92% cyrillic (изредка ₸→Т паттерн), менее «soft» в фотореалистичности.
Sweet spot: editorial креативы, infographics, bold typography hero, cost-sensitive batch.
Router-логика — функция в Compiler
В CreativeSpec compiler (Слой 3 из секции 01) добавляется функция model_router(spec) → model_name:
def model_router(spec) -> str:
# Правило 1: длинный cyrillic hook (> 25 символов) → Nano Banana
if spec.hook.language == "ru" and len(spec.hook.text) > 25:
return "nano_banana_pro"
# Правило 2: editorial / bold typography → gpt-image-2
if spec.hook.style in ["bold_modern", "editorial_sans", "display_heavy"]:
return "gpt_image_2"
# Правило 3: photo-real product (high subject %) → Nano Banana
if spec.composition.subject_size_pct >= 65 and spec.subject.type != "abstract":
return "nano_banana_pro"
# Правило 4: cost-sensitive batch → gpt-image-2
if spec.meta.get("batch_size", 1) > 20:
return "gpt_image_2"
# Default: Nano Banana Pro (более brand-safe)
return "nano_banana_pro"
Эти правила — стартовые. По мере накопления feedback (Performance Scoring Level 1+) — router обучается на реальных данных.
Сравнительная таблица use cases
| Use case | Модель | Почему |
|---|---|---|
| Cyrillic-heavy hook (длинный) | Nano Banana Pro | ~100% cyrillic accuracy |
| Photo-real product demo | Nano Banana Pro | Soft tones, natural |
| Sharp editorial poster | gpt-image-2 | Лучше bold typography |
| Infographic / dashboard | gpt-image-2 | Точнее линии и data viz |
| Brand-consistent series | Nano Banana Pro | Better seed reproducibility |
| Cost-sensitive batch (50+) | gpt-image-2 | Дешевле per image |
| Premium / luxury feel | Nano Banana Pro | Soft cinematic mood |
| Quick draft / wireframe | gpt-image-2 | Быстрее, дешевле для итераций |
Финальная карта pipeline
Все блоки которые мы обсудили — это один pipeline. Вот как они сложены в порядке выполнения.
30 дней · 3 спринта
Спринт 1 (1-7 дней) · Foundation
- A/B router test: 20 cyrillic-промптов на Nano Banana Pro vs gpt-image-2 → router rules уточнены
- Picsart GenAI MCP подключён в Claude Code (для Recraft V4 access)
- Figma MCP подключён (figma-developer-mcp) + протестировано 3-5 циклов
- Pydantic schemas: CreativeBrief, BrandKit, NicheProps, CreativeSpec — drafts готовы
Спринт 2 (8-21 день) · Core Modules
- Brief Intake Wizard skill (Claude tool_use с CreativeBrief schema)
- JSON-prompt system — Layer 3 Compiler + Layer 5 Variant Engine
- Brand QA Pass — 5 checks реализованы как Python пакет
- LLM-as-Judge скилл — Vision LLM с rubric, integrated в pipeline
- Niche Library v1 — 5 priority niches задокументированы (stomatology / beauty / restaurants / SaaS B2B / e-commerce)
Спринт 3 (22-30 день) · Brand Layer + Feedback
- Brand Ingestion service — Firecrawl + Gemini Vision → BrandKit JSON
- Feedback capture flow — клиент получает форму 🟢/🟡/🔴 + comment, лог в SQLite
- LLM weekly analyst — Claude парсит feedback log еженедельно, выдаёт patterns
- Niche Library v2 — 10-15 niches
- End-to-end demo — реальный клиент Performante прогоняется через полный pipeline
Что нужно от Тимура
Концепция собрана. Чтобы стартовать Спринт 1 — нужно три коротких «да» или «нет»:
- A/B router test (20 cyrillic prompts): Nano Banana Pro vs gpt-image-2 на реальных брифах. Стоимость ~$5-10. Срок 1-3 дня. Запустить?
- Подключить Picsart GenAI MCP + Figma MCP в Claude Code. Бесплатное подключение, оплата по использованию у Picsart. Подключаю?
- Создать план-файл
projects/ai-targetolog/plans/2026-05-31-creative-pipeline.mdс чекбоксами на 3 спринта. Это рабочий план для исполнения. Оформить?
Параллельно можно начать набрасывать Pydantic schemas (CreativeBrief / BrandKit / NicheProps / CreativeSpec) — это foundation, который не зависит от моделей и MCP.
Главный takeaway
JSON-prompting как система + LLM-as-Judge + Brand Ingestion + Niche Library — это та архитектура, которая даёт «уверенный среднячок с релевантностью бизнесу» без необходимости иметь 450 миллионов ads датасет. ML появляется опционально на Level 3, когда накопится 300+ креативов на клиента.
Источник первого ресёрча с 69 источниками: research-creative-pipeline-2026-05-31.md