План реализации: Silent Meadow - CRM для недвижимости МДК¶
Контекст¶
Компания "Можайская дачная компания" (МДК) продает загородную недвижимость: - 436 участков в ДНП "Тихие Луга" (8-15 соток, от 299К до 389К ₽) - 9 типов домов (Шале, Барнхаус, Хай-тек), площадь 40-120 м², цены 2.5-10 млн ₽
Цель: Создать standalone CRM-платформу с фокусом на автоматизацию работы с площадками объявлений: 1. Автоматическое размещение на Avito и Циан 2. Интерактивная карта участков (Яндекс.Карты) 3. CRM для работы с лидами из всех каналов 4. Интеграция с Leadgen Platform для получения лидов из Telegram
Текущее состояние: - ✅ Данные об участках на t-lug.ru (Tilda) с кадастровыми номерами - ✅ Leadgen Platform (отдельный проект) - парсинг Telegram, AI-оценка лидов - ✅ 43 профессиональных фото домов - ✅ PDF каталог домов
Архитектура решения¶
Microservices подход¶
┌──────────────────────────┐
│ Leadgen Platform │ (Внешний сервис)
│ ───────────────── │
│ • Парсинг Telegram │
│ • AI-оценка лидов │
└────────┬─────────────────┘
│ REST API / Webhook
↓
┌──────────────────────────┐
│ Silent Meadow │ (НОВЫЙ проект)
│ ───────────────── │
│ • Управление участками │
│ • Управление домами │
│ • Avito интеграция │
│ • Циан интеграция │
│ • Яндекс.Карты │
│ • CRM для менеджеров │
└──────────────────────────┘
Стек технологий¶
Backend: - FastAPI - веб-фреймворк - PostgreSQL 15 - база данных - Redis 7 - кэширование - SQLAlchemy 2.0 + Alembic - ORM и миграции
Frontend: - React 18 + TypeScript 5 - TailwindCSS 3 - стилизация - Vite 5 - сборка - React Query - управление состоянием
Интеграции: - Avito API - публикация, чаты, автоответчик - Циан API - публикация объявлений - Yandex Maps API - геокодинг, карты - Telegram Bot API - CRM бот - Leadgen Platform API - лиды из Telegram - OpenAI GPT-4 - автоответчик, генерация описаний
Структура проекта¶
silent-meadow/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI app
│ │ ├── config.py # Конфигурация
│ │ │
│ │ ├── models/ # SQLAlchemy модели
│ │ │ ├── property.py # Участки
│ │ │ ├── house.py # Дома
│ │ │ ├── avito_ad.py # Объявления Avito
│ │ │ ├── cian_ad.py # Объявления Циан
│ │ │ ├── lead.py # Лиды
│ │ │ └── user.py # Пользователи
│ │ │
│ │ ├── api/ # REST API endpoints
│ │ │ ├── properties.py # CRUD участков
│ │ │ ├── houses.py # CRUD домов
│ │ │ ├── avito.py # Avito integration
│ │ │ ├── cian.py # Циан integration
│ │ │ ├── leads.py # Управление лидами
│ │ │ ├── yandex_maps.py # Карты
│ │ │ └── webhooks.py # Webhooks (Leadgen, Avito)
│ │ │
│ │ ├── services/ # Бизнес-логика
│ │ │ ├── avito_service.py
│ │ │ ├── cian_service.py
│ │ │ ├── leadgen_service.py
│ │ │ ├── telegram_bot.py # CRM бот
│ │ │ └── autoresponder.py # AI автоответчик
│ │ │
│ │ └── core/ # Ядро
│ │ ├── database.py # DB session
│ │ └── security.py # JWT auth
│ │
│ ├── alembic/ # Миграции БД
│ ├── requirements.txt
│ └── .env
│
└── frontend/
├── src/
│ ├── pages/
│ │ ├── PropertiesPage.tsx # Карта участков
│ │ ├── HousesPage.tsx # Каталог домов
│ │ ├── AvitoAdsPage.tsx # Avito объявления
│ │ ├── CianAdsPage.tsx # Циан объявления
│ │ └── LeadsPage.tsx # CRM лиды
│ │
│ ├── components/
│ │ ├── YandexMapView.tsx # Яндекс.Карта
│ │ ├── PropertyCard.tsx
│ │ └── HouseCard.tsx
│ │
│ └── lib/
│ ├── api.ts # API клиент
│ └── avito-api.ts # Avito API
│
├── package.json
└── .env.local
План реализации (2-3 недели)¶
Неделя 1: Backend основа + Модели¶
День 1-2: Инициализация проекта - Настроить FastAPI проект - Настроить PostgreSQL + Redis - Базовая аутентификация (JWT) - Alembic миграции
День 3-4: Модели данных
- Property - участки земли
- House - типовые дома
- AvitoAd - объявления Avito
- CianAd - объявления Циан
- Lead - лиды из всех источников
- User - пользователи/менеджеры
День 5: CRUD API - Properties API (создание, чтение, обновление, удаление) - Houses API - Leads API - Healthcheck endpoint
День 6-7: Интеграция Avito - OAuth2 авторизация - Создание объявлений - Получение чатов - Отправка сообщений - Webhook для новых сообщений
Неделя 2: Интеграции + Frontend¶
День 1-2: Циан API - Авторизация в Циан - Публикация объявлений - Синхронизация статусов
День 3: Яндекс.Карты - Геокодинг адресов - GeoJSON endpoint для участков - Кластеризация маркеров
День 4: Leadgen Platform интеграция - Webhook endpoint для получения лидов - REST API клиент для pulling лидов - Маппинг данных в Lead модель
День 5: Telegram CRM бот
- Создать бота через BotFather
- Уведомления о новых лидах
- Команды для менеджеров (/leads, /lead
День 6-7: Frontend инициализация - Настроить React + Vite + TypeScript - Роутинг (React Router) - Layout, навигация - API клиент (Axios + React Query)
Неделя 3: Frontend страницы + Деплой¶
День 1-2: Страница участков с картой - Yandex Maps интеграция - Список участков (фильтры, пагинация) - Интерактивная карта с маркерами - Popup с деталями участка
День 3: Страница домов - Grid layout каталога - Галерея фото - Модальное окно с планировкой - Кнопки "Создать объявление"
День 4: Управление объявлениями - Страница Avito объявлений - Страница Циан объявлений - Форма создания объявления - Публикация/снятие с публикации
День 5: CRM дашборд - Список лидов - Фильтры по источнику, статусу - Карточка лида - Назначение менеджеру
День 6-7: Деплой + тестирование - Backend → Render.com - Frontend → Vercel - Настроить env variables - E2E тестирование
Критические файлы для создания¶
Backend (15 файлов)¶
/backend/app/models/property.py- Модель участков/backend/app/models/house.py- Модель домов/backend/app/models/avito_ad.py- Avito объявления/backend/app/models/cian_ad.py- Циан объявления/backend/app/models/lead.py- Лиды/backend/app/api/properties.py- Properties CRUD/backend/app/api/avito.py- Avito API endpoints/backend/app/api/cian.py- Циан API endpoints/backend/app/api/webhooks.py- Webhooks (Leadgen, Avito)/backend/app/services/avito_service.py- Avito logic/backend/app/services/cian_service.py- Циан logic/backend/app/services/leadgen_service.py- Leadgen integration/backend/app/services/telegram_bot.py- CRM бот/backend/app/services/autoresponder.py- AI автоответчик/backend/alembic/versions/xxx_init.py- Первая миграция
Frontend (10 файлов)¶
/frontend/src/pages/PropertiesPage.tsx- Карта участков/frontend/src/pages/HousesPage.tsx- Каталог домов/frontend/src/pages/AvitoAdsPage.tsx- Управление Avito/frontend/src/pages/CianAdsPage.tsx- Управление Циан/frontend/src/pages/LeadsPage.tsx- CRM лиды/frontend/src/components/YandexMapView.tsx- Яндекс.Карта/frontend/src/components/PropertyCard.tsx- Карточка участка/frontend/src/components/HouseCard.tsx- Карточка дома/frontend/src/lib/api.ts- API клиент/frontend/src/lib/avito-api.ts- Avito API клиент
Интеграция с Leadgen Platform¶
Вариант 1: Webhook (рекомендуется)¶
Leadgen Platform отправляет webhook при новом лиде:
# /backend/app/api/webhooks.py
@router.post("/webhooks/leadgen")
async def leadgen_webhook(payload: dict, db: AsyncSession):
# Создать лид в БД
lead = Lead(
source="leadgen_platform",
source_lead_id=payload["lead_id"],
name=payload.get("name"),
telegram_username=payload.get("telegram_username"),
message=payload["message"],
score=payload.get("score"),
status="new"
)
db.add(lead)
await db.commit()
# Уведомить менеджера в Telegram
await telegram_bot.notify_new_lead(lead)
return {"status": "ok"}
Вариант 2: REST API Polling¶
Silent Meadow периодически запрашивает новые лиды:
# /backend/app/services/leadgen_service.py
async def fetch_new_leads():
response = await httpx.get(
"https://leadgen-platform.com/api/v1/leads",
params={"project_id": "mdk", "min_score": 7, "status": "new"}
)
leads = response.json()
for lead_data in leads:
# Создать лид в Silent Meadow
await create_lead_from_leadgen(lead_data)
API Ключи и Credentials¶
Avito¶
- Регистрация: https://developers.avito.ru
- Создать приложение
- Получить Client ID и Client Secret
- Redirect URI:
https://silent-meadow.com/api/v1/avito/callback
Циан¶
- Регистрация: https://www.cian.ru/account/api/
- Получить API ключ
- Документация: https://api.cian.ru/
Yandex Maps¶
- Регистрация: https://developer.tech.yandex.ru/
- Создать проект "Silent Meadow"
- Получить API ключ для JavaScript API
Telegram Bot¶
- Найти @BotFather в Telegram
/newbot→ получить токен- Добавить бота в группу менеджеров
OpenAI¶
- https://platform.openai.com/
- Создать API ключ
- Пополнить баланс ($10-20)
Метрики успеха¶
1 месяц после запуска: - ✅ 50+ объявлений на Avito и Циан - ✅ 200+ обращений через Avito/Циан - ✅ 50+ лидов из Telegram (через Leadgen Platform) - ✅ 80% типовых вопросов обработано автоответчиком - ✅ 15+ назначенных просмотров - ✅ 3-5 закрытых сделок
Автоматизация: - 0 минут на ручное размещение объявлений - 5 минут среднее время ответа на вопрос (автоответчик) - 100% новых лидов попадают в CRM автоматически
Риски и решения¶
| Риск | Вероятность | Решение |
|---|---|---|
| Блокировка аккаунта в Avito/Циан | Средняя | Использовать официальные API, соблюдать rate limits |
| Leadgen Platform недоступен | Низкая | Fallback на ручное добавление лидов, локальное кэширование |
| Некорректные координаты участков | Средняя | Ручная верификация через Яндекс.Карты |
| Низкий CTR объявлений | Высокая | A/B тестирование заголовков и описаний |
| Авито API rate limits | Средняя | Очереди на публикацию, кэширование данных |
Будущие улучшения (после MVP)¶
Краткосрочные (1-2 месяца)¶
- 📊 Аналитика: воронка продаж, конверсия по каналам
- 🔔 Email уведомления для менеджеров
- 📱 PWA версия для мобильных
- 🎨 AI-генерация уникальных описаний для каждого участка
Среднесрочные (3-6 месяцев)¶
- 🏠 Интеграция с Домклик
- 💳 Онлайн-бронирование участков с предоплатой
- 📞 Интеграция с IP-телефонией (запись звонков)
- 🤖 Виртуальный ассистент (voice bot) для первичной квалификации
Долгосрочные (6-12 месяцев)¶
- 🎥 3D-туры домов (Three.js)
- 📱 Мобильное приложение (React Native)
- 🔮 Predictive analytics: какие участки продадутся быстрее
- 🌐 Мультиязычность (English, 中文)
Оценка времени и ресурсов¶
Разработка: 2-3 недели (1 full-time разработчик)
Команда: - 1 Full-stack разработчик (FastAPI + React) - 1 Менеджер для тестирования CRM
Бюджет: - Домены + хостинг: $20/мес (Render + Vercel) - OpenAI API: $30-50/мес - Avito размещение: $500-1000/мес (зависит от кол-ва объявлений) - Циан размещение: $300-800/мес - Итого: ~$1000-2000/мес
ROI: 3-5 продаж по 300K ₽ = 900K-1.5M ₽/мес revenue
Следующий шаг¶
Начать с создания базовой структуры проекта:
# Backend
mkdir -p backend/app/{models,api,services,core}
cd backend
python -m venv venv
source venv/bin/activate
pip install fastapi uvicorn sqlalchemy alembic psycopg2-binary redis
# Frontend
npx create-vite frontend --template react-ts
cd frontend
npm install react-query axios @tanstack/react-query
Готовы начать? См. docs/setup.md для подробных инструкций по установке.