На Авито полно квартир за 80, 100 и 180 тысяч в месяц, которые выглядят так, будто их специально фотографировали как можно хуже. Тёмные комнаты, кривые ракурсы, пересветы, ванная как из хоррора — и всё это в объявлениях, где вообще-то пытаются сдать или продать дорогой объект.

Видеовизитка: Посмотрите, я существую


Я бесился как человек, который увлекается фотографией. А потом решил починить это image-edit нейронками. Мне 15, и в тот момент я ещё не понимал, что между «прикольной идеей» и «рабочим продуктом» лежат модели, промпты, GPU, серверы, гранты, баги и куча моментов, когда хочется всё бросить.

Так появилась Yokva — сервис, который должен был превратить час ручной возни с фотками квартиры в одну нормальную кнопку.

Скрин Yokva
Скрин Yokva

Под катом — не история про «смотрите, какой я молодец в 15 лет». Это скорее честный разбор того, как красивая AI-идея постепенно превращалась в (почти) нормальный продукт


Оглавление и что будет дальше:

  1. Как я вообще пришёл к этой идее через фотографию и одну квартиру

  2. Почему разговор с риелтором оказался полезнее любых догадок

  3. Почему ChatGPT здесь не равен продукту

  4. Как всё начиналось в реализации

  5. Когда Yokva перестала быть простой

  6. Как я пересобирал подход и к чему в итоге пришёл

  7. Как я GPU считал и почему самый мощный не всегда самый выгодный

  8. Какие баги и костыли сделали этот сервис более реальным

  9. Как в этой истории появились гранты, Timeweb Cloud и взрослый слой проекта

  10. Что у меня в итоге получилось, что не получилось и зачем я вообще всё это пишу


❯ Как я вообще пришёл к этой идее через фотографию и одну квартиру

Я увлекаюсь фотографией. Не интерьерной, не коммерческой, а стритом и документалистикой, особенно люблю всячески издеваться над рекламными баннерами.

Картинки

К недвижимости это сначала вообще не имело отношения. Но в какой-то момент моя тётя Ира попросила меня отснять квартиру под сдачу. Я согласился: и опыт, и немного денег, и просто интересно, как работать в коммерческой съемке.

Как и что получилось
Как это было
Как это было
Что получалось
Что получалось

Квартира сдалась недели за две. Мы потом встретились, пообедали, немного порадовали эго и зачем-то открыли Авито. И там было почти всё то же самое, о чем я говорил в начале: темные кадры, кривые ракурсы, ощущение, что хорошие объекты зачем-то продают через плохую картинку.

Контрпример за 100К/мес. Красная комната Линча отдыхает))
Контрпример за 100К/мес. Красная комната Линча отдыхает))
И другие контрпримеры
60К/мес
60К/мес
80К/мес
80К/мес
175К/мес
175К/мес
180К/мес
180К/мес

Поэтому, где-то через неделю, мне захотелось это автоматизировать. Я накидал концепт, продумал интерфейс, купил домен (очень спонтанная трата), начал собирать первую версию Yokva, с ней лендинг — и довольно быстро понял, что строю пока что-то красивое, но очень-очень сырое. Непонятно для кого, непонятно в каком виде и непонятно, что в этом вообще настоящее, кроме моей собственной увлеченности.

Кусочек лендинга
Кусочек лендинга

Тогда я сделал то, что надо было сделать сразу: пошёл разговаривать с людьми.


❯ Почему разговор с риелтором оказался полезнее любых догадок

Есть такая полезная книжонка — «Спроси маму» Роба Фицпатрика. Если очень коротко, её идея в том, что не надо спрашивать людей, понравился бы им твой продукт. На такие вопросы почти все всегда врут, даже без умысла. Гораздо полезнее спрашивать, как они уже решают задачу сейчас.

Книжка
Книжка

Примерно так я и написал тете Ире — что она делает с фотографиями прямо перед публикацией и сколько времени у неё на это уходит.

