Deveed

Фабрика финтех-продуктов: AI-агенты собирают готовый продукт под клиента и передают в собственность — в облако клиента.

📊 Таблица: модель, роадмап и детали

Суть

Deveed — фабрика: AI-агенты создают готовый финтех/SaaS-продукт под клиента и передают его в собственность (в облако клиента). Считаем по проектам. Core Deveed — в GCP Израиль (me-west1). Фабрика и память (Cognee) остаются у нас при передаче.

Эксперименты

#ВопросЗачемЧто получимКак делаемКритерий успехаУточнение формулировки
1Сколько стоит сделать типовой продукт на разных нейросетях?на какой модели дешевле/качественнеетаблица «модель→цена/качество» + правило выбора10 задач × Qwen/DeepSeek/Sonnet/Opusмодель ≥90% зелёных гейтов при ≤$0.02/прогон
2Какова реальная себестоимость одного прогона?система не пишет, сколько потратилареальную цену прогона в БД + защита от перерасходасохранять токены и стоимость после прогонарасхождение лог vs замер <5%
3Какая память помогает — и как её строить, обновлять, тестировать?выбрать архитектуру памятиварианты (граф/вектор/гибрид) + регламент + прирост качествасравнить варианты на одном наборе задач+≥10% качества ИЛИ −≥30% уточнений при +стоимости ≤15%Уточнение: не «помогает ли», а какая память и как её строим/обновляем/тестируем
4Какие полные требования к изоляции исполнения чужого кода?собрать требования безопасностичеклист (сеть/ФС/ресурсы/секреты) + проверка соответствиясоставить требования; 100 прогонов проверки0 нарушений изоляции на 100 прогонахУточнение: это сбор требований по изоляции, а не A/B
5Во сколько раз ускоряем СОЗДАНИЕ продукта против команды?честная цифра полного цикла бриф→продуктмножитель × с доверительным интерваломреальная фича: фабрика vs команда, 3-5 задач≥5× при качестве не ниже и 0 регрессийУточнение: ускоряем полный цикл создания, не абстрактно
6Ловит ли фабрика регрессии при доработке готового продукта?сейчас проверяем только «компилируется»фабрику, что гоняет тесты и ловит поломкитесты проекта до и после правки≥1 пойманная регрессия на корпусе с внесёнными багамиУточнение: вопрос — ловим ли регрессии
7Можем ли делать настоящие финансовые проверки (для regulated)?антифрод сейчас по ключевым словамреальные правила (идемпотентность/лимиты/сверка)правила + тест на размеченных примерахrecall ≥ порога без всплеска ложных срабатываний
8Можем ли развернуть продукт в нужной стране одной кнопкой?поднять в IL/EU автоматически, под residencyповторяемую развёртку без ручной работыTerraform-модуль «страна», развернуть в 2 странах≥2 страны без ручных шагов, <10 мин до рабочего URL
9Собрать каталог типовых интеграций с product-сайтовпополнить список интеграций реальными из каталоговрасширенный список интеграций по категориямспарсить developers.google.com/products и аналогичные product-каталоги (Stripe, Twilio…), свести по типампокрыты основные категории, дубли убраныидея: потырить список с product-сайтов

Конкуренты — куда деплоят, что перенять, сценарий

КонкурентКуда деплоят / lock-inUX-паттерны перенятьПользовательский сценарий (шаги)Вывод для DeveedИсточник
Base44 (Wix)Свой хостинг *.base44.app; экспорт ZIP/GitHub только на платном и ТОЛЬКО фронт; бэкенд (БД/auth/функции) заперт за их SDK → высокий lock-inРежимы Plan (ИИ-интервью) и Discuss бесплатны до «Start Building»; история чата = версии с кнопкой Revert; три зоны чат/превью/дашборд; разделы Data, Secrets, Roles; «Act as a user»Вход → бриф или Plan-интервью → Start Building → генерация ~5 мин с живым превью → итерации чатом + Visual Edit, откаты Revert → Data+Secrets+Roles → Publish; экспорт только фронтаАнтипример передачи — Deveed отдаёт и бэкенд. Перенять: бесплатная фаза скоупинга и история-как-версииdocs.base44.com · shipai.dev
ВайбКрафт (Yandex)Хостинг Yandex Cloud; код проекта в SourceCraft, «можно отдать разработчику»; self-host вне Яндекса не подтверждён → lock-in на экосистемуЧат-бриф «вайбом» + уточняющий диалог ДО генерации; 4000 нейро-кредитов как видимый бюджет; репозиторий как escape hatch доверияEarly-access → бриф на русском → уточняющий диалог → генерация (часы) → итерации чатом → публикация на Yandex Cloud → исходники в SourceCraftБлиже всех к «передаче кода», но в свою экосистему. Deveed передаёт в GCP клиента. Перенять: уточняющий диалог + видимый бюджетyandex.ru/company/news · habr.com
LovableLovable Cloud по умолчанию; двусторонняя GitHub-синхронизация; вывод стандартный Vite+React+TS → деплой куда угодно (вкл. GCP); мягкий lock-in бэкенда на SupabaseChat Mode (план без кода) vs Agent Mode (правки); Select Elements — ткни в компонент и опиши правку; Versioning 2.0 (история по датам + закладки); секреты шифруютсяБриф → (Chat Mode план) → генерация с превью → итерации тулбаром (Select/инлайн/аннотации) → Connect Supabase, «Add login» → домен → Publish → GitHubЛучший переносимый фронт + честный split «думать/делать». Deveed чистит и фронт, и бэкенд, без Supabase-зависимости. Перенять: Chat-vs-Agent, Select Elements, Versioningdocs.lovable.dev
Bolt.newWebContainers в браузере; выходы: Bolt Hosting / Netlify в ваш аккаунт / ZIP / GitHub; платформа открыта (bolt.diy, свой LLM) → низкий lock-inIDE в браузере с терминалом и установкой пакетов; дифф-правки (переписывает только изменённое); Discussion vs Build; чекпоинты с бесплатным откатом; прозрачность токеновПромт + выбор БД → генерация в WebContainer с превью → правки/терминал → Discussion для плана, чекпоинты → Supabase → deploy на Netlify + домен → Export ZIP/GitHubЭталон прозрачности и escape hatch. Перенять: видимый терминал, дифф-правки, прозрачность стоимостиsupport.bolt.new · github bolt.diy
v0 (Vercel)Вы владеете кодом; Publish на Vercel; ZIP / npx shadcn add / двусторонний Git (ветка-на-чат, PR против main, никогда не в main напрямую); чистый Next.js → self-hostАгентные дифф-итерации; превью в Sandbox (серверные фичи работают); Design Mode (визуальные правки пишутся в код); выдели-секцию; Git-панель с PR; панель интеграций в один кликПромт → генерация Next.js с превью → итерации/Design Mode/выдели-секцию → Integrations Neon/Supabase авто-env → Publish/copy/shadcn add → Git: ветка→PR→merge→deployСильнейший Git-паттерн (ветка-на-чат, PR) — прямо в финтех-ревью. Перенять: PR-ревью, дифф-итерации, дизайн-системаv0.app/docs · vercel.com/blog
Replit AgentReplit Deployments (Autoscale/VM/Static), *.replit.app, домены; ZIP/GitHub; lock-in: .replit конфиг, Replit DB, Replit Auth — обходится Postgres+Auth.jsPlan mode + апрув-гейт (список задач, апрув до старта); Split Agent vs Assistant; чекпоинты со снимком ВСЕГО (файлы+пакеты+конфиг+БД+контекст диалога); App History time-travelОписать → Plan+апрув → сборка с чекпоинтами (провижн БД, запрос секретов, самотест) → превью → правки/откат → Secrets+БД → Deploy → ZIP/GitHubЛучшие чекпоинты (снимок включает БД). Перенять: Plan+апрув-гейт, чекпоинты с данными. Deveed сразу генерит без проприетарного слояdocs.replit.com
Что берём из их UX (проверено рынком): разделение «план / действие» с апрувом плана (Lovable Chat, Replit Plan, Bolt Discussion); чекпоинты с откатом, включая состояние БД (Replit); дифф-итерации + Git-панель с PR против main (v0); правка «ткни-и-опиши» (Lovable); бесплатная фаза скоупинга по брифу (Base44, ВайбКрафт).
Чем Deveed принципиально отличается: все конкуренты по умолчанию хостят у себя, а «передача» неполная (Base44 — только фронт; Lovable — lock-in на Supabase; Replit/Bolt — проприетарный слой; v0 — привязка к Vercel; ВайбКрафт — экосистема Яндекса). Deveed единственный делает чистую передачу всего приложения (фронт + бэкенд + БД + инфра) в собственное облако клиента (GCP), без остаточной зависимости от фабрики. Плюс вертикаль финтеха: регуляторика, аудит, безопасная работа с секретами/ПДн, ревью через PR по умолчанию.

