Урок 10.5 · Модуль 10 · Чтобы тебя находили: контент, реклама, продажи

AI в продажах — отбор заявок, повторные письма, ответы на возражения

Строитель60 минОбновлено: октябрь 2026
42 из 53 в основном курсе

Время: ~25 мин теории + 35 мин практики


Суть урока

Продажи — это отбор. Из сотни потенциальных клиентов (людей и компаний, которые проявили интерес; по-английски их называют лидами) покупает небольшая часть. Задача продавца: быстро найти тех, кто купит, и тратить время на них, а не на остальных.

Claude делает этот отбор системным: оценивает потенциальных клиентов по схеме BANT, ставит оценку готовности, пишет личные письма, готовит ответы на возражения. Менеджер приходит к разговору, уже зная, кто перед ним и что его волнует.

В уроке много кода на Python. Если не программируешь, бери из него тексты запросов: они работают и в обычном чате с Claude, достаточно вставить туда свои заметки о клиенте.

🎨 Образ: представь опытного продавца, которому перед каждым звонком коллега коротко рассказывает: «Это Иван из ООО Ромашка, они смотрят конкурентов, бюджет есть, но директор ещё не решил, главное возражение — связка с 1С». Вот что Claude делает для каждого потенциального клиента автоматически.


Ключевые концепции

  • Оценка по BANT — бюджет, полномочия, потребность и сроки (Budget, Authority, Need, Timeline) с помощью AI
  • Оценка готовности от 0 до 100 — кто готов купить прямо сейчас
  • Личные повторные письма — каждое напоминание пишется под конкретного человека
  • База ответов на возражения — Claude готовит черновик ответа на любое возражение
  • Правила продаж → AI-советник — документ с правилами продаж (по-английски sales playbook) становится советником для менеджеров
  • Apollo.io + Claude — холодные письма с личным подходом

Теория

Оценка по BANT: четыре вопроса, которые решают всё

BANT — давняя схема отбора потенциальных клиентов, и она работает до сих пор:

  • Budget (бюджет) — есть ли деньги? Сколько готовы потратить?
  • Authority (полномочия) — этот человек принимает решение или только собирает информацию?
  • Need (потребность) — есть ли настоящая потребность или «просто смотрим»?
  • Timeline (сроки) — когда планируют купить? В этом квартале или «когда-нибудь»?

Claude вытаскивает BANT из переписки: писем, чатов, заметок со звонков и встреч.

python
import anthropic
import json

client = anthropic.Anthropic()


def text_of(response) -> str:
    """Собирает текст ответа: у новых моделей перед текстом могут идти блоки «размышления»."""
    return "".join(block.text for block in response.content if block.type == "text")


def qualify_lead_bant(
    company_name: str,
    contact_name: str,
    contact_position: str,
    interaction_history: str
) -> dict:
    """Оценивает потенциального клиента по BANT на основе истории общения"""

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,  # с запасом: «размышления» модели тоже входят в этот лимит
        messages=[{
            "role": "user",
            "content": f"""Оцени потенциального клиента по схеме BANT на основе имеющихся данных.

Компания: {company_name}
Контакт: {contact_name}, {contact_position}

История общения:
{interaction_history}

Оцени каждый критерий BANT по шкале 0-3:
0 = нет информации
1 = слабый или сомнительный сигнал
2 = есть признаки
3 = чёткое подтверждение

Верни только JSON, без пояснений и без тройных обратных кавычек вокруг.
Вердикт: hot (горячий), warm (тёплый), cold (холодный) или disqualify (не наш клиент).
{{
    "bant": {{
        "budget": {{
            "score": число 0-3,
            "evidence": "цитата или факт из переписки",
            "concern": "что настораживает",
            "recommendation": "что узнать дополнительно"
        }},
        "authority": {{
            "score": число 0-3,
            "evidence": "...",
            "concern": "...",
            "recommendation": "..."
        }},
        "need": {{
            "score": число 0-3,
            "evidence": "...",
            "concern": "...",
            "recommendation": "..."
        }},
        "timeline": {{
            "score": число 0-3,
            "evidence": "...",
            "concern": "...",
            "recommendation": "..."
        }}
    }},
    "total_score": число 0-12,
    "qualification_verdict": "hot/warm/cold/disqualify",
    "recommended_next_step": "конкретное следующее действие",
    "key_questions_to_ask": ["список из 3 вопросов для следующего контакта"]
}}"""
        }]
    )

    result = json.loads(text_of(response))

    # Добавляем оценку в процентах
    result["qualification_percent"] = round(result["total_score"] / 12 * 100)

    return result