Из переписки быстро выяснилось главное. Она слегка ретуширует фотографии на телефоне: где-то кадр подрезать, где-то поправить цвет, где-то замазать некрасивую деталь вроде розетки. И на одну квартиру уходит примерно час. Раньше — больше, сейчас — меньше только потому, что рука набилась.

Переписка

Я: ... На последнем объекте — когда уже всё отсняла, что ты делала с кадрами перед публикацией? Сколько времени ушло?

Ира: Слегка ретуширую. В приложении на телефоне. Где-то кадр подрезать, где-то с цветом поработать, где-то страшную розетку замазать. Но этим никто из обычных людей не занимается — загоняются только те, кто профессионально этим зарабатывает.

Я: А сколько времени занимает?

Ира: Где-то час. Раньше больше. Просто сейчас рука уже набита.

Час на одну квартиру. И это у человека, который давно в теме.

Потом я поговорил еще с тремя людьми: собственницей, которая сдаёт сама, и двумя риэлторами. Картина не совпадала в деталях, но сходилась в главном: хорошие фото нужны всем, ручная возня раздражает всех, а нормального простого решения никто не ждёт — ну просто потому что привыкли)

Теперь у Yokva появилась очень земная цель: сжать час ручной работы в автоматизированную пару минут.

На этом месте у любого нормального человека появляется один и тот же вопрос: если ChatGPT (и подобные) уже отлично пишут нейрослоп текст, редактируют фото и приемлемо выполняют инструкции, то зачем вообще отдельный продукт? Вопрос хороший. И мне не раз пришлось на него нормально ответить самому себе (а теперь и вам!)


❯ Почему ChatGPT здесь не равен продукту

Потому что человеку нужен нормальный результат.

Риелтору или собственнику не хочется по очереди думать, какое фото брать, что на нём править, как не сломать геометрию комнаты, где взять текст, как не платить за подписки и как потом всё это собрать в объявление. Ему хочется загрузить фото и получить вменяемый выход.

Благо от такого мы уже отошли :))
Благо от такого мы уже отошли :))

Подтверждаю цель: сделать одну нормальную кнопку.
На словах это звучало легко. Дальше начались проблемы.


❯ Как всё начиналось в реализации

Самый первый старт был максимально прагматичным и наивным. У меня не было ни сервера, ни бюджета под это (плюсом я следовал концепту пустого кармана), поэтому я пошёл туда, где можно было собрать демо бесплатно — на родимом Cloudflare Workers (родимый, потому что там куплен домен)

Схема казалась изящной. Пользователь грузит фото, оно падает в простое хранилище R2. Дальше бесплатные AI Workers дёргают LLaMA 4 для анализа кадра, а Flux пытается вытянуть свет и убрать мусор. Затем собирается текст, который вместе с уже обработанной картинкой идет обратно юзеру. Дёшево и сердито. На этом этапе Yokva была простым скриптом, который перекидывал картинку между парой API.

CF AI Neurons
CF AI Neurons

Казалось, что задача почти решена. Я уже готовился все быстренько упаковать и вперед продавать.

А потом я захотел странного. По правде говоря, засмотрелся на aidentika.com

Я подумал: а зачем отдавать риелтору просто ретушированную фотку? Если мы экономим время, давайте выдавать готовый креатив для соцсетей. Фотка квартиры, а поверх неё красивым шрифтом цена, метро, плашки. Риэлтор берёт картинку и сразу постит в условный Telegram.

Задизайнил даже пару макетов, в духе такого:
Пример-1
Пример-1
Пример-2
Пример-2

Для сборки этих макетов я нашёл библиотеку Satori — она умеет брать HTML/CSS и рендерить из этого PNG. Идея была супер. Но именно там моя уютная serverless-идиллия закончилась.


❯ Когда Yokva перестала быть простой

Satori просто не запускался на Cloudflare Worker. Знать бы мне это сразу...

Проблема была в жестких лимитах free tier’а. Генерация макета отнимала больше разрешенного CPU-time (там порог <10 мс), и библиотека тупо не успевала подняться. Картинки не рендерились, всё падало.

Тогда мне пришлось сделать первый манёвр. Раз Cloudflare не тянет, значит можно перенести часть логики на Vercel — там лимиты были мягче. Satori заработал. Я считал это вынужденным костылем, чтобы спасти фичу с макетами.

Вот так это стало выглядеть. ужасно)
Вот так это стало выглядеть. ужасно)

Но это не решило главной проблемы.

Пока я возился с рендером картинок, вылезло то, о чём я старался не думать: качество самой ретуши скакало как ненормальное. Исходная связка моделей выдавала то приемлемый результат, то абсолютно пластиковый ужас, с потерей всех деталей. Плюс, пользователи же грузят не по одной фотке, а сразу всю квартиру.

Уже наверно чувствуете? И до меня тоже дошло, что Yokva расползлась. У меня кусок логики тут, рендер там, фотки лежат в третьем месте, модели ведут себя непредсказуемо. Короче, зоопарк! Зоопарк костылей! Который еще и работает только при идеальной погоде.

Чем дольше я это городил, тем меньше Yokva походила на прикольную AI-игрушку.

❯ Как я пересобирал подход и к чему в итоге пришёл

Пришлось признать: если я хочу продукт, а не демо на костылях, придётся всё переписать. Я отказался от распределенной serverless-сборки, экономии-ради-экономии и собрал локальный монолит на Next.js. Нужно было вернуть контроль. Хотя следовало это закладывать изначально by-design))

Проект оброс нормальным бэкендом: появилась база на Postgres, очереди задач на Redis и BullMQ (чтобы ретушь крутилась в фоне) и S3-хранилище для исходников.

Схемка монолита
Схемка монолита

Сколько фото загрузил — столько анализов стартует одновременно. Как только они готовы, текст и ретушь запускаются параллельно:

const retouchPromise = retouchAll(...); 
const copyText = await generateListingText(claudeInput, userContext);

Но архитектура — это полбеды. Дальше начался долгий перебор самих моделей.

Акт 1. Текстовые модели: Gemini за 0.001$ и Claude за 3$

Экспериментальным путем выявил простую вещь: генератор текста не должен сам смотреть картинки, а дешевая vision-модель не напишет хороший текст. Делим их!

Gemini 3 Flash Preview — быстрый, дешёвый, умеет смотреть на фото и описывать конкретные проблемы. Анализ одной фотки стоит около 0.001$. Для задачи «скажи, что и где не так, и отдай fix_prompt — шик.

Claude Sonnet 4.6 — отвечает за текст объявления. Я пробовал разное. GPT и Gemini писал слишком пластиково (или мои промпты были таковыми). Упаси боже от Grok — от количества непрошеного мата в объявлении о продаже однушки хотелось плакать. Клод лучше держит тон, не скатывается в риэлторский шаблон и нормально слушается ограничений. Да, он дороже (3/15$ за миллион I/O токенов), но текст — не то место, где хотелось сэкономить. К слову, Haiku оказался слишком молчаливым, а Opus не дал видимой разницы в качестве.

Прайсинг на модели
Прайсинг на модели

Обе модели я гоняю через Perplexity Agent API — дергаю что угодно в одном месте и плачу грантовыми кредитами. Я оставил заявку в стандартной форме, и они отсыпали мне грант на 5000$ (об этом поговорим попозже). Кстати, за месяц-два экспериментов я потратил оттуда ровно 76 центов. Это даже не чашка кофе. По непонятной мне причине в их биллинге нет данных об использовании чужих моделей — отображается только их родная Sonar, но я просто смотрю на итоговую сумму.

Биллинг
Биллинг
Итого
Итого

Текстовый контур работал идеально. Оставалось решить главную боль — ретушь.

Акт 2. Modal и рассадник Image-моделей

Google Cloud с их Nano Banana Pro отпал (триал рано или поздно закончится, а грант мне не дали: «нет документов, нет юрлица и бла-бла-бла»). И тут появился Modal — облако с GPU-контейнерами и посекундной оплатой, где мне одобрили 500$ гранта.

