Skip to content

buff3r0verfl0w/nlp-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nlp-bot: Telegram бот для ООО "Торжество Разума"

Проект реализует кейс-задачу №3: Telegram-бот для первичного сбора требований клиента и автоматического расчета ориентировочной сметы.

Компания: ООО "Торжество Разума". Профиль: аутсорс-разработка мобильных приложений (Flutter iOS/Android), веб-приложений (React, PHP), backend-сервисов (Python FastAPI).

Что умеет бот

  • Распознает тип проекта через spaCy (ключевые слова и фразы).
  • Ведет клиента по сценарию сбора данных:
    • тип проекта,
    • размер команды разработчиков (от 3 до 8),
    • срок проекта (в месяцах),
    • ставка разработчика (1000-2000 руб/час),
    • текстовое описание задачи.
  • Считает ориентировочную смету для команды:
    • N разработчиков,
    • 1 QA (600 руб/час),
    • 1 PM (1000 руб/час).
  • Отправляет итог клиенту в чат и дублирует заявку в личные сообщения менеджеру (TELEGRAM_CHAT_ID).

Формула оценки

Используется оценка по человеко-часам за месяц:

итого = месяцы * 160 * (N_dev * rate_dev + 1 * 600 + 1 * 1000)

где:

  • 160 - условные часы на человека в месяц,
  • N_dev - число разработчиков (3..8),
  • rate_dev - ставка разработчика (1000..2000 руб/час).

Установка

poetry install

Для более точного распознавания русского текста установите модель spaCy:

poetry run python -m spacy download ru_core_news_sm

Если модель не установлена, бот использует fallback spacy.blank("ru").

Настройка .env

TELEGRAM_TOKEN=<token вашего бота>
TELEGRAM_CHAT_ID=<chat id менеджера>

Запуск

poetry run python -m nlp_bot.main

Кейс-задача №4: аналитический обзор

  1. Функциональность Реализован пошаговый Telegram-диалог с валидацией входных данных и расчетом сметы. Бот покрывает ключевой бизнес-сценарий пресейла: от сбора параметров до передачи заявки менеджеру.

  2. Точность распознавания Распознавание типа проекта построено на spaCy PhraseMatcher с доменными ключевыми словами (Flutter, React, PHP, FastAPI и пр.). Для коротких прикладных фраз точность высокая; для неоднозначных описаний зависит от полноты словаря и может расширяться.

  3. Качество ответов Ответы структурированы: клиент получает состав команды, ставки, декомпозицию по ролям и итоговую сумму. Это достаточно информативно для предварительной оценки.

  4. Интерактивность Бот поддерживает диалог в несколько шагов, использует клавиатуру Telegram, обрабатывает некорректный ввод и предлагает повторный ввод.

  5. Скорость ответа Ответ формируется мгновенно (локальные вычисления без внешних API), задержка ограничена сетевой доставкой Telegram.

  6. Удобство использования Интерфейс минималистичный и понятный: /start, последовательные вопросы, прозрачная логика расчета.

  7. Возможности расширения Можно добавить:

  • хранение заявок в БД,
  • гибкие роли команды (дизайнер, DevOps, аналитик),
  • несколько тарифных сеток,
  • экспорт КП в PDF,
  • интеграцию с CRM.
  1. Эффективность разработки Использованы готовые надежные библиотеки: python-telegram-bot, spaCy, python-dotenv. Это ускорило реализацию и упростило поддержку.

  2. Техническая реализация Язык: Python 3.13. NLP: spaCy. Транспорт: Telegram Bot API через python-telegram-bot. Конфигурация: .env.

  3. Адаптация к NLP Решение адаптировано под русский язык через spaCy и словарь ключевых фраз отраслевого домена. Подход практичный для MVP и легко улучшается за счет расширения словаря и добавления лемматизации/классификатора.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages