Разбор
ИИ пишет коммерческое предложение за 10 минут: от брифа клиента до PDF-документа
Среднее время подготовки КП в агентстве — 2–3 дня. Клиент уходит к конкуренту раньше. Python + Claude API + python-docx: 5 вопросов о клиенте, 10 минут — готовый Word-документ на 3–5 страниц.
Клиент пишет в среду: «Хотим КП на разработку мобильного приложения». Менеджер отвечает: «Сделаем к пятнице». В пятницу КП не готово — «ещё немного». В понедельник клиент уже подписал с другими.
Почему КП готовится 3 дня, хотя могло бы за 30 минут
В среднем агентстве подготовка одного КП выглядит так. Менеджер тратит час на уточнение деталей у клиента и сбор информации о его бизнесе. Потом ещё час на поиск похожих кейсов из портфолио и согласование с тимлидом что именно предлагать. Затем 40 минут пишет текст, ещё 30 минут верстает в Word или Keynote. Итого 3–3,5 часа реальной работы. Но на практике всё это растягивается на 2–3 дня, потому что каждый шаг ждёт своей очереди.
Самое обидное — 80% структуры КП одинаковы от сделки к сделке. Меняется имя клиента, его отрасль, бюджет и два-три конкретных кейса. Всё остальное — шаблон.
7 блоков, из которых состоит сильное КП
Перед тем как писать промпт и код — разберёмся со структурой. Все 7 блоков автоматизируются, но нужно понимать что в каждом и зачем.
Не «Уважаемый клиент, рады предложить…» — а конкретная боль этого клиента с его языком. Откуда берётся: из брифа. Claude формулирует одним-двумя абзацами почему именно этот человек с этой задачей пришёл к нам и что мы об этом думаем.
Не список услуг из прайса, а конкретный путь от точки А до точки Б. Что мы сделаем, в каком порядке и почему именно так. Claude строит этот раздел адаптивно — для разработки приложения один набор этапов, для SEO-продвижения другой.
Берутся из базы кейсов по нише клиента. Claude выбирает те что ближе к его задаче: e-commerce → проекты в e-commerce, B2B-сервис → похожие B2B-кейсы. Каждый кейс — 3–4 предложения: клиент, задача, что сделали, результат с цифрой.
Этапы с дедлайнами. Claude формирует реалистичный план исходя из заявленного срока и бюджета из брифа. Если срок нереалистичный — добавит об этом короткую фразу с альтернативой.
Цена с разбивкой по этапам и пояснением что за что. Не просто «от 300 000 руб.», а за что конкретно и почему столько. Для спорных сумм — сравнение с рыночным бенчмарком.
Команда, годы опыта, количество проектов, ключевые клиенты — всё что устанавливает экспертизу. Этот блок обычно одинаков, но Claude может адаптировать акцент под отрасль клиента.
Конкретный следующий шаг и почему стоит сделать его сейчас. Не «будем рады сотрудничеству», а «созвон на 30 минут в течение 3 дней — подтвердим состав команды и уточним смету».
Бриф: 5 вопросов перед запуском
Claude генерирует хорошо тогда, когда получает конкретные данные. Пустой промпт даёт пустое КП. Вот минимальный бриф который менеджер заполняет перед запуском скрипта:
- Кто клиент — название компании, отрасль, чем занимается (2–3 предложения)
- Какая задача — что нужно сделать, чего хотят достичь, какие есть ограничения
- Бюджет — диапазон или конкретная сумма, которую клиент обозначил
- Сроки — к какой дате нужен результат
- Откуда пришёл — как узнал о нас, что смотрел, какие возражения уже звучали
Пять вопросов, 10 минут разговора с клиентом — и у скрипта есть всё что нужно.
Код: Python + Claude API + python-docx
Ставим зависимости:
pip install anthropic python-docxОсновной скрипт:
import anthropic
from docx import Document
from docx.shared import Pt, RGBColor, Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH
from datetime import datetime
CLAUDE_API_KEY = "YOUR_CLAUDE_KEY"
# База кейсов по нишам — дополняй своими
CASES_DB = {
"e-commerce": [
"Wildberries-селлер спортивного питания: разработали мобильное приложение для программы лояльности. 40 000 скачиваний за 3 месяца, повторные покупки выросли на 22%.",
"Интернет-магазин электроники: приложение для отслеживания заказов с push-уведомлениями. Снизили нагрузку на поддержку на 35%, NPS вырос с 6.2 до 7.8.",
],
"b2b": [
"SaaS-компания в HR-tech: корпоративное мобильное приложение для онбординга новых сотрудников. Сократили срок адаптации с 30 до 18 дней.",
"Логистическая компания: приложение для водителей с трекингом маршрутов и электронными накладными. Экономия 15 часов в неделю на административную работу.",
],
"default": [
"Сеть кофеен: приложение с программой лояльности и предзаказом. 12 000 активных пользователей через 2 месяца после запуска.",
"Медицинская клиника: запись к врачу и телемедицина. Конверсия онлайн-записей выросла с 18% до 34%.",
]
}
def get_cases(industry: str) -> str:
"""Подбираем кейсы по нише клиента."""
key = "default"
for k in CASES_DB:
if k in industry.lower():
key = k
break
cases = CASES_DB[key]
return "\n".join(f"- {c}" for c in cases)
def generate_kp_text(brief: dict) -> dict:
"""Генерируем текст всех блоков КП через Claude."""
client = anthropic.Anthropic(api_key=CLAUDE_API_KEY)
cases = get_cases(brief.get("industry", ""))
prompt = f"""Ты опытный менеджер по продажам в digital-агентстве. Напиши коммерческое предложение.
ДАННЫЕ КЛИЕНТА:
- Компания: {brief['company']}
- Отрасль: {brief['industry']}
- Задача: {brief['task']}
- Бюджет: {brief['budget']}
- Срок: {brief['deadline']}
- Контекст: {brief['context']}
НАШИ КЕЙСЫ ПО ТЕМЕ:
{cases}
Напиши КП строго в JSON-формате с полями:
- intro: персонализированное вступление (2 абзаца), покажи что понимаем боль клиента
- approach: описание нашего подхода к задаче (3-4 абзаца с этапами)
- cases: 2 релевантных кейса из списка выше, каждый 3-4 предложения
- timeline: структура работ с этапами и сроками (список из 4-5 пунктов)
- pricing: ценообразование с разбивкой и обоснованием (2-3 абзаца)
- trust: блок доверия — команда, опыт, цифры (1 абзац)
- cta: призыв к действию с конкретным следующим шагом (2-3 предложения)
Пиши живым деловым языком, без канцелярита. Используй конкретику из данных клиента."""
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2048,
messages=[{"role": "user", "content": prompt}]
)
import json
text = message.content[0].text
# Убираем markdown-блок если Claude обернул в ```json
if "```json" in text:
text = text.split("```json")[1].split("```")[0].strip()
elif "```" in text:
text = text.split("```")[1].split("```")[0].strip()
return json.loads(text)
def build_word_doc(brief: dict, sections: dict) -> str:
"""Собираем Word-документ из сгенерированных блоков."""
doc = Document()
# Стили
style = doc.styles['Normal']
style.font.name = 'Calibri'
style.font.size = Pt(11)
# Заголовок КП
title = doc.add_heading(
f'Коммерческое предложение для {brief["company"]}',
level=0
)
title.alignment = WD_ALIGN_PARAGRAPH.CENTER
date_para = doc.add_paragraph(
datetime.now().strftime('%d.%m.%Y')
)
date_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
date_para.runs[0].font.color.rgb = RGBColor(0x88, 0x99, 0xAA)
doc.add_paragraph()
def add_section(heading: str, text: str):
h = doc.add_heading(heading, level=1)
h.runs[0].font.color.rgb = RGBColor(0x5B, 0x21, 0xB6)
if isinstance(text, list):
for item in text:
doc.add_paragraph(item, style='List Bullet')
else:
doc.add_paragraph(text)
doc.add_paragraph()
add_section('Понимаем вашу задачу', sections['intro'])
add_section('Наш подход', sections['approach'])
add_section('Кейсы по вашей нише', sections['cases'])
add_section('Этапы и сроки', sections['timeline'])
add_section('Стоимость', sections['pricing'])
add_section('О нас', sections['trust'])
add_section('Следующий шаг', sections['cta'])
filename = f"KP_{brief['company'].replace(' ', '_')}_{datetime.now().strftime('%Y%m%d')}.docx"
doc.save(filename)
return filename
def run(brief: dict):
print(f"Генерирую КП для {brief['company']}...")
sections = generate_kp_text(brief)
filename = build_word_doc(brief, sections)
print(f"Готово: {filename}")
return filename
# Пример запуска
if __name__ == "__main__":
brief = {
"company": "ФинТех Решения",
"industry": "b2b финансовые сервисы",
"task": "Разработка мобильного приложения для корпоративных клиентов банка — управление счетами, платёжные поручения, аналитика расходов",
"budget": "2–3 млн рублей",
"deadline": "5 месяцев, запуск к октябрю 2026",
"context": "Пришли по рекомендации от партнёра, уже смотрели двух подрядчиков, основное возражение — боятся что не уложимся в срок"
}
run(brief)Несколько деталей которые стоит знать до запуска.
Claude возвращает JSON, но иногда оборачивает его в markdown-блок. Скрипт это обрабатывает — срезает обёртку перед json.loads(). Если всё равно получаете ошибку парсинга — добавьте print(text) перед парсингом, сразу увидите что именно вернул Claude.
Стоимость одного вызова — 3–8 рублей при max_tokens=2048. Для 30 КП в месяц это 90–240 рублей. Против 90 менеджерских часов.
Пример: первые два блока реального КП
Вот как выглядит результат для клиента из тестового брифа выше — компания ФинТех Решения, задача разработка корпоративного мобильного приложения.
Корпоративные клиенты банка сегодня управляют деньгами через интерфейсы, которые не менялись лет пять. Платёжное поручение — это сценарий на 12 шагов, аналитика расходов — это Excel-выгрузка которую кто-то должен разобрать вручную. Вы видите эту проблему изнутри, и поэтому пришли за мобильным приложением которое это изменит.
Мы понимаем два ваших главных риска. Первый — срок. Пять месяцев до октября это реалистично при чётком управлении беклогом и никаких «добавим ещё вот это» в середине пути. Второй — интеграция с банковским ядром: это всегда непредсказуемо, и любой подрядчик который говорит иначе — лукавит. Наш подход к обоим рискам — в следующем разделе.
Разработку делим на три волны по семь недель каждая, с рабочим прототипом в конце каждой. Первая волна — авторизация, управление счетами, базовые платёжные операции. К концу недели 7 у вас на руках приложение которое можно показать внутреннему заказчику, не ждать финала.
Интеграцию с банковским API начинаем параллельно с первой волной, через тестовый контур. Это стандартная проблема: банковские API документированы плохо, неожиданности всегда есть. Мы закладываем под это отдельный буфер в 2 недели — он входит в пять месяцев, не добавляется сверху.
Команда проекта: два iOS/Android-разработчика, бэкенд-разработчик с опытом в финтехе, продуктовый дизайнер и технический менеджер на постоянной связи. Standup каждый день в 10:00, еженедельный отчёт о прогрессе — вам без запроса.
Два блока из семи — и уже видно что КП говорит с клиентом на его языке: упоминает 12-шаговое платёжное поручение, называет оба его возражения которые он озвучил в брифе, предлагает конкретное решение риска с банковским API. Без брифа это всё выглядело бы как стандартный корпоративный текст.
Есть вопрос по теме?
Разберу вашу ситуацию и предложу конкретный шаг
Как персонализировать дальше
Базовый скрипт работает. Три способа сделать его лучше.
База кейсов с тегами. Сейчас кейсы разбиты по отраслям — e-commerce, b2b, default. Добавьте теги по типу работ: мобильные приложения, SEO, контекстная реклама, разработка сайтов. Тогда Claude будет выбирать кейсы и по нише клиента, и по типу задачи одновременно. Два словаря вместо одного, get_cases() ищет пересечение.
История переговоров. Если CRM хранит историю звонков или переписки с клиентом — передайте её в бриф отдельным полем history. Claude использует реальные возражения и детали разговора, а не синтезирует их из одной строки «контекст».
Вариативность цен. Сделайте три варианта КП — базовый, стандарт, премиум — с разным составом работ и ценой. Claude генерирует три секции pricing, скрипт собирает три документа. Клиент выбирает сам — конверсия растёт, когда есть выбор.
Что агентство сэкономило
Агентство из кейса занималось digital-маркетингом для B2B-сегмента. 30 КП в месяц — это не рекорд, нормальный темп для небольшой команды из 6–8 человек. До автоматизации каждый менеджер тратил на КП около 30% рабочего времени. После — около 5%, остальное ушло на работу с клиентами которые уже ответили «да».
Время отклика на запрос КП сократилось с «в конце недели» до «сегодня к вечеру». Конверсия из КП в сделку выросла с 18% до 24% — по их оценке, во многом из-за скорости и персонализации.
Сколько часов ты теряешь на КП прямо сейчас
Быстрый расчёт
3 вопроса — посчитаем экономию
Сравнение: ручной процесс vs автоматизация
| Параметр | Ручной процесс | Claude API + python-docx |
|---|---|---|
| Время от запроса до КП | 2–3 дня | 10–20 минут |
| Менеджерских часов на КП | 2–3 часа | 20–30 минут (правки) |
| Стоимость одного КП | 1 500–3 000 ₽ (ФОТ) | 3–8 ₽ (API) + правки |
| Персонализация под клиента | зависит от менеджера | всегда по брифу |
| Масштабирование | нужен новый человек | один скрипт, любой объём |
| Качество при усталости менеджера | падает к пятнице | стабильное |
Главное что меняется — не скорость. Скорость это следствие. Меняется то, что менеджер перестаёт быть пишущей машинкой и начинает заниматься тем за что его реально держат: отношениями с клиентом, пониманием задачи, переговорами. КП становится поводом для звонка, а не результатом трёхдневного ожидания.
Скрипт из статьи работает. Стоимость запуска — вечер времени и 8 рублей за первое тестовое КП. Если в вашем агентстве больше 10 КП в месяц — это уже окупается на второй неделе.
Есть вопрос по теме?
Разберу вашу ситуацию и предложу конкретный шаг
Похожие кейсы
- Квалификация лидов в AmoCRM через ИИ
- WhatsApp-ассистент для продаж
- Транскрибация звонков и разбор в CRM
- FAQ-бот для сайта без галлюцинаций
Источники
AI-агенты · Персональная карта
4 часа потратил — не работает?
Покажу где ты пошёл не туда и как сделать правильно за 2 недели
Получить разбор бесплатно →AI-агенты · 10 мест
Ты работаешь до полуночи — AI-агент будет работать вместо тебя
Покажу какой агент закроет твою главную операционную боль
Узнать свой маршрут →Есть вопрос по теме?
Разберу вашу ситуацию и предложу конкретный шаг
Источники
Читайте также
Часто задаваемые вопросы
- Сколько времени занимает генерация КП через Claude API?
- От заполнения брифа до готового Word-файла — 8–12 минут. Из них 6–9 минут занимает заполнение брифа (5 вопросов), остальное — генерация текста Claude и сборка документа python-docx. Сам вызов Claude Sonnet занимает 20–40 секунд для КП на 3–4 страницы.
- Какие инструменты нужны для автоматизации КП?
- Python 3.9+, библиотека anthropic (Claude API), python-docx для сборки Word-файла. Опционально — reportlab для PDF. Всё ставится одной командой pip install anthropic python-docx. Токен Claude API — на console.anthropic.com, стоимость одного КП — 3–8 рублей.
- Что включает автоматически сгенерированное КП?
- 7 блоков: персонализированное вступление с болью клиента, описание нашего подхода к решению, 2–3 кейса из базы по нише клиента, структура работ с этапами, ценообразование с обоснованием, блок доверия (команда, опыт), призыв к действию с дедлайном. Каждый блок адаптируется под данные из брифа.
- Насколько нужны навыки программирования для внедрения?
- Базовый уровень Python — достаточно. Нужно уметь запустить скрипт и установить pip-зависимости. Весь код — в статье, под копирование и запуск. Если Python совсем незнаком — схему можно реализовать в n8n через HTTP-запрос к Claude API без написания кода.
- Можно ли встроить кейсы своего агентства в генерацию?
- Да, и это один из главных способов персонализации. В скрипте есть словарь CASES_DB с кейсами по нишам (e-commerce, недвижимость, B2B). Claude выбирает 2–3 релевантных кейса по отрасли клиента из брифа и встраивает их в секцию КП. Добавить новый кейс — одна строка в словаре.
- Сколько КП в месяц обрабатывает реальное агентство через этот скрипт?
- В описанном кейсе агентство с 30 КП в месяц сэкономило 90 менеджерских часов. До автоматизации каждое КП занимало 3 часа (сбор данных + написание + вёрстка). После — 20–30 минут на правки и согласование с клиентом. Итого 90 часов экономии в месяц при том же качестве.
Канал «Лёха Маркетолог»
Практика без воды: кейсы, инсайты, разборы. 1–2 поста в неделю.
Пока без комментариев. Будьте первым.