modal.com
modal.com

Что мне сразу понравилось: вместо того чтобы страдать с Terraform, ручной настройкой Docker-файлов, поднятием серверов и написанием собственных очередей для контроля масштабирования, всё выделение топовой железяки сводится к одному аргументу в коде.

import modal
app = modal.App()

@app.function(gpu="A100-80GB")
def edit_image():
    # Модель погнала ретушировать

Всё. Modal сам поднимет контейнер при HTTP-запросе, сам «подогреет» видеокарту (если поставить buffer_containers=1), и сам её убьет через 5 минут простоя (scaledown_window=300), чтобы не сжигать баланс впустую.


Здесь же началась битва за качество картинки.

  • Сначала была Flux Kontext Dev. Казалась логичным стартом. К сожалению, для квартирных фото, где обязательно сохранение максимума деталей эта модель вела себя все-таки непредсказуемо: то перегенерирует интерьер целиком, то слишком агрессивно сломает геометрию. Не то.

  • Потом базовая Qwen-Image-Edit. 20 шагов диффузии по умолчанию, вроде стабильно, но качество пластмассовое и мыльное.

  • Попробовал Qwen-Image-Edit-2511 (улучшенный plus-pipelineна 40 шагов по умолчанию). Стало красивее, но из-за внутреннего устройства диффузионного шедулера контейнеры начали сыпать дикими ошибками IndexError (про эти баги я отдельно расскажу уже совсем скоро).

  • В итоге я нашёл FireRed-Image-Edit-1.1 — форк с другой реализацией того же пайплайна. 28 шагов, лучше держит геометрию комнаты и реалистично работает со светом. Поставил в продакшн.

В итоге текущий рабочий срез выглядит так:

  • Gemini 3 Flash Preview → анализирует фото, отдаёт fix_prompt

  • FireRed Image Edit 1.1 → ретушь по fix_prompt (на Modal)

  • Claude Sonnet 4.6 → текст объявления

  • Satori → генерация готовых макетов (отложено)

Схемка — внутри
Схемка внутри

Когда я только настроил первый воркер на Modal и прогнал FireRed, я выбрал среднюю карточку A100 на 80GB. Сделал тестовый прогон: картинка сгенерилась быстро, и по цифрам всё выглядело вполне бюджетно.

Предвещая возмущения, вот чего я добился к сегодняшнему дню. Тестово умеет в multi-photo, поэтому детали не придуманы :)

До/после
До/после

Я уже было подумал, что вопрос с железом закрыт. А потом решил посчитать экономику получше.


❯ Как я GPU считал и почему самый мощный GPU ≠ самый дешёвый

Modal даёт выбор: T4, A10, L4, L40S, A100 40GB и 80GB, RTX-PRO-6000, H100, H200, B200. Глаза разбегаются.

Прайсинг gpu
Прайсинг gpu

Потратил несколько часов на замеры. Один промпт, одна картинка (1920x1080) для каждой модели (FireRed-Image-Edit-1.1 и Qwen-Image-Edit-2511) и каждой видеокарты. Метрика одна: рентабельность, то есть стоимость одного полного цикла (roundtrip)

Табличка и циферки
Табличка и циферки
  • T4, L4, A10 и даже L40S (48GB) — выглядят соблазнительно по цене, но для выбранных моделей на 30+ ГБ весов они оказались бесполезны. Отвал по OOM происходит в 100% случаев еще на этапе переноса тензоров.

  • H100, H200 и флагманский B200 — рендерят феноменально быстро (Inference всего 19–24 сек), но цена прыгает до 10–14 центов за запрос. При моем объеме переплата за вычислительную мощь не конвертируется в реальный UX-выигрыш — пользователь всё равно ждет почти 50 (!) секунд, чтобы поднять 30 ГБ весов с диска в VRAM. Холодный старт съедает почти весь смысл дорогих чипов.

  • Долгое время «золотой серединой» считал и использовал A100 80GB, но в последнем тесте она показала худший roundtrip (~130 секунд) за счет самых медленных дисков на её нодах.

  • А открытием стала RTX-PRO-6000. Она оказалась абсолютным победителем бенчмарка. За счет, я полагаю, более быстрых SSD на её нодах. Она заливает всю модель в VRAM всего за 30 секунд. Поэтому этот въезд полностью компенсирует её более медленный инференс (32 сек).

