type: entity

entityType: project

observations: Стартап: AI-подбор земельных участков (Site Finder) + автоматическая генерация концепций застройки (Generative Design) для девелоперов РФ

observations: Two-in-one воронка: от инвест-критериев → найденный участок → концепт застройки → финансовая модель

observations: Конкуренты: rTIM (только концепт-стадия, нет site-selection), TestFit (нет РФ-данных)

observations: Целевая аудитория: инвестдепартаменты + архитектурно-проектные отделы региональных девелоперов

observations: Фаза 0 — Discovery MVP, апрель–июнь 2026 (3 месяца)

observations: Бюджет Фазы 0: 0,9–1,2 млн ₽

observations: Документы хранятся в docs/ внутри репозитория


observations: Решение зафиксировано в апреле 2026: переход с .NET на Python для Discovery MVP

observations: Backend: Python 3.12, FastAPI 0.115+, SQLAlchemy 2.0, GeoAlchemy2, Pydantic v2, Alembic, Celery + Redis, httpx

observations: Геометрия: Shapely 2.0, GeoPandas 1.0, Pyproj (проекции WGS84 ↔ UTM ↔ МСК-66 для Свердловской обл.), Rasterio

observations: ML: XGBoost (скоринг участков), scikit-learn, pandas, NumPy

observations: База данных: PostgreSQL 16 + PostGIS 3.4, Redis 7

observations: Frontend: Next.js 15, React 19, TypeScript 5, Tailwind CSS 4, shadcn/ui, TanStack Query, Mapbox GL JS или Leaflet

observations: Экспорт: WeasyPrint (PDF), ezdxf (DXF), openpyxl (Excel)

observations: Инфра: Yandex Cloud или VK Cloud, Docker, GitHub Actions, Sentry

observations: Dev tools: uv (зависимости), ruff (линтер+форматтер), mypy (типизация), pytest


entityType: goal

observations: К концу месяца 3 (июнь 2026): 3 платящих пилотных клиента, ≥30 тыс. ₽/мес каждый

observations: Заявка в реестр российского ПО подана

observations: Це́ль: получить право пройти в Раунд А на 20–25 млн ₽

observations: Acceptance criteria разбиты на 3 блока: функционально / бизнесово / технически

observations: Правило перехода: 3/3 → Раунд А; 2/3 → продление Фазы 0 на 1–2 мес.; 1/3 или меньше → стоп проекта

observations: В v2.2 цель = 3 пилота; в v2.1 (бизнес-план) указано 4 пилота — расхождение, требует синхронизации в пользу 3


entityType: phase

observations: Discovery MVP, месяцы 1–3 после старта

observations: Пилотный регион: Свердловская обл. (Екатеринбург, ПЗЗ Екатеринбурга, МСК-66)

observations: Месяц 1 цели: ООО зарегистрировано, прототип Site Finder с 1000 участков, 50 целевых клиентов в CRM, 5 cold-outreach, 3 встречи

observations: Месяц 2 цели: 15 встреч кумулятивно, 2 LOI, 1 платящий пилот (≥30 тыс. ₽/мес), демо на реальных участках, первая статья

observations: Месяц 3 цели: 20+ встреч, 3 платящих пилота, 7+ LOI, 1 регадминистрация в переговорах, заявка в реестр ПО, инвест-deck (12 слайдов), финмодель на 5 лет


entityType: review

observations: Дата валидации: 25 апреля 2026

observations: КРИТИЧНО: бизнес-план v2.1 не синхронизирован со стеком v2.2 — в плане 12 мес. месяцы 1–4 ещё ссылаются на .NET Core 8

observations: Несостыковка KPI: v2.1 = 4 платящих пилота, v2.2 = 3 — нужно остановиться на 3 (как в Acceptance Criteria v2.2)

observations: Регион не зафиксирован однозначно: v2.1 пишет «Свердл. или Лен.», v2.2 — только Свердл. — закрепить Свердловскую

observations: Прайсинг: пилот 30 тыс., прайс-лист 70–120 тыс. — уточнить в финмодели для инвесторов: 70 тыс./мес как baseline

observations: Технические риски: Time to First Value ≤10 мин амбициозно (предложение: 15 мин); генерация концепции ≤10 сек требует профилировки с первого билда

observations: PostgreSQL TDE отсутствует в open-source — заменить на pgcrypto + шифрование чувствительных полей на уровне приложения

observations: mypy --strict для всего MVP избыточен соло-разработчику — оставить только для core-модулей (geometry/scoring/financial)

observations: 99% uptime в рабочие часы для соло-разработчика рискованно — реалистично 95% + ответ в течение рабочего дня

observations: Заявка в реестр ПО ≠ свидетельство; срок рассмотрения 60–180 дней — учесть для расчёта Раунда А

observations: Бюджет 1,2 млн ₽ + 3 мес. + один основатель плотный; рекомендация — заложить буфер +1 месяц или урезать DXF-экспорт из Discovery


