Перейти к содержанию

План реализации: 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 , /assign)

День 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 файлов)

  1. /backend/app/models/property.py - Модель участков
  2. /backend/app/models/house.py - Модель домов
  3. /backend/app/models/avito_ad.py - Avito объявления
  4. /backend/app/models/cian_ad.py - Циан объявления
  5. /backend/app/models/lead.py - Лиды
  6. /backend/app/api/properties.py - Properties CRUD
  7. /backend/app/api/avito.py - Avito API endpoints
  8. /backend/app/api/cian.py - Циан API endpoints
  9. /backend/app/api/webhooks.py - Webhooks (Leadgen, Avito)
  10. /backend/app/services/avito_service.py - Avito logic
  11. /backend/app/services/cian_service.py - Циан logic
  12. /backend/app/services/leadgen_service.py - Leadgen integration
  13. /backend/app/services/telegram_bot.py - CRM бот
  14. /backend/app/services/autoresponder.py - AI автоответчик
  15. /backend/alembic/versions/xxx_init.py - Первая миграция

Frontend (10 файлов)

  1. /frontend/src/pages/PropertiesPage.tsx - Карта участков
  2. /frontend/src/pages/HousesPage.tsx - Каталог домов
  3. /frontend/src/pages/AvitoAdsPage.tsx - Управление Avito
  4. /frontend/src/pages/CianAdsPage.tsx - Управление Циан
  5. /frontend/src/pages/LeadsPage.tsx - CRM лиды
  6. /frontend/src/components/YandexMapView.tsx - Яндекс.Карта
  7. /frontend/src/components/PropertyCard.tsx - Карточка участка
  8. /frontend/src/components/HouseCard.tsx - Карточка дома
  9. /frontend/src/lib/api.ts - API клиент
  10. /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

  1. Регистрация: https://developers.avito.ru
  2. Создать приложение
  3. Получить Client ID и Client Secret
  4. Redirect URI: https://silent-meadow.com/api/v1/avito/callback

Циан

  1. Регистрация: https://www.cian.ru/account/api/
  2. Получить API ключ
  3. Документация: https://api.cian.ru/

Yandex Maps

  1. Регистрация: https://developer.tech.yandex.ru/
  2. Создать проект "Silent Meadow"
  3. Получить API ключ для JavaScript API

Telegram Bot

  1. Найти @BotFather в Telegram
  2. /newbot → получить токен
  3. Добавить бота в группу менеджеров

OpenAI

  1. https://platform.openai.com/
  2. Создать API ключ
  3. Пополнить баланс ($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 для подробных инструкций по установке.