# Тест на выдуманных данных
history = """
15 апреля — первый звонок:
Артём спросил про наш продукт, сказал, что «рассматривают варианты для
автоматизации отдела». Он менеджер по развитию. Директор «пока не в теме».
Бюджет не обсуждали. «Хотели бы разобраться до конца года».

22 апреля — повторный звонок:
Артём пришёл с подробным списком требований. Сказал, что директор одобрил рассмотрение.
Упомянул, что у конкурента похожий продукт стоит $10 000 в год, им кажется дорого.
Хотят начать «не позже третьего квартала — привязано к бюджету».

28 апреля — письмо:
«Мы посмотрели демонстрацию. Нам нравится, но нужно понять, как это связать с нашей
1С. Также директор хочет встретиться лично. Можете на следующей неделе?»
"""

result = qualify_lead_bant(
    company_name="ООО Техпром",
    contact_name="Артём Власов",
    contact_position="Менеджер по развитию",
    interaction_history=history
)

print(f"Оценка BANT: {result['total_score']}/12 ({result['qualification_percent']}%)")
print(f"Статус: {result['qualification_verdict'].upper()}")
print(f"\nСледующий шаг: {result['recommended_next_step']}")
print(f"\nВопросы для встречи:")
for q in result['key_questions_to_ask']:
    print(f"  • {q}")

Оценка готовности: кто горячий прямо сейчас

BANT — это основа, но готовность к покупке показывают ещё десятки сигналов. Claude смотрит на все сразу и ставит оценку от 0 до 100.

python
def score_lead_readiness(
    contact_info: dict,
    interaction_history: str,
    product_type: str,
    avg_deal_cycle_days: int
) -> dict:
    """Общая оценка готовности потенциального клиента к покупке"""

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,
        messages=[{
            "role": "user",
            "content": f"""Оцени готовность потенциального клиента к покупке.

Информация о контакте:
{json.dumps(contact_info, ensure_ascii=False)}

Тип продукта: {product_type}
Средний срок сделки: {avg_deal_cycle_days} дней

История:
{interaction_history}

Разбери сигналы:
ПОЛОЖИТЕЛЬНЫЕ: конкретные вопросы о деталях, спрашивает про связку с другими программами и внедрение,
называет сроки, называет бюджет, просит встречу с директором, сравнивает с конкурентами,
просит коммерческое предложение или договор

ОТРИЦАТЕЛЬНЫЕ: расплывчатые ответы, «посмотрим», долгие паузы без ответа,
говорит, что «не его решение», меняет требования, просит всё дешевле

Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
{{
    "score": число 0-100,
    "stage": "awareness/consideration/decision/ready_to_buy",
    "hot_signals": ["список положительных сигналов из истории"],
    "cold_signals": ["список тревожных сигналов"],
    "estimated_close_days": число (прогноз, через сколько дней сделка),
    "confidence": "low/medium/high",
    "action": {{
        "immediate": "что сделать прямо сейчас",
        "this_week": "что сделать на этой неделе",
        "if_no_response": "что делать, если ответа нет 3 дня"
    }}
}}"""
        }]
    )

    return json.loads(text_of(response))

🎨 Образ: врач смотрит на симптомы и ставит диагноз. Продавец смотрит на сигналы и ставит оценку. Claude — диагностический помощник, который проверяет каждый пункт списка и не устаёт после 50-го клиента.

Личные повторные письма

Шаблонные письма работают плохо. «Добрый день! Мы хотели бы напомнить о нашем предложении...» обычно удаляют, не читая.

Личный подход работает. Но написать вручную 50 личных повторных писем нереально.