Вопросы и ответы (исследования)

ПЛАТЕЖИ / ЭКВАЙРИНГ

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Эквайринг для международных продуктов без возни с налогами?дефолтPaddle (merchant-of-record)сам платит налоги/VAT в 200+ юрисдикциях, 5%+$0.50 all-inpaddle.com · dodopayments.com
Если клиент сам продавец?альтернативаStripe; Adyen для больших оборотовStripe 2.9%+$0.30; Adyen interchange++ ~2.4-2.8% дешевле от ~$250-400k/мес (мин. инвойс €1000-2500)heyneuron.com · nerdwallet.com
Платежи для РФ?рабочий вариантYooKassa / CloudPaymentsзападные рельсы недоступны (санкции); YooKassa карты 2.7-3.4%, СБП 0.7%yookassa.ru/fees
Израиль — Stripe?подтверждениеILS поддерживается, статус под юрлицо проверить; локально PayMe/Cardcomисточники противоречивы по Stripe-IL; локальные PSP лучше с банкамиstripe.com · payatlas.com

СВЯЗЬ С ПОЛЬЗОВАТЕЛЕМ

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Что должен уметь бот в продукте?базовый наборНотификации + tier-1 FAQ + read-only; деньги/KYC — только web+MFAфинансовые операции в боте небезопасны (риск перехвата)Telegram Bot API
Сервисы рассылок (email/SMS/push), особенно для РФ?списокintl: Resend+SES, Twilio, FCM; РФ: Unisender Go, SMS Aero, RuStoreзападные нарушают 152-ФЗ (ПДн за рубежом); FCM в РФ нестабилен с 2022resend.com · sms-aero.ru
Саппорт-сервис?рекомендацияБаза — Chatwoot self-host; премиум не-РФ — Intercom/Zendeskна 10 агентах Chatwoot ~$0-50 vs Intercom ~$1840; self-host = данные под 152-ФЗchatwoot.com

АНАЛИТИКА И МАРКЕТИНГ

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Дашборды клиенту?инструментMetabase (встраивание+RLS); продуктовая — PostHogMetabase Pro $575/мес; Looker недоступен РФ; PostHog free 1M событийmetabase.com · posthog.com
Маркетинг — промокоды, трекинг?что своё/подключаемПромокоды — свой движок; трекинг — сниппет GA4/Метрика; CDP при ростеStripe закрывает ~90% промокодов; GA4 в РФ ненадёжен; RudderStack ~10× дешевле Segmentstripe docs · rudderstack.com

ТЕХНОЛОГИИ / СТЕК

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Свой оркестратор или готовый (LangGraph/Temporal)?решениеСвой; роли на Claude Agent SDK; Temporal позже под длинные прогонысвой код = изоляция ролей+гейты+аудит (ценность); LangGraph навяжет модель состоянияforge/orchestrator.py
React? какой?да/нетVite+React для консоли, Next.js для продуктовконсоль без SEO → Vite; продукты публичные регулируемые → SSRbest practice
Python и Go — где что?разделениеPython — ядро; Go — только нагруженные части продуктаоркестрация IO/LLM-bound (Python оптимален); Go в hot-path по метрикеbest practice
Монорепо?решениеМонорепо платформы; отдельный репозиторий на каждый продуктпродукты polyrepo = no-lock-in (код у клиента) + изоляцияCLAUDE.md

ИНФРА И ДАННЫЕ

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Типовая БД продукта?конфигPostgres per-tenant + RLS + primary/replica + бэкапызащита в глубину + изоляция для regulated/residency; PITR под аудитINFRA_PLAN.md
Развёртка в нужной стране?процессTerraform, отдельный GCP-проект, region-pinпроект-на-тенанта = изоляция/residency; region-pin машинно-проверяемINFRA_PLAN.md
Мониторинг и секреты?стекGrafana/Sentry/Langfuse + Secret Manager/KMSзакрывает пробел (нет централизованных метрик; ключ рядом с данными)forge README
Тестирование?подходpytest + Playwright на критичном + своя песочницаE2B = внешнее исполнение чужого кода, неприемлемо для regulatedforge/sandbox.py
Поиск по базе знаний / обучение саппорта?подходpgvector в БД тенанта + гибрид; обучение = пополнение тикетамиданные в периметре тенанта; Pinecone нужен на десятках млн векторовbest practice
Откуда данные продукта?ясностьВход генерации = требования+память; БД продукта = данные продаразные вещи, не путать

ПРАВИЛА И ГРАНИЦЫ (НФР)