Вывод: Зависимость совершенно нелинейная. Платишь в 2 с лишним раза больше за флагманский B200 — а получаешь фото в итоге даже медленнее из-за I/O оверхеда на кластере.

Раньше один запрос (ретушь одного фото) обходился в 0.20$ (~18-20 рублей). Я ставил цель опустить косты до 10 рублей.
Переезд на RTX-PRO-6000 сбил цену генерации до 0.063$ (~6 рублей за фото!) при 75 секундах на холодный старт. Цель перевыполнена!

Напомню: Modal держит контейнер теплым 5 минут после последнего запроса (scale_down_window). Поэтому юзер, который сразу регенерирует неудачный результат, вообще не сталкивается с холодным стартом — модель уже в памяти, и ретушь занимает чистые 32 секунды. 


❯ Какие баги и костыли сделали этот сервис реальным

В теории все выглядело идеально: математика сошлась, инференс стал дешёвым, я выбрал оптимальную карточку и выдохнул. Проблема с железом была решена.

Правда, я забыл одну важную вещь: дешёвый инференс (=плохой инференс) имеет смысл только тогда, когда он работает. А работать он внезапно перестал. Как только в эту «идеальную» архитектуру пошли пользовательские сценарии, начался этап еще более диких костылей, багов и открытий

Добро пожаловать в мою личную бесовщину:)

Акт 1. Нейросети не потокобезопасны (и другие приколы AI)

Сначала я решил сэкономить и включил декоратор @modal.concurrent(). Идея простая: пусть один теплый контейнер обрабатывает несколько картинок параллельно. Сразу после этого логи засыпало дикими ошибками:

IndexError: index 41 is out of bounds for dimension 0 with size 41

Красивая ошибка, правда? Я перебирал кучу моделей, думая, что проблема в них. Оказалось, не в этом дело! Проблема была в пайплайнах diffusers: стейт планировщика (scheduler state) оказался не потокобезопасным. При конкурентных запросах разные потоки обращались к одним и тем же расчётным шагам, затирая чужие тензоры.

Решение: Одно запущенное GPU = строго одна картинка. Убрал конкурентность, пожертвовал временем простоя, зато всё перестало падать.

# Было (дешево, но падало из-за гонки стейтов в diffusers):
# @modal.concurrent()
# @modal.fastapi_endpoint(method="POST")

# Стало (дорого, работает как часы):
@modal.fastapi_endpoint(method="POST")
def edit_image(self, payload: dict):
  # строгая обработка 1 к 1

И в этот же момент я понял главную вещь про генерацию: промпт важнее смены модели. Качество скакнуло в разы, когда я добавил в системный промпт жёсткие ограничения:

«Must explicitly preserve exact room geometry... Do not ask for synthetic editorial glow, plastic textures, fake luxury. Only describe visible, necessary edits.»

С момента запрета моделям «фантазировать» и делать «дорого-богато», ретушь стала адекватной.

Акт 2. Инфраструктурный скотч

Когда ты собираешь проект из десятка разных cloud-сервисов, они начинают конфликтовать друг с другом.

  • Геоблокировка и Vercel-прокси. Мой основной бэкенд крутился на отечественном VPS. Modal с российских IP ожидаемо выдавал 403. Решение? Проксировать вызовы к Modal через Serverless-функции Vercel. Маршрут стал выглядеть так:
    Yokva → Vercel → Modal.
    Красиво? Нет, отвратительно. Работает? Да.

  • Авторизация FastAPI в Serverless. Я сделал базовую защиту эндпоинта GPU через стандартный fastapi.Request injection. Modal отвечал глухим 422 Unprocessable Entity. Выяснилось, что в его Serverless-контексте Request иногда интерпретируется как query-параметр. Пришлось выкинуть красивые заголовки и передавать bearer token прямо в теле JSON.
    Не гламурно, но зато надёжно.