python
def generate_followup_email(
    contact: dict,
    last_interaction_summary: str,
    days_since_last_contact: int,
    followup_number: int,  # Первое, второе или третье повторное письмо
    product_name: str,
    your_name: str
) -> dict:
    """Пишет личное повторное письмо"""

    followup_tone = {
        1: "дружелюбный и лёгкий, добавить пользу (статья или пример из практики)",
        2: "чуть прямее, спросить, есть ли вопросы и не изменилось ли что-то",
        3: "последний, дать понять, что это последнее напоминание, но без давления"
    }

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,
        messages=[{
            "role": "user",
            "content": f"""Напиши личное повторное письмо клиенту.

ДАННЫЕ КОНТАКТА:
Имя: {contact.get('name')}
Компания: {contact.get('company')}
Должность: {contact.get('position')}
Интерес: {contact.get('main_interest')}

КОНТЕКСТ:
Последний контакт: {last_interaction_summary}
Дней без ответа: {days_since_last_contact}
Это повторное письмо номер: {followup_number} из 3
Тон: {followup_tone.get(followup_number, followup_tone[1])}

Продукт: {product_name}
От кого: {your_name}

ТРЕБОВАНИЯ:
- Не больше 3-5 предложений
- Первое предложение — конкретная отсылка к прошлому разговору (не шаблон)
- Добавь что-то полезное (наблюдение, настоящую статистику с источником, короткий настоящий пример); не выдумывай факты
- Один чёткий призыв к действию
- Никакого давления и напора
- Живой язык, не канцелярский

Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
{{
    "subject": "тема письма",
    "body": "текст письма",
    "ps": "постскриптум (по желанию, только если усиливает)",
    "value_add": "что полезного добавлено в письме"
}}"""
        }]
    )

    return json.loads(text_of(response))


# Пример (данные выдуманы)
email = generate_followup_email(
    contact={
        "name": "Артём",
        "company": "ООО Техпром",
        "position": "Менеджер по развитию",
        "main_interest": "Автоматизация отдела продаж, связка с 1С"
    },
    last_interaction_summary="Провели демонстрацию, Артёму понравилось, но он спросил про связку с 1С. Договорились, что они обсудят внутри команды.",
    days_since_last_contact=4,
    followup_number=1,
    product_name="SalesBot Pro",
    your_name="Михаил"
)

print(f"Тема: {email['subject']}")
print(f"\n{email['body']}")
if email.get('ps'):
    print(f"\nP.S. {email['ps']}")

База ответов на возражения: ответ на всё

У каждого продукта 10–15 типичных возражений. Опытный продавец знает ответ на каждое. Новичок теряется.

Claude помогает не теряться:

python
def handle_objection(
    objection: str,
    product_name: str,
    product_key_benefits: list[str],
    contact_context: str = ""
) -> str:
    """Готовит ответ на возражение в нескольких вариантах"""

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,
        messages=[{
            "role": "user",
            "content": f"""Клиент высказал возражение. Помоги с ответом.

ПРОДУКТ: {product_name}
ВЫГОДЫ: {', '.join(product_key_benefits)}
ВОЗРАЖЕНИЕ: "{objection}"
КОНТЕКСТ КЛИЕНТА: {contact_context or "Нет дополнительного контекста"}

Дай 3 варианта ответа:

1. **Прямой** — согласись с той частью возражения, которая правда, потом поверни разговор
2. **Через вопрос** — задай вопрос, который поможет клиенту самому прийти к ответу
3. **Через пример** — история настоящего клиента с похожим возражением (если такого примера нет, так и скажи, не выдумывай)

Для каждого:
- Текст ответа (2-4 предложения)
- Когда использовать

Также дай:
- Скрытая причина: что на самом деле стоит за этим возражением
- Тревожный знак: это искреннее возражение или признак, что сделки не будет?"""
        }]
    )

    return text_of(response)


# Типичные возражения и ответы
objections = [
    "Это слишком дорого для нас",
    "Нам нужно обсудить с руководством",
    "Мы уже пользуемся другим решением",
    "Давайте вернёмся к этому в следующем квартале",
    "Нам нужно подумать"
]

print("=== БАЗА ОТВЕТОВ НА ВОЗРАЖЕНИЯ ===\n")
for obj in objections[:2]:  # Показываем первые два для примера
    print(f"ВОЗРАЖЕНИЕ: {obj}")
    print("-" * 50)
    response = handle_objection(
        objection=obj,
        product_name="SalesBot Pro",
        product_key_benefits=["Экономия 5 часов в неделю", "Связка с 1С", "Внедрение за 2 дня"],
        contact_context="Клиент — компания, средний бизнес, отдел продаж 10 человек"
    )
    print(response)
    print("\n")