ВопросЧто хотимОтвет / решениеОбоснованиеИсточник
Жёсткие правила?инвариантыавтор≠ревьюер; деплой IaC+region-pin; интеграции через абстракцию+KMS; отправка после ревьюиначе правила эродируют под срокамиCLAUDE.md
Что НЕ обещаем?границыНЕ: global active-active, sub-сек на LLM, общий кластер для regulated. ДА: 99.9%/продукт, изоляция, fail-closedLLM-стадии медленные; 99.9% достижимо стандартным GCP-HAINFRA_PLAN

Расходы по LLM

Модель$/прогон$/простой (8)$/MVP (20)$/regulated (30)цена за 1M (вх/вых)
local Qwen$0.001$0.01$0.02$0.03≈ электричество
DeepSeek$0.004$0.03$0.08$0.12$0.14 / $0.28
Claude Haiku$0.038$0.3$0.76$1.14$0.8 / $4
GPT-4o$0.105$0.84$2.1$3.15$2.5 / $10
Claude Sonnet$0.144$1.15$2.88$4.32$3 / $15
Claude Opus 4.8$0.72$5.76$14.4$21.6$15 / $75

Правило: задачи без риска → DeepSeek/local; архитектура и regulated → Sonnet/Opus.

Экономика — по проектам

Считаем по проектам: всего проектов = клиентов × проектов на клиента; у проекта есть объём (прогонов на создание + эксплуатации в месяц).
• Себестоимость создания одного проекта = прогоны × цена прогона (центы на local/DeepSeek; прогон ~24К токенов — измерено).
• Затраты в месяц = постоянные расходы ядра + ФОТ команды + проекты × (инфра на проект + прогоны эксплуатации × цена прогона).
• Главный кост — команда, не токены. Точную себестоимость даст эксперимент №2.
• Цены и выручку не выдумываем — это калькулятор на ваших числах (лист «Параметры» в таблице).

Интерфейс и полный путь пользователя

Оператор (наша консоль)

ШагЭкранДействие
1Вход (magic-link)аутентификация
2Дашборд продуктовсписок, статусы прогонов
3Новый продуктбриф + ссылки (репо/БД/дизайн) + профиль (fast/full/regulated) + ключи ядра
4Intakeсистема задаёт вопросы по пробелам — оператор отвечает
5Ревью аналитикиФР и контракты (с аналитиком)
6Прогресс прогонастадии, лог
7Human-gatediff + класс риска → approve/reject + комментарий
8Артефакты / деплойрезультат прогона
9Передача (handoff)миграция в GCP клиента

Клиент-владелец (портал)

ШагЭкранДействие
1Регистрация + согласиявход, GDPR-consent
2Бриф / требованияописывает задачу
3Уточненияотвечает на вопросы intake
4Ревью результатов и гейтовсмотрит/комментирует
5Конфигурация ключейвводит свои ключи (Stripe/KYC/email) в настройках продукта
6Приёмкаsmoke-тест на своих ключах
7Владение / handoffпродукт в его GCP

Конечный пользователь (готовый продукт)

ШагЭкранДействие
1Входрегистрация
2Онбординг + KYCверификация
3Платёж / биллингоплата
4Кабинетпрофиль, статусы
5Нотификацииemail/SMS
6Саппортвиджет/бот

Два типовых продукта

Продукт А — «ОИП» (новый, greenfield)Продукт Б — «Uluky» (старый, brownfield)
Что этоОператор инвестплатформы (образец — ИнтересИнвест): инвесторы ФЛ/ЮЛ/ИП, ЛПИ, админ; собираем с нуляПересборка/доработка существующего продукта Uluky — вход: репозиторий и БД
Зачем примерВертикаль финтех + regulated через весь пайплайн (KYC, договоры, платежи, аудит)Brownfield-ветка: понять чужой код и доработать без поломок
Основные экраныонбординг + анкета + KYC/квалификация · статус заявки · кабинет инвестора · витрина · модерация досье · реестр сделоканализ существующего · диагноз · доработка как PR-дифф · регрессионные тесты
ИнтеграцииKYC (Sumsub) · платежи (номинальный счёт/эквайринг) · email/SMS · аналитикачто уже есть в Uluky + чего не хватает по диагнозу
Критерии готовностиKYC-флоу до approved · платёж проходит · роли · аудит-лог · регуляторикаграф кода построен · доработка не повышает регрессии · PR-дифф читаем · чистая передача
Прототипы/экраны двух продуктов — следующим шагом (мокапы).

Архитектура (C4)

Контекст

Владелец-тенанта[человек]заводит продукт, запускает прогоны,подтверждает human-gate, экспортируетОператор / интегратор[человек · CLI]self-host, прогоны, аудит, evalAsync-клиент платформы[внешняя система]register → submit → pollDeveed[наша система]фабрика: бриф → код + аналитика + аудитв репозиторий клиентаПродукт клиента[результат]Конечный пользователь продукта[человек]в Deveed НЕ ходитLLM-провайдерClaude · DeepSeek · OpenAI · localПоиск рынкаBrave · SearXNG · DuckDuckGoТрекеры/вики/чаты клиентаGitHub · Linear · Jira · SlackgitleaksSAST секретовФин-системы — каталог-спекаStripe · Sumsub · Fireblocks(исполняемых клиентов нет) генерацияанализ рынкахэндофф по кнопкескан проектирует спекугенерирует и отдаёт
Исходный код схемы (x1_ctx.d2)
direction: down

classes: {
  person:  { style: { fill: "#1e40af"; stroke: "#1e3a8a"; font-color: "#ffffff" } }
  persono: { style: { fill: "#cbd5e1"; stroke: "#64748b"; font-color: "#1e293b"; stroke-dash: 4 } }
  sys:     { style: { fill: "#2563eb"; stroke: "#1e3a8a"; font-color: "#ffffff" } }
  sys2:    { style: { fill: "#16a34a"; stroke: "#14532d"; font-color: "#ffffff" } }
  ext:     { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
  extp:    { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#475569"; stroke-dash: 4 } }
}

owner: "Владелец-тенанта\n[человек]\nзаводит продукт, запускает прогоны,\nподтверждает human-gate, экспортирует" { class: person }
oper:  "Оператор / интегратор\n[человек · CLI]\nself-host, прогоны, аудит, eval" { class: person }
apicl: "Async-клиент платформы\n[внешняя система]\nregister → submit → poll" { class: person }
sys:   "Deveed\n[наша система]\nфабрика: бриф → код + аналитика + аудит\nв репозиторий клиента" { class: sys }
prod:  "Продукт клиента\n[результат]" { class: sys2 }
endu:  "Конечный пользователь продукта\n[человек]\nв Deveed НЕ ходит" { class: persono }
llm:   "LLM-провайдер\nClaude · DeepSeek · OpenAI · local" { class: ext }
mkt:   "Поиск рынка\nBrave · SearXNG · DuckDuckGo" { class: ext }
conn:  "Трекеры/вики/чаты клиента\nGitHub · Linear · Jira · Slack" { class: ext }
gl:    "gitleaks\nSAST секретов" { class: ext }
fin:   "Фин-системы — каталог-спека\nStripe · Sumsub · Fireblocks\n(исполняемых клиентов нет)" { class: extp }

owner -> sys
oper -> sys
apicl -> sys
sys -> llm: "генерация"
sys -> mkt: "анализ рынка"
sys -> conn: "хэндофф по кнопке"
sys -> gl: "скан"
sys -> fin: "проектирует спеку" { style.stroke-dash: 4 }
sys -> prod: "генерирует и отдаёт" { style.stroke-dash: 4 }
endu -> prod

Контейнеры

Deveed — процесс-split монолит · общая БД · stdlib http.server (НЕ микросервисы)Веб-фасад + дашбордauth · SPA · запуск · human-gate · экспортAsync-API платформыregister · consent · submit · jobВоркер очередиclaim → прогон → finishControl-plane + хранилищеSQLite по умолч. / Postgresтенанты·проекты·очередь·токены·usageДвижок генерациироли + гейты (см. Component)ПесочницаDocker --network=none → seatbelt → отказData-plane тенанта (файлы)артефакты · память · progressАудит-трейлJSONL + HMAC hash-chain + якорь auto-режим инлайнwizard-режим
Исходный код схемы (x2_cont.d2)
direction: down

classes: {
  cont:  { style: { fill: "#dbeafe"; stroke: "#2563eb"; font-color: "#0f172a" } }
  store: { style: { fill: "#dcfce7"; stroke: "#16a34a"; font-color: "#0f172a" } }
}

ff: "Deveed — процесс-split монолит · общая БД · stdlib http.server (НЕ микросервисы)" {
  web: "Веб-фасад + дашборд\nauth · SPA · запуск · human-gate · экспорт" { class: cont }
  api: "Async-API платформы\nregister · consent · submit · job" { class: cont }
  wk:  "Воркер очереди\nclaim → прогон → finish" { class: cont }
  cp:  "Control-plane + хранилище\nSQLite по умолч. / Postgres\nтенанты·проекты·очередь·токены·usage" { class: store }
  eng: "Движок генерации\nроли + гейты (см. Component)" { class: cont }
  sbx: "Песочница\nDocker --network=none → seatbelt → отказ" { class: cont }
  dp:  "Data-plane тенанта (файлы)\nартефакты · память · progress" { class: store }
  aud: "Аудит-трейл\nJSONL + HMAC hash-chain + якорь" { class: store }

  web -> cp
  api -> cp
  wk -> cp
  web -> eng: "auto-режим инлайн"
  wk -> eng: "wizard-режим"
  eng -> sbx
  eng -> dp
  eng -> aud
}

Компоненты

Оркестратор пайплайнаrun_pipelineУсловный планировщик стадийпрофиль fast/full/regulated → какие стадииРеестр ролей~35 изолированных систем-промптовМастер-чекпойнтыпауза/резюм, правка артефактаДвижок гейтовsecurity·tests·dlp·review·legal·fraud·complianceSandbox-исполнительПровайдер-абстракция (LLM)Память продуктаJSON-граф, компаундится (Cognee — no-op)Экстракторы фактовERD·API·роли·PII (file:line)Рекомендателиprocess·product·market·CEO-резюмеАртефакт-трассаsources, ловит ungroundedВалидатор диаграммmermaid C4/flow, иначе degradedХэндофф во внешние системыbuild_handoff + клиентыАудит
Исходный код схемы (x3_comp.d2)
direction: down

classes: {
  real: { style: { fill: "#dbeafe"; stroke: "#2563eb"; font-color: "#0f172a" } }
  ext:  { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
  ana:  { style: { fill: "#f3e8ff"; stroke: "#9333ea"; font-color: "#0f172a" } }
}

orc: "Оркестратор пайплайна\nrun_pipeline" { class: real }
sp:  "Условный планировщик стадий\nпрофиль fast/full/regulated → какие стадии" { class: real }
rr:  "Реестр ролей\n~35 изолированных систем-промптов" { class: real }
ck:  "Мастер-чекпойнты\nпауза/резюм, правка артефакта" { class: real }
ga:  "Движок гейтов\nsecurity·tests·dlp·review·legal·fraud·compliance" { class: real }
sx:  "Sandbox-исполнитель" { class: real }
pv:  "Провайдер-абстракция (LLM)" { class: ext }
mm:  "Память продукта\nJSON-граф, компаундится (Cognee — no-op)" { class: ana }
ex:  "Экстракторы фактов\nERD·API·роли·PII (file:line)" { class: real }
rc:  "Рекомендатели\nprocess·product·market·CEO-резюме" { class: real }
ar:  "Артефакт-трасса\nsources, ловит ungrounded" { class: real }
dg:  "Валидатор диаграмм\nmermaid C4/flow, иначе degraded" { class: real }
ho:  "Хэндофф во внешние системы\nbuild_handoff + клиенты" { class: ext }
au:  "Аудит" { class: real }

orc -> sp
sp -> rr
orc -> ck
orc -> ga
ga -> sx
rr -> pv
orc -> mm
orc -> ex
orc -> rc
orc -> ar
orc -> dg
ga -> au
orc -> ho

Deployment — где наш GCP, где GCP клиента

Core Deveed — в GCP Израиль (me-west1). Синее — наш аккаунт (Core + hosted-проекты). Зелёное — аккаунт GCP клиента (туда продукт переезжает при передаче). РФ — не GCP (Yandex/VK).
НАШ GCP — аккаунт Deveed · Израиль (me-west1)GCP КЛИЕНТА — ЕГО аккаунт (после передачи)РФ-клиент: НЕ GCP (152-ФЗ) → Yandex/VKCore control-plane — общий, без ПДн клиентовHosted-проекты клиентов (пока у нас)тот же продукт: web/worker + БД + storageего регион · его креды · его биллингControl-plane + оркестратор (2+ реплики)Очередь заданийРеестр тенантов + биллинг + RBACLinear — задачи и прогоныGit — репозитории кода клиентовCognee — память (наш ров)Проект клиента A — region-pin под его странуПроект клиента B ...web 2-3 реплики / worker автоскейлPostgres primary + read-replicastorage + KMS (CMEK) provision per-tenant handoff: миграция в аккаунт клиента (IaC) +ротация ВСЕХ кредов; Cognee и фабрику НЕ отдаём 152-ФЗ
Исходный код схемы (t_deploy.d2)
direction: down

classes: {
  our:  { style: { fill: "#dbeafe"; stroke: "#1d4ed8"; font-color: "#0f172a" } }
  core: { style: { fill: "#bfdbfe"; stroke: "#1e40af"; font-color: "#0f172a" } }
  cli:  { style: { fill: "#dcfce7"; stroke: "#15803d"; font-color: "#0f172a" } }
  ru:   { style: { fill: "#fee2e2"; stroke: "#dc2626"; font-color: "#0f172a" } }
}

our: "НАШ GCP — аккаунт Deveed · Израиль (me-west1)" {
  class: our
  core: "Core control-plane — общий, без ПДн клиентов" {
    class: core
    cp:  "Control-plane + оркестратор (2+ реплики)" { class: core }
    jq:  "Очередь заданий" { class: core }
    reg: "Реестр тенантов + биллинг + RBAC" { class: core }
    lin: "Linear — задачи и прогоны" { class: core }
    git: "Git — репозитории кода клиентов" { class: core }
    cog: "Cognee — память (наш ров)" { class: core }
  }
  host: "Hosted-проекты клиентов (пока у нас)" {
    class: our
    pa: "Проект клиента A — region-pin под его страну" {
      class: our
      aw:  "web 2-3 реплики / worker автоскейл" { class: our }
      adb: "Postgres primary + read-replica" { class: our }
      akv: "storage + KMS (CMEK)" { class: our }
    }
    pb: "Проект клиента B ..." { class: our }
  }
}

cli: "GCP КЛИЕНТА — ЕГО аккаунт (после передачи)" {
  class: cli
  cwp: "тот же продукт: web/worker + БД + storage" { class: cli }
  cnn: "его регион · его креды · его биллинг" { class: cli }
}

ru: "РФ-клиент: НЕ GCP (152-ФЗ) → Yandex/VK" { class: ru }

our.core.cp -> our.core.jq
our.core.cp -> our.host.pa: "provision per-tenant"
our.core.cp -> our.host.pb
our.host.pa.aw -> our.host.pa.adb
our.host.pa -> cli.cwp: "handoff: миграция в аккаунт клиента (IaC) +\nротация ВСЕХ кредов; Cognee и фабрику НЕ отдаём" { style: { stroke-width: 6; stroke: "#15803d" } }
our.core.cp -> ru: "152-ФЗ" { style.stroke-dash: 4 }

Инфра — развилка: Cloudflare+managed БД vs всё своё

КритерийВариант A — Cloudflare + managed БДВариант B — всё своё на GCP
СоставCloudflare (CDN/WAF/DDoS, Pages/Workers) + GCP Cloud Run + managed БД (Cloud SQL/Neon/Supabase)GCP Load Balancer + Cloud Armor (WAF) + Cloud Run/GKE + Cloud SQL в регионе
Плюсыдёшево, глобальный edge, меньше ops, WAF/DDoS из коробкиполный контроль, единый периметр, проще residency, без третьей стороны на данных
Минусытрафик через CF; для ПДн/regulated CF не должен терминировать чувствительные данные; managed-БД вне нашего контролядороже, больше ops, нет глобального edge из коробки
Рекомендация: Core Deveed — на GCP Израиль. Для генерируемых продуктов: Cloudflare ТОЛЬКО как edge/WAF/CDN перед фронтом (без проксирования ПДн через Workers); бэкенд и БД с ПДн — в регионе тенанта на GCP (Cloud SQL). Для regulated чувствительные данные через CF не пускаем.

Продукт клиента + интеграции и слои

Продукт клиента — приложениеAuth / RBACОнбординг + KYCПлатежи / биллингНотификацииСаппортДашборды / аналитикаМаркетинг · промо · UTMSupabase Auth · ClerkSumsub · PersonaStripe · Paddle · YooKassaMailgun · Sendsay · TwilioFreshdesk · IntercomMetabase · PostHogStripe промо · UTM/MetricaФронт · Next.jsБэкенд · APIБД продукта · Postgres + RLS
Исходный код схемы (t_product.d2)
direction: down

classes: {
  cont:  { style: { fill: "#dbeafe"; stroke: "#2563eb"; font-color: "#0f172a" } }
  store: { style: { fill: "#dcfce7"; stroke: "#16a34a"; font-color: "#0f172a" } }
  ext:   { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
}

cp: "Продукт клиента — приложение" {
  fe:  "Фронт · Next.js" { class: cont }
  be:  "Бэкенд · API" { class: cont }
  pdb: "БД продукта · Postgres + RLS" { class: store }
  fe -> be
  be -> pdb
}

auth: "Auth / RBAC" { class: cont }
kyc:  "Онбординг + KYC" { class: cont }
pay:  "Платежи / биллинг" { class: cont }
not:  "Нотификации" { class: cont }
sup:  "Саппорт" { class: cont }
dash: "Дашборды / аналитика" { class: cont }
mkt:  "Маркетинг · промо · UTM" { class: cont }

av: "Supabase Auth · Clerk" { class: ext }
kv: "Sumsub · Persona" { class: ext }
pv: "Stripe · Paddle · YooKassa" { class: ext }
nv: "Mailgun · Sendsay · Twilio" { class: ext }
sv: "Freshdesk · Intercom" { class: ext }
dv: "Metabase · PostHog" { class: ext }
mv: "Stripe промо · UTM/Metrica" { class: ext }

cp.be -> auth
cp.be -> kyc
cp.be -> pay
cp.be -> not
cp.be -> sup
cp.be -> dash
cp.be -> mkt

auth -> av
kyc -> kv
pay -> pv
not -> nv
sup -> sv
dash -> dv
mkt -> mv

Слои

ПрезентацияПрикладной слойИнтеграцииДанныеИнфраструктураNext.js · ReactAPI / бизнес-логикаRBAC · согласияПлатежи: Stripe/Paddle/YooKassaKYC: Sumsub/PersonaСвязь: Mailgun/Sendsay/TwilioСаппорт: Freshdesk/IntercomPostgres + RLSObject storageАналитика: Metabase/PostHogGCP (Core) / Yandex (RU)Terraform · CI/CDKMS · секреты
Исходный код схемы (t_layers.d2)
direction: down

classes: {
  cont:  { style: { fill: "#dbeafe"; stroke: "#2563eb"; font-color: "#0f172a" } }
  store: { style: { fill: "#dcfce7"; stroke: "#16a34a"; font-color: "#0f172a" } }
  ext:   { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
}

l1: "Презентация" {
  p1: "Next.js · React" { class: cont }
}
l2: "Прикладной слой" {
  a1: "API / бизнес-логика" { class: cont }
  a2: "RBAC · согласия" { class: cont }
}
l3: "Интеграции" {
  i1: "Платежи: Stripe/Paddle/YooKassa" { class: ext }
  i2: "KYC: Sumsub/Persona" { class: ext }
  i3: "Связь: Mailgun/Sendsay/Twilio" { class: ext }
  i4: "Саппорт: Freshdesk/Intercom" { class: ext }
}
l4: "Данные" {
  d1: "Postgres + RLS" { class: store }
  d2obj: "Object storage" { class: store }
  d3: "Аналитика: Metabase/PostHog" { class: store }
}
l5: "Инфраструктура" {
  f1: "GCP (Core) / Yandex (RU)" { class: cont }
  f2: "Terraform · CI/CD" { class: cont }
  f3: "KMS · секреты" { class: store }
}

l1 -> l2
l2 -> l3
l2 -> l4
l3 -> l4
l4 -> l5

Как клиент работает с нами (путь с ветками)

Клиент приходитЧто на входе?greenfield — бриф и требованияbrownfield — анализ репо/БДТип лицаЮрлицо — B2B-договорФизлицо — упрощённый онбордингЮрисдикцияИзраиль — GCP me-west1, Paddle/StripeEU — GCP EU, GDPRРФ — Yandex/VK, YooKassa (не GCP)Прочее — ближайший GCP-регионНужны перс. данные?KYC/платежи — усиленный контур, residencyОблегчённый контурШаги: регистрация — продукт — бриф — прогон — human-gate — артефакты — приёмка — handoff с нуляготовый продуктюрлицофизлицоданет
Исходный код схемы (user_flow.d2)
direction: down
n0: "Клиент приходит" {shape: oval}
n1: "Что на входе?" {shape: diamond}
n2: "greenfield — бриф и требования"
n3: "brownfield — анализ репо/БД"
n4: "Тип лица" {shape: diamond}
n5: "Юрлицо — B2B-договор"
n6: "Физлицо — упрощённый онбординг"
n7: "Юрисдикция" {shape: diamond}
n8: "Израиль — GCP me-west1, Paddle/Stripe"
n9: "EU — GCP EU, GDPR"
n10: "РФ — Yandex/VK, YooKassa (не GCP)"
n11: "Прочее — ближайший GCP-регион"
n12: "Нужны перс. данные?" {shape: diamond}
n13: "KYC/платежи — усиленный контур, residency"
n14: "Облегчённый контур"
n15: "Шаги: регистрация — продукт — бриф — прогон — human-gate — артефакты — приёмка — handoff"
n0 -> n1
n1 -> n2: "с нуля"
n1 -> n3: "готовый продукт"
n2 -> n4
n3 -> n4
n4 -> n5: "юрлицо"
n4 -> n6: "физлицо"
n5 -> n7
n6 -> n7
n7 -> n8
n7 -> n9
n7 -> n10
n7 -> n11
n8 -> n12
n9 -> n12
n10 -> n12
n11 -> n12
n12 -> n13: "да"
n12 -> n14: "нет"
n13 -> n15
n14 -> n15

Роли и доступ (BPMN + RBAC)

Супер-админ (наш) — вся платформаОператор (наш)Аналитик (наш)Клиент-владелецАдмин (клиента) — свой тенантСаппортКонечный пользовательзаводит тенантаназначает роли, лимиты, биллингзапускает прогонведёт human-gateревью ФР / контрактовзаявка + брифприёмкавладение / handoffпользователи и роли продуктаконфигурация ключей (BYO)тикеты tier-1эскалацияонбординг · платежи · саппорт
Исходный код схемы (t_bpmn.d2)
direction: right

classes: {
  person:  { style: { fill: "#1e40af"; stroke: "#1e3a8a"; font-color: "#ffffff" } }
  persono: { style: { fill: "#cbd5e1"; stroke: "#64748b"; font-color: "#1e293b"; stroke-dash: 4 } }
  sys2:    { style: { fill: "#16a34a"; stroke: "#14532d"; font-color: "#ffffff" } }
  admin:   { style: { fill: "#7c2d12"; stroke: "#9a3412"; font-color: "#ffffff" } }
}

sa: "Супер-админ (наш) — вся платформа" {
  sa1: "заводит тенанта" { class: admin }
  sa2: "назначает роли, лимиты, биллинг" { class: admin }
  sa1 -> sa2
}
op: "Оператор (наш)" {
  op1: "запускает прогон" { class: person }
  op2: "ведёт human-gate" { class: person }
  op1 -> op2
}
an: "Аналитик (наш)" {
  an1: "ревью ФР / контрактов" { class: person }
}
cl: "Клиент-владелец" {
  cl1: "заявка + бриф" { class: sys2 }
  cl2: "приёмка" { class: sys2 }
  cl3: "владение / handoff" { class: sys2 }
  cl1 -> cl2
  cl2 -> cl3
}
ad: "Админ (клиента) — свой тенант" {
  ad1: "пользователи и роли продукта" { class: admin }
  ad2: "конфигурация ключей (BYO)" { class: admin }
  ad1 -> ad2
}
su: "Саппорт" {
  su1: "тикеты tier-1" { class: person }
  su2: "эскалация" { class: person }
  su1 -> su2
}
eu: "Конечный пользователь" {
  eu1: "онбординг · платежи · саппорт" { class: persono }
}

sa.sa1 -> cl.cl1
cl.cl1 -> op.op1
op.op1 -> an.an1
an.an1 -> op.op2
op.op2 -> cl.cl2
cl.cl3 -> ad.ad1
ad.ad2 -> eu.eu1
eu.eu1 -> su.su1
su.su2 -> op.op1
РольОбласть доступаДействия
Супер-админ (наш)вся платформатенанты, роли, лимиты, биллинг
Оператор (наш)любой тенантзапуск прогонов, контроль человеком
Аналитик (наш)артефакты прогонаревью ФР и контрактов
Клиент-владелецсвой тенантбриф, приёмка, владение и передача
Админ клиентасвой продуктпользователи, роли, ключи (BYO)
Саппорттикеты продуктапервая линия, эскалация
Конечный пользовательсвой аккаунтонбординг, платежи, поддержка

Интеграции (сущности и варианты)

Ядро

LLMLLM-gatewayПамятьSandboxОблакоIaCТрекерClaudeDeepSeeklocal qwenOpenRouterLaozhang (RU)Cognee (no-op)pgvectorDockerE2BGCP (Core)Yandex (RU)TerraformLinearYandex Tracker
Исходный код схемы (a_int_core.d2)
direction: right

classes: {
  ext:  { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
  mock: { style: { fill: "#e2e8f0"; stroke: "#94a3b8"; font-color: "#64748b"; stroke-dash: 4 } }
  hub:  { shape: circle; style: { fill: "#1e3a8a"; stroke: "#1e3a8a"; font-color: "#ffffff" } }
}

llmn: "LLM" { class: hub }
gwn:  "LLM-gateway" { class: hub }
memn: "Память" { class: hub }
sbn:  "Sandbox" { class: hub }
cloudn: "Облако" { class: hub }
iacn: "IaC" { class: hub }
trn:  "Трекер" { class: hub }

claude: "Claude" { class: ext }
deep:   "DeepSeek" { class: ext }
qwen:   "local qwen" { class: ext }
or2:    "OpenRouter" { class: ext }
lao:    "Laozhang (RU)" { class: ext }
cog:    "Cognee (no-op)" { class: mock }
pgv:    "pgvector" { class: ext }
dock:   "Docker" { class: ext }
e2b:    "E2B" { class: ext }
gcp:    "GCP (Core)" { class: ext }
yandex: "Yandex (RU)" { class: ext }
tf:     "Terraform" { class: ext }
lin:    "Linear" { class: ext }
yt:     "Yandex Tracker" { class: ext }

llmn -> claude
llmn -> deep
llmn -> qwen
gwn -> or2
gwn -> lao
memn -> cog
memn -> pgv
sbn -> dock
sbn -> e2b
cloudn -> gcp
cloudn -> yandex
iacn -> tf
trn -> lin
trn -> yt

Рантайм продукта

ПлатежиKYC / AMLEmail / SMSСаппортАналитикаAuthБД продуктаStripePaddle (MoR)YooKassaSumsubPersonaOnfidoPostmarkAmazon SESSendsay (RU)FreshdeskIntercomChatwootMetabasePostHogSupabase AuthClerkSupabaseNeon
Исходный код схемы (a_int_product.d2)
direction: right

classes: {
  ext: { style: { fill: "#fef3c7"; stroke: "#d97706"; font-color: "#0f172a" } }
  hub: { shape: circle; style: { fill: "#1e3a8a"; stroke: "#1e3a8a"; font-color: "#ffffff" } }
}

pay:   "Платежи" { class: hub }
kycn:  "KYC / AML" { class: hub }
mailn: "Email / SMS" { class: hub }
supn:  "Саппорт" { class: hub }
ann:   "Аналитика" { class: hub }
authn: "Auth" { class: hub }
dbn:   "БД продукта" { class: hub }

stripe:  "Stripe" { class: ext }
paddle:  "Paddle (MoR)" { class: ext }
yoo:     "YooKassa" { class: ext }
sumsub:  "Sumsub" { class: ext }
persona: "Persona" { class: ext }
onfido:  "Onfido" { class: ext }
postmark: "Postmark" { class: ext }
ses:     "Amazon SES" { class: ext }
sendsay: "Sendsay (RU)" { class: ext }
fresh:   "Freshdesk" { class: ext }
inter:   "Intercom" { class: ext }
chat:    "Chatwoot" { class: ext }
meta:    "Metabase" { class: ext }
post:    "PostHog" { class: ext }
supaa:   "Supabase Auth" { class: ext }
clerk:   "Clerk" { class: ext }
supa:    "Supabase" { class: ext }
neon:    "Neon" { class: ext }

pay -> stripe
pay -> paddle
pay -> yoo
kycn -> sumsub
kycn -> persona
kycn -> onfido
mailn -> postmark
mailn -> ses
mailn -> sendsay
supn -> fresh
supn -> inter
supn -> chat
ann -> meta
ann -> post
authn -> supaa
authn -> clerk
dbn -> supa
dbn -> neon

Роадмап до продакшна

Ф0 — не доверяем (mock/dry-run)Ф1 — узкий realФ2 — авто low-riskФ3 — автономно + передачаЛогирование токеновКонтейнерный sandboxGolden-set + baselineВыбор моделиНадёжность sandboxПамять on/offМножитель vs человекАвто-apply обратимых стадийOne-click деплой по геоНепрерывная верификацияЧистый handoff
Исходный код схемы (roadmap.d2)
direction: right
F0: Ф0 — не доверяем (mock/dry-run) {
  e3: Логирование токенов
  sb: Контейнерный sandbox
  gold: Golden-set + baseline
}
F1: Ф1 — узкий real {
  e1: Выбор модели
  e4: Надёжность sandbox
  e2: Память on/off
  e6: Множитель vs человек
}
F2: Ф2 — авто low-risk {
  f2: Авто-apply обратимых стадий
  e5: One-click деплой по гео
  ci: Непрерывная верификация
}
F3: Ф3 — автономно + передача {
  ho: Чистый handoff
}
F0 -> F1 -> F2 -> F3

Чеклисты

Наша подготовка к запуску
☐ Эксперимент №2 (себестоимость) закрыт
☐ Изоляция sandbox гарантирована
☐ Golden-набор + baseline собраны
☐ Два продукта (ОИП, Uluky) прогнаны end-to-end
☐ Контур деплоя в GCP Израиль поднят
☐ Процедура handoff отрепетирована
☐ Правовая форма передачи IP проработана
☐ Цены провалидированы на 1-2 пилотах
☐ Развилка РФ vs intl решена
☐ Owner эскалаций назначен
Развёртка нового проекта (наш GCP Израиль)
☐ Создать GCP-проект клиента в нашем аккаунте
☐ Привязать регион к стране клиента (region-pin)
☐ Postgres primary + read-replica, включить RLS
☐ Object storage + KMS (CMEK)
☐ terraform apply -var country=
☐ Smoke-тест + проверка residency
☐ Проект в Linear + репозиторий
Передача продукта (handoff в GCP клиента)
☐ Зафиксировать версию + последний коммит (SHA)
☐ Финальные аналитические артефакты
☐ Отчёт эксперимента выбора модели
☐ Миграция в GCP-аккаунт клиента (IaC)
☐ Сменить все креды, отозвать наш доступ
☐ Передать репозиторий + runbook
☐ Smoke-тест на ключах клиента
☐ Акт передачи · Cognee и фабрику не отдаём
Подключение интеграции (BYO-ключи)
☐ Выбрать вариант по листу «Интеграции» (учесть РФ)
☐ Клиент вводит ключи в своём продукте
☐ Шифрование (KMS) + маскирование в UI
☐ Проверка соединения (verify)
☐ Тестовая транзакция в песочнице
☐ Включить в прод после ревью
Требования к изоляции (sandbox)
☐ Сеть запрещена (--network=none)
☐ ФС только чтение + временная папка
☐ Лимиты CPU / RAM / время
☐ Нет доступа к секретам и env хоста
☐ Контейнер на задачу, уничтожается
☐ Отказ при недоступности изоляции
Жёсткие правила (проверка перед релизом)
☐ Автор ≠ ревьюер
☐ Пройдены гейты security / tests / legal
☐ Аналитика помечает факт / интерпретацию / вопрос
☐ Деплой только через IaC + region-pin
☐ Интеграции через абстракцию + KMS
☐ Отправка наружу после проверки человеком
Go-live продукта
☐ KYC/платежи на ключах клиента
☐ Нотификации (email/SMS)
☐ Дашборды/аналитика подключены
☐ Бэкапы (PITR) включены
☐ Мониторинг и алерты
☐ Роли заданы (админ/супер-админ)
☐ Аудит-лог пишется
Запуск эксперимента
☐ Вопрос + критерий успеха
☐ Golden-набор / данные
☐ Baseline зафиксирован
☐ Прогон + замер метрики
☐ Вывод: прошло / нет + решение

Источники

ЧтоИсточник
~24К токенов на прогон (18.4К вход / 6К выход)живой замер на ollama qwen2.5-coder
Цены LLM ($/1M токенов)anthropic.com/pricing · openai.com/pricing · api-docs.deepseek.com
Архитектура, стадии, гейтырепозиторий: orchestrator.py · gates.py · sandbox.py · ARCHITECTURE.md · INFRA_PLAN.md
152-ФЗ × GCP, GDPR, Israel residencyисследование инфраструктуры
Конкуренты (деплой/UX/сценарий)docs.base44 · yandex.ru/company/news · docs.lovable.dev · support.bolt.new · v0.app/docs · docs.replit.com

Прототипы экранов

Консоль Deveed — 1. Дашборд продуктов прототип
app.deveed.io / dashboard
AK
Все продукты
Прогоны
История
Handoff
Продукты
3 активных · 1 в архиве
НазваниеТипСтатус прогонаОбновлён
ОИП / ИнтересИнвестregulatedЗавершён22 июн, 14:31
Uluky AnalyticsbrownfieldHuman-gate23 июн, 09:17
PayFlow DemofullВ очереди21 июн, 18:05
LendingKit v1fastАрхив10 мая, 11:00
Консоль Deveed — 2. Новый продукт / Бриф прототип
app.deveed.io / products / new
AK
Создание продукта
1
Бриф
2
Intake
3
Прогон
4
Гейт
fast
~$0.03
full
~$2.9
regulated
~$4.3
Консоль Deveed — 3. Human-gate прототип
app.deveed.io / runs / r-8471 / gate
Uluky Analytics Human-gate #4
AK
Изменения (4 файла, +87 / -23)
src/api/kyc_service.py
- def verify_user(uid): pass
+ def verify_user(uid, provider="sumsub"):
+ return provider_client.check(uid)
# timeout=30s, retry=3
migrations/0012_kyc_status.sql
+ ALTER TABLE users ADD COLUMN kyc_status VARCHAR(20);
+ ALTER TABLE users ADD COLUMN kyc_provider VARCHAR(50);
-- RLS policy updated
+87 строк -23 строки 4 файла
Оценка риска
⚠ Риск: средний (medium)
ЗатронутоKYC, миграция БД
Тесты12 / 12 ✓
Lint0 ошибок ✓
Регрессии0 обнаружено ✓
Комментарий оператора
Продукт А «ОИП» — 4. Онбординг + KYC прототип
oip.example.ru / onboarding
Оператор инвестиционной платформы
Регистрация
2
Анкета
3
Документы
4
Верификация
Физлицо (ФЛ)
Юрлицо (ЮЛ)
📄
Перетащите документы или нажмите для загрузки
Паспорт · СНИЛС · ИНН — PDF или JPG, до 10 МБ
Анкета на верификации — проверка занимает до 24 часов. Уведомим на email.
Продукт А «ОИП» — 5. Кабинет инвестора прототип
oip.example.ru / cabinet
АИ
Добрый день, Алексей Иванов  KYC ✓
₽ 2 450 000
Баланс портфеля
+14,3%
Доходность
3
Активных позиций
Портфель
Витрина
Транзакции
Актуальные предложения
Облигации ООО «Ромашка»
Срок: 18 мес · Мин. сумма: ₽ 50 000 · Рейтинг: BB+
12,5% год.
Займ МСП «Технологии»
Срок: 12 мес · Мин. сумма: ₽ 100 000 · Рейтинг: A-
10,8% год.
Продукт А «ОИП» — 6. Админ: очередь модерации прототип
oip.example.ru / admin / kyc-queue
AD
Очередь модерации
12 заявок ожидают проверки
КлиентТипСтатусДата подачиДействие
Иванов А. А.ФЛОжидает23.06.2026 09:45
ООО «Ромашка»ЮЛНа проверке23.06.2026 08:20
Петрова О. В.ФЛОжидает22.06.2026 17:51
ИП Сидоров Г.Р.ИПДоп. документы22.06.2026 15:33
АО «ТехПлюс»ЮЛОдобрен21.06.2026 12:10
Продукт Б «Uluky» — 7. Анализ существующего продукта прототип
app.deveed.io / products / uluky / analysis
Uluky Analytics Анализ продукта
AK
Репозиторий
📁 uluky/
📁 src/
📄 auth.py ✎
📄 models.py
📄 payments.py ✎
📄 analytics.py
📁 migrations/
📄 0014_fix_idx.sql ✎
📁 tests/
📄 test_auth.py
📄 test_payments.py
📄 requirements.txt
📄 README.md
⚠ 3 файла изменены
📊 14 286 строк кода
Диагноз / Находки
⚠ Критично: отсутствует идемпотентность платежей
payments.py:47 — повторные POST /pay не защищены. Риск двойного списания.
△ Средне: нет индекса на user_id в таблице transactions
migrations/0014 — полный скан 2.1M строк. Запрос >500ms при нагрузке.
ⓘ Инфо: устаревший JWT-механизм (v1 без refresh)
auth.py:12 — отсутствует ротация refresh-токенов. Рекомендуется обновить.
✓ Покрытие тестами: 68% (норма)
test_auth.py + test_payments.py · 143 теста, 12 пропущены
Предложенный PR-дифф
payments.py — fix: идемпотентность
@app.route('/pay', methods=['POST'])
- def process_payment():
+ def process_payment():
+ idem_key = request.headers.get('X-Idempotency-Key')
+ if idem_key and cache.get(idem_key):
+ return cached_response(idem_key)
amount = request.json['amount']
migrations/0014_fix_idx.sql
+ CREATE INDEX CONCURRENTLY idx_transactions_user_id
+ ON transactions(user_id);
📊 Регрессии после правки: 0 / 143 тестов  ·  Покрытие: 71% (+3%)

Выводы и решения

Главные решения: свой оркестратор (роли на Claude Agent SDK) · Python в ядре, Go только в нагруженных частях продукта · монорепо платформы + отдельный репозиторий на продукт · Postgres + RLS на тенанта · Paddle/Stripe (intl), YooKassa (РФ) · своя песочница (не E2B) · Terraform на тенанта с привязкой к региону.
Главная развилка — РФ или международный рынок: 152-ФЗ требует хранить ПДн граждан РФ в РФ, а у GCP нет дата-центров в РФ → либо международный рынок на GCP, либо отдельная РФ-линия (Yandex/VK + YooKassa/Sendsay). Это два разных стека.
Честная оценка: платящих клиентов пока нет (32 demo-прогона); себестоимость прогона — разовый замер (точную даст эксперимент №2); цены не выдуманы. Себестоимость прогона — центы, маржа на инфраструктуре высокая, главный кост — команда.