Акт 3. Взросление: никогда не падать молча

Самый важный сдвиг произошел, когда я перестал думать как экспериментатор и начал думать о пользователях (и своих деньгах, разумеется).

  • Отвалился Redis? Живём дальше. Раньше смерть Redis (где лежал rate limiter) означала HTTP 500 для всех. Я переписал логику: если кэш недоступен, лимитер на лету переключается на in-memory. Да, при рестарте ноды лимиты сбросятся, но это лучше, чем мёртвый сервис.

  • LLM вернула мусор? Claude полюбил вместо красивого описания квартиры возвращать заглушки типа «desc», «test» или «n/a». Я собрал чёрный список таких слов. Если парсер ловит мусор — происходит автоматический retry с усиленным промптом.

    // Чёрный список того, что Claude любил отдавать вместо нормального текста:
    const INVALID_FILLER_VALUES = new Set(["head", "desc", "description", "test", "placeholder", "n/a", "", " "]);
    
    if (INVALID_FILLER_VALUES.has(rawHeadline.toLowerCase()) || rawHeadline.length < 5) {
      // Ловим мусор и отправляем на принудительный retry
      throw new Error("Claude returned an invalid headline placeholder");
    }
  • Сам себе DDoS-ер. React против Cloudflare. Смешной инцидент произошел с безобидной формой вейтлиста. Cloudflare вдруг начал блокировать легитимных юзеров, ругаясь на спам со стороны капчи Turnstile. Оказалось, виноват React 19. В режиме разработки Strict Mode он рендерит DOM-дерево компонентов дважды. Из-за этого двойного рендера фрейм Cloudflare пытался инициализироваться два раза подряд за миллисекунды. Ну а антифрод видел это и тут же банил, принимая этот двойной запрос за replay attack.

  • Модель упала? Возвращаем оригинал. Если Modal вернул ошибку, Yokva не показывает юзеру красный экран. Она тихо отдаёт оригинальное фото. Для пользователя лучше получить просто загруженную картинку, чем сломанный интерфейс.

  • Деньги за чужие баги. Самое главное продуктовое правило, которое я внедрил: если модель всё-таки сгенерировала откровенный мусор (или упала на полпути), скрипт автоматически делает refundCredits. Пользователь не должен платить за то, что у PyTorch’а съехали индексы. Теперь за это плачу я :)


Платить за баги нейросетей из своих карманных денег — это, конечно, отличная мотивация, чтобы повзрослеть))


❯ Как в этой истории появились гранты, Timeweb Cloud и взрослый слой проекта

К этому моменту Yokva существовала в странном режиме: тяжелый инференс на Modal, прокси через Vercel, а остальное — на моей локалке. Я хоть и держался тактики «0 бюджета», но проект начал из нее вырастать. Чтобы запустить все это в стабильное едино, мне нужен был мощный VPS. А мне 15 лет, и лишних бюджетов на сервера у меня, увы, нет. Спойлер: мне помогли ребята из Timeweb Cloud. Но давайте немного предыстории!

Конец февраля, еду по Москве в визовый центр, очереди, скукота. Достаю телефон и начинаю писать колд-мейлы. Тема везде не особо отличалась — «Грант для 15-летнего фаундера». Не стеснялся.

Объем рассылки :)
Объем рассылки :)
И еще)
И еще)

Первыми пошли крупнейшие российские хостеры. У некоторых есть даже нормальная грантовая система на сайте — но они просто не ответили :D

Потом написал в проптехи — поимённо вы их прекрасно знаете :) Логика простая: им выгодно чтобы объявления на их платформах выглядели лучше. Переправляли куда надо — и замолкали.

Пошёл дальше: AWS, Digital Ocean, fal.ai, RunPod + еще десяток.

Итог по большинству — тишина. RunPod молчит, зато исправно шлет корпоративный спам — спасибо, ценю. AWS отказали сразу. Cloudflare и Google сделали это официально: нет юрлица, на сайте нет четкой бизнес-модели (факт!), да и в целом письмо было в духе «мы рассмотрели вашу заявку и...» — дальше можно не читать.

Любезное письмо от гугла
Любезное письмо от гугла

Но в тот же февральский день мне позвонил Александр — технический специалист из Timeweb Cloud. Сказал: без ИП тяжело одобрить грант официально, но проект интересный, постарается что-то сделать. Передал в маркетинг.

Написала Роза. Предложила созвон.

Страшно ли было? Да. Это были первые переговоры в моей жизни с незнакомыми взрослыми людьми по делу. Людьми, которым в общем-то всё равно. Но я справился. На созвоне кратко объяснил суть проекта, обсудили, что нужно. GPU не дают, зато VPS — без проблем. Поговорили про стек, характеристики, S3. В тот же день мне выдали грант на 12 500 рублей.

Переписка
Переписка с Розой
Переписка с Розой
Ещё с Розой
Ещё с Розой
И с Александром
И с Александром

Так у Yokva появился нормальный дом и возможность развернуться. Но наглость в визовом центре окупилась каскадом ответов и от других ребят. Оказалось, что иногда искренность работает лучше бизнес-планов:

PostHog — утром того же дня, еще до всех звонков, пришло письмо: одобрили 50 000$. Подавал через их грантовую платформу, стандартная форма. Через неё же дали доступ к Chroma — ещё 5 000$.

Скрины
Письмо
Письмо
Баланс
Баланс
Письмо от chroma
Письмо от chroma

Perplexity — насыпали 5 000$ на API и 6 месяцев Enterprise Pro. Письмо: «Congrats, You're In». Весьма лаконично!

Скрин
Письмо
Письмо

Kodik (российская AI IDE, есть на Хабре. привет!) — написал им, что пилю стартап в одиночку и иногда нуждаюсь в баг-фиксе. Ответили в тот же день: «Ты даже не представляешь, как наша команда обрадовалась твоему письму». Дали Super PRO, пригласили в QA, зарядили позитивом) В стопорных ситуациях не раз выручало!

Снова скрин
Письмецо
Письмецо

Modal — насыпали 500$ и открыли доступ к GPU с посекундной оплатой (про них я уже подробно расписывал в техническом блоке выше, но именно их грант позволил запустить первые тесты нейросетей).

И опять господин-скрин!
Письмо
Письмо

В итоге, пока я скучал в очереди за визой, проект на коленке приобрел инфраструктурных грантов на 60 000$+

Неплохая конверсия для одного весьма скучного утра)

Но знаете что? Гранты — это лишь возможность не платить за свои ошибки из кармана. Они не собирают за меня продукт! Но именно эта беготня по письмам и созвонам сделала проект реальным. Yokva повзрослела тогда, когда я впервые начал думать о железе, деньгах и людях. Без такого опыта, возможно, это был бы просто очередной пет, который никогда бы не вышел за пределы моих слов.


❯ Что у меня в итоге получилось, что не получилось и зачем я вообще всё это пишу

Я начинал с простой идеи: «загрузил фото — получил красивый креатив». А пришёл к очередям задач, GPU-инстансам, геоблокировкам, грантам, фоллбэкам, стоимости инференса и необходимости держать весь этот парк в рабочем состоянии. Yokva превратилась в большой, для меня, проект

И, наверно, в этом для меня главный смысл всей истории. Я не «собрал стартап» в красивом, может, твиттерском смысле. Я уткнулся в реальность, а теперь по кускам учусь делать сервис!

Акт 1. Столкновение с реальностью

Выход в реальный мир оказался отрезвляющим.

Ожидание: Акселераторы и менторы. Я нашел школьный акселератор Сбера. Зарегистрировался, смотрел уроки, где люди в основном читают (откровенно плохо!) банальности с суфлера. 

Но акселераторы нужны не ради лекций. Загрузил питч-дек до 23 марта (то есть заявки они принимали с февраля по март) и стал ждать обещанных крутых менторов.

Питч-дек
Питч-дек

Прошел месяц. Тишина. На сайте статус не меняется. Я уже мысленно похоронил эту идею, как вдруг 22 апреля мне в Telegram приходит сообщение: «Вы прошли!».

Сообщение
Сообщение

Оказалось, это какой-то мифический второй поток, программа теперь длится 10 недель вместо 8 (на сайте об этом ни слова), а в общем чате царит кромешный хаос.

НО! Спустя пару дней мне написал Константин, позвал на созвон о проекте. Я, конечно же, согласился. Меня, признаюсь, впечатлили циферки)). 

Сообщение от ментора
Сообщение от ментора

Теперь мы будем выстраивать продажи вместе, и это настоящее спасение.

И мой ответ
И мой ответ

Почему спасение? Потому что до этого я уже столкнулся с реальностью ручных продаж.

Реальность: Ручные продажи. Бизнес за меня никто не сделает, потому я пошел в поля. Открывал Авито, находил объявления с непривлекательными фотографиями, прогонял первый кадр через свое детище и отписывал авторам напрямую. Предлагал обработать остальные фото бесплатно в обмен на фидбек.

Пример сообщения
Пример сообщения

Некоторые отвечали, результат им нравился. Но буду честен: до нормальных метрик и замеров кликабельности дело так и не дошло. Параллельно на меня навалилась школа, дедлайны и банальная усталость. Делать холодный аутрич руками в соло оказалось слишком тяжело, измеряемая воронка не выстроилась, и эта инициатива тихо заглохла. 

И вот как раз в этот момент появился Константин, который явно зарядил меня на новые попытки. Пляска продолжается!

Акт 2. Итоговый срез

Чтобы быть до конца честным, я разделил итоги на то, что реально работает, и то, где мы ещё в начале пути:

Что получилось

Что пока нет

Собрать стабильную систему, которая выдерживает очереди и не разоряет меня счетами за GPU

Качество ретуши ещё не везде ровное и предсказуемое

Понять, что даже сырой продукт вызывает интерес у реальных людей

Продукт ещё не стал бесшовным (нажал и забыл)

Выстроить инфраструктурный контур и договориться о грантах на 60 000$+

А главное — я еще ничего не продал!

Вот так страница результатов выглядит сейчас. Это уже можно трогать руками и использовать, но, как видно из таблицы, работы впереди еще много

Акт 3. Что дальше?

Yokva уж точно не закрывается. У меня в голове (да, пока так) лежат идеи обновления и стратегия перехода на уровень нормального инструмента:

  • Продукт: Реализовать главную затею генератора готовых рекламных карточек, только для недвижимости

  • Маркетинг: Буду продолжать записывать рилсы, писать, да и как-то о себе заявлять :)

  • Партнерства: Я всё еще жду ответа от больших игроков. Если не через повторные письма, то, может, через эту статью

Планы конечно грандиозные, путь — еще больше. Уж не знаю сколько на это времени уйдет, но скучно точно не будет!))


Акт 4. Зачем я это написал?

Иногда проскакивает мысль: «А может, зря всё это?». Но я принципиально тащу проект в соло, потому что пока не готов отказаться от этих дофаминовых горок

Я написал эту статью, чтобы выйти из вакуума (я делал это ранее на реддите, но меня заблокировали). Я хочу познакомить проект с людьми:

  • Если вы риелтор, стейджер или лендлорд: заходите на yokva.com. Регистрируйтесь, пробуйте. Пишите — отсыплю побольше кредитов в обмен на честный фидбек.

  • Если вы инженер или фаундер: добро в комментарии. Буду рад, если вы разнесете мою реализацию по фактам, укажете, где я думаю не туда, или просто поделитесь своим опытом.

  • А если вы критик: то точно велком аборд! Покопаемся в идее вместе)

Давайте поговорим!


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перейти ↩