Правила продаж → AI-советник

Если у тебя уже есть документ с правилами продаж (кому продаём, что говорим, как отвечаем на возражения; по-английски sales playbook), Claude превращает его в советника для менеджеров.

python
def create_sales_advisor(playbook_content: str):
    """Создаёт советника по продажам на основе правил продаж"""

    def ask_advisor(question: str, deal_context: str) -> str:
        response = client.messages.create(
            model="claude-sonnet-5-5",
            max_tokens=8000,
            system=f"""Ты опытный тренер по продажам. У тебя есть правила продаж компании:

{playbook_content}

Отвечай строго по этим правилам. Если вопрос выходит за их рамки,
так и скажи. Давай конкретные фразы, которые менеджер может использовать прямо сейчас.""",
            messages=[{
                "role": "user",
                "content": f"Ситуация с клиентом: {deal_context}\n\nВопрос: {question}"
            }]
        )
        return text_of(response)

    return ask_advisor

# Пример использования (компания и правила выдуманы)
playbook = """
# Правила продаж ООО Техсервис

## Отбор клиентов
- Минимальный бюджет для работы: от $5 000
- С кем говорим: директор / коммерческий директор / IT-директор
- Тревожный знак: если не могут конкретно назвать проблему, это не наш клиент

## Ответ на возражение «Дорого»
1. Спросить: «Дорого по сравнению с чем?»
2. Перевести в окупаемость: «Сколько часов в неделю ваши люди сейчас тратят на X?»
3. Показать пример компании похожего размера

## Как довести до сделки
- Никогда не давать скидку без повода
- Вопрос с выбором: «Вам удобнее начать 1-го или 15-го?»
"""

advisor = create_sales_advisor(playbook)

# Менеджер спрашивает совета прямо перед звонком
advice = advisor(
    question="Клиент говорит, что дорого, но явно заинтересован. Что делать?",
    deal_context="Компания на 50 человек, IT-директор, рассматривают 3 месяца, бюджет «обсуждаем»"
)
print(advice)

Apollo.io + Claude: холодные письма с личным подходом

Apollo.io — сервис с базой контактов компаний и инструментами для холодных писем. Claude добавляет личный подход, которого не даст шаблон.

⚠️ Холодные письма и сбор контактов регулируются законами о рассылках и о персональных данных, в каждой стране своими: проверь правила своей страны и страны получателя. Сведения из LinkedIn собирай вручную: автоматический сбор данных (боты, расширения браузера) LinkedIn запрещает. Перед запуском перечитай урок Холодные письма и сообщения; подробнее о законах — в уроке библиотеки Регулирование AI и соответствие требованиям.

python
def personalize_cold_outreach(
    prospect_data: dict,  # Данные о человеке: компания, должность, что он публиковал (из Apollo и LinkedIn)
    your_product: str,
    your_value_prop: str
) -> dict:
    """Подстраивает холодное письмо под конкретного человека"""

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,
        messages=[{
            "role": "user",
            "content": f"""Напиши холодное письмо с личным подходом.

ИНФОРМАЦИЯ О ЧЕЛОВЕКЕ (из Apollo и LinkedIn):
{json.dumps(prospect_data, ensure_ascii=False, indent=2)}

НАШ ПРОДУКТ: {your_product}
ЧЕМ ПОЛЕЗЕН: {your_value_prop}

ПРАВИЛА:
- Первое предложение ДОЛЖНО быть о них (не о нас)
- Связать их реальный контекст (должность, компания, публикации) с нашим продуктом
- Один чёткий вопрос в конце (не призыв «купить»)
- До 100 слов

Верни только JSON, без пояснений и без тройных обратных кавычек вокруг:
{{
    "subject": "тема (до 50 символов)",
    "opening": "первое личное предложение",
    "value": "как наш продукт решает их конкретную проблему",
    "question": "вопрос, на который легко ответить",
    "personalization_source": "на чём основан личный подход"
}}"""
        }]
    )

    return json.loads(text_of(response))