entityType: feedback

observations: Правило: вся информация по проекту gendesign хранится в memory-gendesign.jsonl (context="gendesign"). Информация = факты, решения, результаты анализа, обсуждения стратегии, KPI, списки рисков, протоколы валидации и т.д.

observations: НИКОГДА не создавать .md / .docx / .pdf / .pptx файлы самостоятельно — даже если кажется, что это поможет. Документы генерируются ТОЛЬКО по явному запросу («сделай md», «собери в документ», «выгрузи в docx»).

observations: При поступлении новых фактов/решений в разговоре — сразу сохраняем в память через aim_memory_store / aim_memory_add_facts в context="gendesign".

observations: Для файловой генерации по запросу: запрос срез из памяти (aim_memory_search/read_all) → сборка документа. Память = единый источник правды, файлы = производные.

observations: **Why:** пользователь хочет избежать разъехавшейся инфы между версиями доков (как случилось с v2.1/v2.2). Единый источник (граф памяти) — синхронен по определению.

observations: **How to apply:** в любом обмене по этому проекту — (1) сначала читаем gendesign-память, (2) ведём диалог/анализ, (3) сохраняем новые выводы в память, (4) файлы только если пользователь явно запросил.


entityType: infrastructure

observations: Дата настройки: 25 апреля 2026, машина anton@macOS (/Users/anton)

observations: Цель: автоматическая двусторонняя синхронизация файла графа памяти ~/.aim/memory-gendesign.jsonl с веткой main репо lekss361/-gendesign на GitHub

observations: Хард-линк: ~/.aim/memory-gendesign.jsonl и ~/source/repos/gendesign/memory/memory-gendesign.jsonl — один inode, link count = 2. Любая запись MCP-сервера видна в git status мгновенно

observations: Git auth: credential.helper=osxkeychain (глобально), токен github.com сохранён в Login Keychain под аккаунтом Light1YT — push идёт без интерактива

observations: Sync agent (push): launchd job com.gendesign.memory-sync, plist в ~/Library/LaunchAgents/com.gendesign.memory-sync.plist, скрипт ~/.aim/gendesign-memory-sync.sh. Триггер: WatchPaths на файле памяти. Дебаунс: ThrottleInterval=60с. Логика: проверка целостности хард-линка → git pull --rebase --autostash → парсинг diff и сборка content-aware commit message → git commit → git push origin main

observations: Pull agent: launchd job com.gendesign.memory-pull, plist в ~/Library/LaunchAgents/com.gendesign.memory-pull.plist, скрипт ~/.aim/gendesign-memory-pull.sh. StartInterval=120с + RunAtLoad=true. Делает git pull --rebase --autostash, лог только при реальных изменениях; чинит хард-линк если порвался

observations: Commit message format: 'Memory: <summary> (<timestamp>)'. Summary включает +ent/~ent/-ent (новая/изменённая/удалённая сущность) и +rel/-rel (связи). Парсер на python3 встроен в sync-скрипт

observations: Защита от atomic-rewrite MCP-сервера: оба скрипта проверяют stat -f %i у обоих файлов; если inode разошлись — копируют контент из репо в ~/.aim и пере-создают хард-линк

observations: Логи: ~/.aim/gendesign-sync.log (sync trigger лог), ~/.aim/gendesign-sync.launchd.log (stderr launchd для sync), ~/.aim/gendesign-pull.log (pull лог только при изменениях), ~/.aim/gendesign-pull.launchd.log (stderr launchd для pull)

observations: Управление: launchctl load/unload <plist> для включения/выключения; launchctl list | grep gendesign — статус; tail -f ~/.aim/gendesign-*.log — мониторинг

observations: Ручное вмешательство нужно только при merge-конфликте jsonl (две машины правили одну сущность одновременно) — лог покажет 'pull --rebase failed', чинится руками в репо

observations: Не реализовано: автоматический pull в момент чтения памяти Claude Desktop (он читает текущий файл, может быть отстающим до 120с от удалённой ветки); нет защиты от чужих незакоммиченных правок в memory/ перед auto-commit (autostash спасает только от своих локальных)


entityType: decision

observations: Дата решения: 25 апреля 2026

observations: Сценарий MVP-приложения: на конкретном выбранном участке пользователь выделяет (рисует) область → приложение генерирует варианты: концепции застройки (ген.планы), финансовые модели и др. — каждый вариант с оценкой/рейтингом

observations: Сужает MVP scope относительно two-in-one воронки из Project_GenDesign: Discovery MVP фокусируется на стадии 'участок известен → область выделена → концепт + финмодель + оценка', а не на полной цепочке 'инвест-критерии → Site Finder → концепт → финмодель'

observations: Связанные UX-элементы: карта (Mapbox/Leaflet) с выбором участка, инструмент рисования полигона (выделение области), кнопка 'сгенерировать варианты', список/грид вариантов с оценками, детальный view по выбранному варианту (генплан визуально + финмодель в таблице/графиках)