Практика

Задача: собрать систему отбора потенциальных клиентов с оценкой от Claude

Что строим: скрипт, который принимает данные о потенциальном клиенте и выдаёт полную оценку и план работы с ним.

Без программирования. Вставь в чат Claude заметки о своём потенциальном клиенте и текст запроса из функции full_lead_analysis() ниже. Получишь ту же оценку и план, только без файла.

С кодом. Нужны Python, библиотека anthropic (pip install anthropic) и ключ API Anthropic в переменной окружения ANTHROPIC_API_KEY. Ключ создаётся в Claude Console (platform.claude.com) и оплачивается по токенам отдельно от подписки.

В запрос к Claude уходят имя, компания, должность и заметки, но не почта и телефон: лишних личных данных не отправляй. Если работаешь с данными настоящих клиентов, проверь, что это разрешают твоя политика конфиденциальности и законы твоей страны.

python
# lead_qualification_system.py

import anthropic
import json
from dataclasses import dataclass
from typing import Optional

client = anthropic.Anthropic()


def text_of(response) -> str:
    """Собирает текст ответа без блоков «размышления»."""
    return "".join(block.text for block in response.content if block.type == "text")


@dataclass
class Lead:
    name: str
    company: str
    position: str
    email: str
    phone: Optional[str] = None
    source: str = "входящий"
    notes: str = ""
    interaction_log: str = ""

def full_lead_analysis(lead: Lead) -> dict:
    """
    Полный разбор потенциального клиента: BANT + оценка готовности + план действий
    """

    response = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=8000,
        messages=[{
            "role": "user",
            "content": f"""Сделай полный разбор потенциального клиента для отдела продаж.

ПОТЕНЦИАЛЬНЫЙ КЛИЕНТ:
Имя: {lead.name}
Компания: {lead.company}
Должность: {lead.position}
Откуда пришёл: {lead.source}
Заметки менеджера: {lead.notes}

ИСТОРИЯ ОБЩЕНИЯ:
{lead.interaction_log or "Первый контакт, истории нет"}

Верни только JSON, без пояснений и без тройных обратных кавычек вокруг.
Вердикт: hot (горячий), warm (тёплый), cold (холодный) или disqualify (не наш клиент).
{{
    "qualification": {{
        "bant_score": число 0-12,
        "readiness_score": число 0-100,
        "verdict": "hot/warm/cold/disqualify",
        "verdict_reason": "почему такой вердикт"
    }},
    "bant_details": {{
        "budget": {{"score": 0-3, "evidence": "...", "gap": "что неизвестно"}},
        "authority": {{"score": 0-3, "evidence": "...", "gap": "..."}},
        "need": {{"score": 0-3, "evidence": "...", "gap": "..."}},
        "timeline": {{"score": 0-3, "evidence": "...", "gap": "..."}}
    }},
    "persona_analysis": {{
        "decision_role": "champion/decision_maker/influencer/blocker/user",
        "communication_style": "аналитик/отношения/скорость/стабильность",
        "main_motivation": "что движет этим человеком"
    }},
    "action_plan": {{
        "next_24h": "конкретное действие",
        "next_week": "план на неделю",
        "key_questions": ["3 вопроса для следующей встречи"],
        "risks": ["что может пойти не так"],
        "win_conditions": ["что нужно, чтобы довести эту сделку до конца"]
    }},
    "suggested_followup_timing": {{
        "if_interested": "через сколько дней писать",
        "if_silent": "через сколько дней напомнить",
        "max_attempts": число
    }}
}}"""
        }]
    )

    return json.loads(text_of(response))


def format_lead_report(lead: Lead, analysis: dict) -> str:
    """Оформляет понятный отчёт для менеджера"""

    q = analysis["qualification"]
    bant = analysis["bant_details"]
    action = analysis["action_plan"]

    verdict_emoji = {
        "hot": "🔥", "warm": "☀️", "cold": "❄️", "disqualify": "🚫"
    }.get(q["verdict"], "❓")

    report = f"""
╔══════════════════════════════════════════════╗
║  РАЗБОР КЛИЕНТА: {lead.name[:27]:<27} ║
╚══════════════════════════════════════════════╝

{verdict_emoji} СТАТУС: {q['verdict'].upper()} ({q['readiness_score']}/100)
📊 Оценка BANT: {q['bant_score']}/12
💡 Причина: {q['verdict_reason']}

BANT ПОДРОБНО:
  💰 Бюджет:     {'█' * bant['budget']['score']}{'░' * (3-bant['budget']['score'])} ({bant['budget']['score']}/3) — {bant['budget']['evidence'][:60]}
  👔 Полномочия: {'█' * bant['authority']['score']}{'░' * (3-bant['authority']['score'])} ({bant['authority']['score']}/3) — {bant['authority']['evidence'][:60]}
  🎯 Потребность:{'█' * bant['need']['score']}{'░' * (3-bant['need']['score'])} ({bant['need']['score']}/3) — {bant['need']['evidence'][:60]}
  ⏰ Сроки:      {'█' * bant['timeline']['score']}{'░' * (3-bant['timeline']['score'])} ({bant['timeline']['score']}/3) — {bant['timeline']['evidence'][:60]}

ПЛАН ДЕЙСТВИЙ:
  ⚡ Сегодня: {action['next_24h']}
  📅 На неделе: {action['next_week']}

ВОПРОСЫ ДЛЯ СЛЕДУЮЩЕЙ ВСТРЕЧИ:
"""
    for q_text in action['key_questions']:
        report += f"  • {q_text}\n"

    report += f"""
РИСКИ:
"""
    for risk in action['risks']:
        report += f"  ⚠️ {risk}\n"

    return report


# ===== ТЕСТ (человек и компания выдуманы) =====
test_lead = Lead(
    name="Сергей Новиков",
    company="Группа компаний Алмаз",
    position="Директор по операциям",
    email="[почта клиента]",
    source="входящий звонок",
    notes="Позвонил сам, сказал, что видел нас на конференции. Спрашивал про связку с другими программами.",
    interaction_log="""
    14 мая (звонок, 25 мин):
    Сергей — директор по операциям, у него 3 отдела, включая продажи (12 человек).
    Проблема: менеджеры не заполняют CRM (программу учёта клиентов), заявки теряются.
    Рассматривают решение «до конца второго квартала» — это их внутренний срок.
    Бюджет: «в рамках разумного, детали с финансовым директором». IT-директор уже в курсе.
    Попросил прислать коммерческое предложение и примеры похожих компаний.
    Конкурент: смотрели Битрикс24, «не очень понравился интерфейс».
    Следующий шаг: встреча с финансовым директором через неделю, если материалы понравятся.
    """
)

print("Разбираю клиента...")
analysis = full_lead_analysis(test_lead)
report = format_lead_report(test_lead, analysis)
print(report)

# Сохраняем в JSON для CRM
with open(f"lead_{test_lead.name.replace(' ', '_')}.json", "w", encoding="utf-8") as f:
    json.dump({
        "lead": {
            "name": test_lead.name,
            "company": test_lead.company,
            "position": test_lead.position
        },
        "analysis": analysis
    }, f, ensure_ascii=False, indent=2)

print("\n✅ Разбор сохранён в JSON")

Запускаем:

bash
python lead_qualification_system.py

Инструменты и ресурсы

  • Apollo.io — база контактов и холодные письма (тарифы и лимиты смотри на сайте)
  • HubSpot CRM — программа учёта клиентов, есть бесплатный тариф (платные тарифы смотри на сайте; см. урок библиотеки CRM на автопилоте)
  • Lemlist / Instantly — сервисы для рассылки холодных писем
  • Notion — чтобы хранить правила продаж
  • Claude API — названия моделей в коде даны на октябрь 2026; актуальные цены и версии: Актуальное сейчас

Ключевые выводы

BANT — это не бюрократия, а скорость. Быстро понять «наш клиент или нет» — это уважение и к своему времени, и к времени клиента.

Личный подход больше не роскошь, а необходимость. Людям приходит много шаблонных писем, и одно личное письмо заметно сразу.

Самое ценное в AI для продаж не скорость письма, а системность. Claude разбирает сотого клиента так же тщательно, как первого. Люди устают, AI нет.


Следующий урок

→ Практика AI-консалтинга: план на 30 дней по шагам

Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс