enrich-and-pitch

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Enrich-and-Pitch — B2B Outbound Research & Generation (Казахстан)

Enrich-and-Pitch — B2B outbound调研与内容生成服务(哈萨克斯坦)

End-to-end пайплайн для персонализированного outbound: от названия компании до готовых opening сообщений под конкретных ЛПР с публично подтверждаемым контекстом.
Архитектура отчёта — две вкладки в одном HTML:
  • Аналитика — всё что мы знаем. Порядок: Главное → Профиль → Hiring → ЛПР (раскрывающиеся карточки с вложенным контекстом) → Шаг 2 (market) → Шаг 3 (LinkedIn) → Шаг 4 (social) → Источники в конце. Черновика письма на Аналитике НЕТ — это только Коммуникация.
  • Коммуникация — как мы пишем. Ровно одна
    .comm-card
    для главного primary ЛПР (top-1, см. ниже как выбрать). Внутри неё
    .message-versions
    с 4 полными версиями письма (v1 база, v2 +рынок, v3 +LinkedIn, v4 +соцсети). В v2/v3/v4 добавки относительно предыдущей версии обёрнуты в
    <span class="added-v2/v3/v4">…</span>
    — это даёт визуальный diff. Никаких отдельных hook-блоков сверху. Письма для других ЛПР НЕ генерируем автоматически — сейл пишет им по тому же шаблону, если нужно.
ЯЗЫК — простой русский, без жаргона:
  • ✅ «Заход», «С чего зайти», «Что для него важно», «Где совпадаем» · ❌ «Hook», «Persona-fit», «outreach», «buyer»
  • ✅ «Главный», «Второстепенный» · ❌ «Primary», «Secondary», «gatekeeper»
  • ✅ «Текущая / Предыдущая версия», «База (бесплатно)», «+ Рынок», «+ LinkedIn», «+ Соцсети» · ❌ «Current / Previous», «Free baseline», «+ Market», «+ Social»
  • ✅ «Свежие события», «Активность по найму», «Кто принимает решение» · ❌ «Recent events», «Hiring intelligence», «ЛПР»
  • ✅ «Бесплатные источники», «Платные источники», «через Apify» · ❌ «free стек», «paid», «paid stack»
  • ✅ «AI-агенты», «инструменты для отдела продаж», «оценка лидов» · ❌ «agentic AI», «sales tools», «lead scoring»
  • Прямые цитаты людей оставляем на оригинальном языке (если их LinkedIn на английском) + переводим в скобках для контекста
Цель: продавец-неангличанин читает отчёт без напряга. Жаргон скрывает выводы.
КЛЮЧЕВОЙ ПРИНЦИП Analytics tab — выводы, не данные: Сейл за 10 секунд должен понять что ВАЖНО, а не получить data dump. Каждая секция отвечает на вопрос «что я с этим делаю».
ЧтоКак делать ✅Как НЕ делать ❌
Каждая секция1 заголовок + 2-4 строки выводовFact-grid с 8-10 rows
Длинные данные<details> collapsed по умолчаниюВсё всегда видно
Профиль компании3 строки (сектор + recent + клиенты)Полный grid юр.данных на виду
Hiring3-5 буллетов выводов + collapsed список вакансийРаскладка по 13 позициям
Market3 буллета напряжений + collapsed конкурентыSector definition + 5+ конкурентов + 7 dynamics
LinkedIn1 ключевая цитата + 3-4 факта + collapsed full8 fact-rows headline/about/edu/awards/skills
Полные досьеВнутри collapsed
<details>
Всегда видимый раздел
ИсточникиВнутри collapsed
<details>
Длинный список на виду
Принцип: «что брать в outreach» > «что мы нашли».
4-шаговая ladder эволюции письма:
ШагЧто добавляемFree/PaidВерсия письма
1Company + ЛПР + Hiring (free)Freev1 (полное письмо — база)
2Market context (free, через Claude)Freev2 (v1 + market-добавки в
added-v2
)
3LinkedIn deep dive (Apify)Paidv3 (v2 + LinkedIn-добавки в
added-v3
)
4Social signals FB/IG/TikTok (Apify)Paidv4 (v3 + social-добавки в
added-v4
)
Каждый шаг → regenerate полное письмо → новая версия в
.message-versions
на вкладке Коммуникация. Latest становится
.current
, предыдущие —
.previous
(dimmed). Добавленные с предыдущего шага фрагменты обёрнуты в
<span class="added-v{N}">…</span>
чтобы был визуально виден diff. Hook больше не отдельная сущность — он часть письма.
端到端个性化outbound流程:从企业名称到为特定ЛПR生成带有公开可验证背景的开篇消息。
报告架构——单个HTML文件包含两个标签页:
  • 分析页 — 我们掌握的所有信息。顺序:核心内容 → 企业概况 → 招聘动态 → ЛПР(带内嵌背景的可展开卡片) → 第二步(市场) → 第三步(LinkedIn) → 第四步(社交平台) → 末尾的数据源。分析页不包含邮件草稿 — 仅展示沟通内容。
  • 沟通页 — 邮件撰写规范。仅为核心主ЛПР(top-1,选择规则见下文)生成一个
    .comm-card
    。卡片内包含
    .message-versions
    ,提供4个完整邮件版本(v1基础版、v2 +市场信息、v3 +LinkedIn信息、v4 +社交平台信息)。v2/v3/v4中相对上一版本新增的内容会被包裹在
    <span class="added-v2/v3/v4">…</span>
    标签中,便于直观对比差异。顶部无单独的hook模块。不会自动为其他ЛПР生成邮件——销售可根据同一模板自行撰写(如有需要)。
语言规范——使用简洁俄语,无行业黑话:
  • ✅ «切入点»、«从何处切入»、«他关注什么»、«我们的契合点» · ❌ «Hook»、«Persona-fit»、«outreach»、«buyer»
  • ✅ «核心»、«次要» · ❌ «Primary»、«Secondary»、«gatekeeper»
  • ✅ «当前版本/上一版本»、«基础版(免费)»、«+市场信息»、«+ LinkedIn信息»、«+社交平台信息» · ❌ «Current / Previous»、«Free baseline»、«+ Market»、«+ Social»
  • ✅ «近期动态»、«招聘活动»、«决策人» · ❌ «Recent events»、«Hiring intelligence»、«ЛПР»
  • ✅ «免费数据源»、«付费数据源»、«通过Apify» · ❌ «free стек»、«paid»、«paid stack»
  • ✅ «AI-агенты»、«销售部门工具»、«线索评分» · ❌ «agentic AI»、«sales tools»、«lead scoring»
  • 人物直接引语保留原文(若LinkedIn内容为英文)+ 括号内添加俄语翻译以便理解上下文
目标:让非英语母语的销售能够轻松阅读报告,避免黑话掩盖核心结论。
分析页核心原则——输出结论,而非原始数据: 销售应在10秒内了解关键信息,而非接收数据堆砌。每个板块需回答“我该如何利用这些信息”。
内容正确做法 ✅错误做法 ❌
每个板块1个标题 + 2-4行结论包含8-10行的事实表格
长文本数据默认折叠的
<details>
标签
始终展示全部内容
企业概况3行内容(行业 + 近期动态 + 客户)展示完整的法人信息表格
招聘动态3-5条结论要点 + 折叠的职位列表罗列13个职位详情
市场信息3条行业痛点要点 + 折叠的竞争对手列表行业定义 + 5+竞争对手 +7条市场动态
LinkedIn信息1条核心引语 +3-4个事实 + 折叠的完整内容8行事实列表(标题/简介/教育/奖项/技能)
完整档案放在折叠的
<details>
标签内
始终展示的独立板块
数据源放在折叠的
<details>
标签内
展示冗长的可见列表
原则:“可用于outreach的信息” > “我们找到的信息”。
邮件版本迭代的4步阶梯:
步骤新增内容免费/付费邮件版本
1企业信息 + ЛПР + 招聘动态(免费)免费v1(完整基础版邮件)
2市场背景信息(免费,通过Claude获取)免费v2(v1 + 新增的市场内容,包裹在
added-v2
标签中)
3LinkedIn深度调研(Apify)付费v3(v2 + 新增的LinkedIn内容,包裹在
added-v3
标签中)
4FB/IG/TikTok社交信号(Apify)付费v4(v3 + 新增的社交平台内容,包裹在
added-v4
标签中)
每一步都会重新生成完整邮件 → 在沟通页的
.message-versions
中新增版本。最新版本标记为
.current
,旧版本标记为
.previous
(灰度显示)。相对上一版本新增的片段会被包裹在
<span class="added-v{N}">…</span>
标签中,便于直观对比差异。Hook不再是独立模块 — 它是邮件的一部分。

Когда использовать

使用场景

Пользователь просит:
  • Исследовать компанию и подготовить outbound коммуникацию
  • Сделать «контекст-360» по компании / ЛПР
  • Найти decision-makers в компании и написать первое сообщение
  • Подготовиться к холодному звонку / письму в KZ B2B
当用户提出以下需求时:
  • 调研企业并准备outreach沟通内容
  • 为企业/ЛПР生成“360度背景信息”
  • 找到企业决策人并撰写首封邮件
  • 为哈萨克斯坦B2B冷呼叫/邮件做准备

Входные данные

输入数据

Обязательно:
  1. Компания — название (например, «Globalink Logistics») или БИН (например, 110842011929)
  2. Наш оффер — 1-2 предложения о том, что продаём (например: «AI-инструменты для отдела продаж: лидген, скоринг входящих, аналитика звонков»)
Опционально: 3. Target роль — Buyer / Champion / User / Decision Maker если известно 4. Сигналы для использования — recent hiring, funding, expansion, события
Если каких-то обязательных входов не хватает — спроси у пользователя ДО старта.
必填项:
  1. 企业 — 名称(例如:«Globalink Logistics»)或БИН(例如:110842011929)
  2. 我方产品/服务 — 1-2条销售主张(例如:«AI销售部门工具:线索生成、 inbound线索评分、通话分析»)
可选项: 3. 目标角色 — 若已知,可指定Buyer / Champion / User / Decision Maker 4. 需关注的信号 — 近期招聘、融资、扩张、事件
若缺少必填项,需在启动前向用户确认补充。

Workflow — 4 стейджа

工作流程——4个阶段

Stage 1: Company Discovery

阶段1:企业信息挖掘

Цель: факт-чекнутый профиль компании.

目标: 经过事实核查的企业概况。

Stage 1.0 — ПОДТВЕРЖДЕНИЕ КОМПАНИИ (обязательный gate перед research)

阶段1.0 — 企业确认(调研前的必经环节)

Прежде чем тратить время на full research — найди кандидата и подтверди с пользователем. Это занимает 10 сек и страхует от прогона на не той компании (особенно частая ситуация с холдингами, где у одного бренда 3-5 юр.лиц).
Алгоритм:
  1. Первичный поиск через WebSearch:
    • "<input>" Казахстан БИН
    • site:adata.kz "<input>"
      — это даёт самый надёжный hit
  2. Найди 1-3 кандидатов (юр.лиц с похожим названием). Например, для «Globalink» в Казахстане их 3:
    • ТОО «Глобалинк» Транспортэйшн энд Лоджистикс Ворлдвайд (БИН 991140002859, операционная)
    • Представительство Globalink Logistics Group Limited (БИН 110842011929)
    • Documentolog Global Limited (для других кейсов)
  3. Покажи кандидатов пользователю в чате компактно:
    Нашёл кандидатов для «<input>»:
    
    1. ТОО «Глобалинк» Транспортэйшн энд Лоджистикс Ворлдвайд
       БИН 991140002859 · Алматы · 501-1000 человек · директор Балаев Р.О.
       Действующая, 26 лет на рынке, грузовой автотранспорт
    
    2. Представительство Globalink Logistics Group Limited
       БИН 110842011929 · Алматы · 16-20 человек · директор Мансур Сохаил
       Действующее представительство, 14 лет
    
    Какая нужна — 1, 2, обе, или другая? (если другая — уточни название/БИН)
  4. Ожидай реакции:
    • «1» / «вторая» / «обе» → продолжай research на выбранной(ых)
    • «другая, вот ссылка/БИН/полное название» → новый поиск с уточнением
    • «не та / не нашли» → попроси у пользователя более конкретный идентификатор (БИН, сайт, полное юр. название)
Если найден ТОЛЬКО ОДИН кандидат: Всё равно подтверди, но коротко:
Нашёл: ТОО Documentolog (БИН 070840007503, Астана, 41-50 человек, директор Аманбекова М.А., разработка ПО). Это та компания? (да/нет)
После подтверждения — переходи к stage 1.1 (full research).

在投入时间进行全面调研前,先找到候选企业并与用户确认。此步骤仅需10秒,可避免针对错误企业开展工作(尤其常见于集团企业,同一品牌下可能有3-5个法人实体)。
流程:
  1. 初步搜索 通过WebSearch:
    • "<输入内容>" Казахстан БИН
    • site:adata.kz "<输入内容>"
      — 此方式最可靠
  2. 找到1-3个候选企业(名称相似的法人实体)。例如,哈萨克斯坦的«Globalink»有3个候选:
    • ТОО «Глобалинк» Транспортэйшн энд Лоджистикс Ворлдвайд(БИН 991140002859,运营主体)
    • Представительство Globalink Logistics Group Limited(БИН 110842011929)
    • Documentolog Global Limited(其他场景)
  3. 在聊天中向用户简洁展示候选企业:
    为«<输入内容>»找到以下候选企业:
    
    1. ТОО «Глобалинк» Транспортэйшн энд Лоджистикс Ворлдвайд
       БИН 991140002859 · 阿拉木图 · 501-1000人 · 总经理 Балаев Р.О.
       运营中,成立26年,主营公路货运
    
    2. Представительство Globalink Logistics Group Limited
       БИН 110842011929 · 阿拉木图 · 16-20人 · 总经理 Мансур Сохаил
       运营中,成立14年
    
    需要调研哪一家?(1、2、两家都调研,或其他?若为其他,请补充名称/БИН)
  4. 等待用户回复:
    • «1» / «第二家» / «两家都调研» → 针对选中的企业继续调研
    • «其他,这是链接/БИН/完整名称» → 根据补充信息重新搜索
    • «不是这家/没找到» → 请求用户提供更具体的标识(БИН、官网、完整法人名称)
若仅找到1个候选企业: 仍需确认,但可简化表述:
找到:ТОО Documentolog(БИН 070840007503,阿斯塔纳,41-50人,总经理 Аманбекова М.А.,主营软件开发)。是否为目标企业?(是/否)
确认后 — 进入阶段1.1(全面调研)。

Stage 1.1 — Full research (только после подтверждения)

阶段1.1 — 全面调研(仅在确认后执行)

Параллельно выполни:
  1. WebSearch — найти БИН и идентификаторы:
    • "<company>" Казахстан БИН
    • site:adata.kz "<company>"
      → получи URL вида
      pk.adata.kz/counterparty/main/company/{БИН}/basic-info
    • Если на вход дали БИН — пропусти этот шаг
  2. WebFetch adata.kz на
    https://pk.adata.kz/counterparty/main/company/{БИН}/basic-info
    :
    • Полное юридическое название
    • БИН (верификация)
    • Статус (активна / ликвидирована / приостановлена)
    • Директор (имя)
    • Дата регистрации
    • Адрес
    • ОКЭД (вид деятельности)
    • Размер (по числу сотрудников)
    • Регистрирующий орган
  3. WebFetch официального сайта (если SSL валидный):
    • <domain>/about
      или
      <domain>/o-kompanii
    • <domain>/team
      или
      <domain>/komanda
      или
      <domain>/leadership
    • <domain>/news
      или
      <domain>/press
    • Если WebFetch падает на SSL → fallback:
      WebSearch site:<domain> "<keyword>"
  4. WebSearch hh.kz для employer_id:
    • site:hh.kz "<company>" вакансии
      → найди employer URL вида
      hh.kz/employer/{id}
  5. WebFetch ПОЛНЫЙ список вакансий (не employer-страницу):
    • URL pattern:
      https://almaty.hh.kz/search/vacancy?employer_id={id}&items_on_page=50
    • Если редирект — следуй на almaty.hh.kz или astana.hh.kz
    • Извлеки список ВСЕХ открытых вакансий: title, локация, диапазон зарплаты, требуемый опыт
  6. Активность по найму — КОМПАКТНО. 3 блока, никакой воды:
    A. Stats — 1 строка:
    N вакансий · Астана X / Алматы Y · ЗП мин–макс ₸ · ссылка на источник
    B. Кого нанимают (3-5 буллетов): группировка функций + ⭐ для критичных позиций
    • Группируй похожие роли в одну строку («Customer Success — 4 роли»)
    • Senior leadership / новые функции → отдельный буллет с ⭐
    • НЕ перечисляй все 13 вакансий по одной — только агрегированные блоки
    C. Где нет людей (2-3 буллета): значимые ОТСУТСТВИЯ
    • «0 AI/ML вакансий — внутренняя команда укомплектована или outsource»
    • «0 системных Sales — продажи ещё не масштабируются»
    • «0 Marketing/Brand — bottom-of-funnel не приоритет»
    • Каждое отсутствие → одно интерпретирующее предложение
    D. Что это значит — 1-2 предложения, добавляет интерпретацию (не дублирует bullets):
    • Какой моментум: formation новой функции / scaling / replacement?
    • Как связан с recent events?
    • Пример GOOD: «Скейлят CS на существующей базе + формируют новую международную партнёрскую функцию после интеграции с Контур. Sales infrastructure ещё не построена — окно для встраивания тулсов ДО legacy.»
    • Пример BAD: «Активно нанимают, открыты 13 вакансий» (без интерпретации)
    • Пример BAD: длинное эссе на абзац (слишком много)
    Правила гигиены:
    • Весь блок Hiring Intelligence помещается на 1/3 экрана без скролла
    • Stats — 1 строка
    • Кого нанимают — 3-5 буллетов
    • Где нет людей — 2-3 буллета
    • Что это значит — 1-2 короткие фразы
  7. WebSearch news:
    • "<company>" 2026 OR 2025 новости
    • "<company>" интервью OR пресс-релиз
    • "<company>" "назначен" OR "возглавил" OR "новый руководитель"
  8. (Опционально, paid) Если
    $GOSZAKUP_TOKEN
    доступен:
    • REST:
      GET https://ows.goszakup.gov.kz/v3/subject/biin/{BIN}
      + Bearer header → детали + сотрудники
    • REST:
      GET https://ows.goszakup.gov.kz/v3/contract?supplier_biin={BIN}
      → выигранные госконтракты
    • REST:
      GET https://ows.goszakup.gov.kz/v3/rnu/{BIN}
      → проверка по реестру недобросовестных
Output Stage 1: структурированный профиль компании + hiring intelligence (1 главный инсайт + категоризация ролей + ⭐ звёздные позиции). Каждый факт с источником.

并行执行以下操作:
  1. WebSearch — 查找БИН及其他标识:
    • "<企业名称>" Казахстан БИН
    • site:adata.kz "<企业名称>"
      → 获取类似
      pk.adata.kz/counterparty/main/company/{БИН}/basic-info
      的URL
    • 若输入为БИН,跳过此步骤
  2. WebFetch adata.kz 页面
    https://pk.adata.kz/counterparty/main/company/{БИН}/basic-info
    • 完整法人名称
    • БИН(验证)
    • 状态(运营中/已注销/已暂停)
    • 总经理姓名
    • 注册日期
    • 地址
    • ОКЭД(经营范围)
    • 规模(员工数量)
    • 注册机构
  3. WebFetch官方网站(若SSL有效):
    • <域名>/about
      <域名>/o-kompanii
    • <域名>/team
      <域名>/komanda
      <域名>/leadership
    • <域名>/news
      <域名>/press
    • 若WebFetch因SSL失败 → 备选方案:
      WebSearch site:<域名> "<关键词>"
  4. WebSearch hh.kz 获取employer_id:
    • site:hh.kz "<企业名称>" вакансии
      → 找到类似
      hh.kz/employer/{id}
      的雇主URL
  5. WebFetch完整职位列表(非雇主页面):
    • URL格式:
      https://almaty.hh.kz/search/vacancy?employer_id={id}&items_on_page=50
    • 若重定向,跳转至almaty.hh.kz或astana.hh.kz
    • 提取所有公开职位:标题、地点、薪资范围、所需经验
  6. 招聘活动信息——简洁呈现,分3块,无冗余:
    A. 统计数据——1行:
    N个职位 · 阿斯塔纳X个 / 阿拉木图Y个 · 薪资范围 ₸最低–₸最高 · 数据源链接
    B. 招聘方向(3-5条要点): 按职能分组 + 关键职位标记⭐
    • 类似职位合并为一行(例如:«客户成功——4个职位»)
    • 高级管理岗位/新职能 → 单独标记⭐
    • 不要逐一罗列13个职位 → 仅展示分组后的模块
    C. 招聘空白(2-3条要点): 重要的职位缺失
    • «0个AI/ML职位——内部团队已配齐或外包»
    • «0个销售体系岗位——销售尚未规模化»
    • «0个营销/品牌岗位——漏斗底部转化非优先项»
    • 每个空白点需附带解读
    D. 解读——1-2句话,添加分析(不重复要点):
    • 企业处于什么阶段:新职能搭建/规模化/人员替换?
    • 与近期事件有何关联?
    • 正面示例: «在现有基础上扩大客户成功团队规模 + 与Контур整合后搭建新的国际合作职能。销售基础设施尚未建立——这是在遗留系统上线前嵌入工具的窗口期。»
    • 负面示例: «正在积极招聘,开放13个职位»(无解读)
    • 负面示例: 冗长的段落(内容过多)
    规范要求:
    • 整个招聘信息板块无需滚动即可占1/3屏幕
    • 统计数据——1行
    • 招聘方向——3-5条要点
    • 招聘空白——2-3条要点
    • 解读——1-2短句
  7. WebSearch新闻动态:
    • "<企业名称>" 2026 OR 2025 новости
    • "<企业名称>" интервью OR пресс-релиз
    • "<企业名称>" "назначен" OR "возглавил" OR "новый руководитель"
  8. (可选,付费)
    $GOSZAKUP_TOKEN
    可用:
    • REST请求:
      GET https://ows.goszakup.gov.kz/v3/subject/biin/{BIN}
      + Bearer header → 详细信息 + 员工数据
    • REST请求:
      GET https://ows.goszakup.gov.kz/v3/contract?supplier_biin={BIN}
      → 中标政府采购合同
    • REST请求:
      GET https://ows.goszakup.gov.kz/v3/rnu/{BIN}
      → 失信名单核查
阶段1输出: 结构化企业概况 + 招聘情报(1个核心洞察 + 职位分类 + ⭐关键职位)。每个事实均附带数据源。

Stage 2: ЛПР Identification

阶段2:ЛПР识别

Цель: 1-3 конкретных человека, принимающих решения по нашему офферу.
  1. Reasoning step (без вызова инструментов). На основе:
    • Профиля компании из Stage 1
    • Описания нашего оффера
    Определи роли ЛПР, релевантных нашему предложению:
    • Для AI sales tools: Commercial Director / Head of Sales / Chief Sales Officer / CMO / Founder
    • Для ERP/IT: CIO / CFO / COO / CTO / Founder
    • Для логистики: Operations Director / Supply Chain Lead / CEO
    • Подумай: кто Buyer (бюджет), Champion (продвинет внутри), User (будет использовать)
  2. Найди имена для каждой роли:
    • Директор уже известен из adata.kz (Stage 1)
    • С официального сайта /team — другие топы (если есть)
    • WebSearch
      "<company>" CEO OR директор OR президент
    • WebSearch
      "<company>" "<specific role>"
      (например, "коммерческий директор")
    • WebSearch
      site:linkedin.com/in/ "<company>"
      → LinkedIn snippets с именами и должностями
    • WebSearch
      "<company>" "назначен" OR "возглавил"
      → recent appointments
  3. (Опционально, paid) Если
    $APIFY_API_KEY
    доступен:
    • Вызов Apify actor
      LinkedIn Company People Search
      → полный список сотрудников с должностями
Output Stage 2: 1-3 человека с именем, ролью, обоснованием «почему этот человек ЛПР для нашего оффера».
Failure modes:
  • Если найден 0 ЛПР → стоп. Зарепортить: «недостаточно публичной информации о руководстве. Рекомендую: outreach на общий info@ или сначала установить контакт через LinkedIn по company name».
  • Если найдено >3 → выбери топ-3 наиболее релевантных нашему офферу.

目标: 找到1-3位与我方产品/服务相关的决策人。
  1. 推理步骤(无需调用工具)。基于:
    • 阶段1获取的企业概况
    • 我方产品/服务描述
    确定与我方产品相关的ЛПР角色
    • 针对AI销售工具:商务总监/销售主管/首席销售官/首席营销官/创始人
    • 针对ERP/IT:首席信息官/首席财务官/首席运营官/首席技术官/创始人
    • 针对物流:运营总监/供应链负责人/首席执行官
    • 思考:谁是Buyer(预算负责人)、Champion(内部推动者)、User(实际使用者)
  2. 查找每个角色对应的姓名:
    • 总经理姓名已从adata.kz获取(阶段1)
    • 从官网/team页面获取其他高管信息(如有)
    • WebSearch
      "<企业名称>" CEO OR директор OR президент
    • WebSearch
      "<企业名称>" "<特定角色>"
      (例如:"коммерческий директор")
    • WebSearch
      site:linkedin.com/in/ "<企业名称>"
      → 提取LinkedIn片段中的姓名和职位
    • WebSearch
      "<企业名称>" "назначен" OR "возглавил"
      → 近期任命信息
  3. (可选,付费)
    $APIFY_API_KEY
    可用:
    • 调用Apify actor
      LinkedIn Company People Search
      → 获取完整的员工职位列表
阶段2输出: 1-3位人员的姓名、职位、以及“为何该人员是我方产品的ЛПР”的理由。
失败场景:
  • 若未找到任何ЛПР → 停止流程。报告:"缺少公开的管理层信息。建议:发送邮件至通用邮箱info@,或先通过LinkedIn建立企业层面的联系。"
  • 若找到超过3位 → 选择与我方产品最相关的前3位。

Stage 3: Personal Deep Dive

阶段3:个性化深度调研

Цель: context-360 на каждого выявленного ЛПР.
Для каждого ЛПР параллельно:
  1. WebSearch
    "<name>" "<company>"
    → подтверждение роли + public mentions
  2. WebSearch
    "<name>" интервью OR подкаст OR выступление
    → public statements
  3. WebSearch
    "<name>" site:forbes.kz OR site:kursiv.kz OR site:kapital.kz OR site:inbusiness.kz
    → KZ business медиа
  4. WebSearch
    "<name>" site:linkedin.com/in/
    → LinkedIn snippets из Google
  5. WebSearch
    "<name>" telegram канал OR t.me/
    → проверь наличие TG-канала
    • Если канал найден → вызови telegram-channel-parser на канал → последние 20 постов
  6. WebSearch
    "<name>" награды OR премии
    → recognition signals
  7. (Опционально, paid) Если
    $APIFY_API_KEY
    : full LinkedIn profile + last 20 posts через Apify
Для каждого ЛПР собери:
  • Background: история, predecessor roles, education если public
  • Recent activity (последние 3-6 мес): посты, выступления, интервью, события
  • Themes: о чём консистентно говорит (например, «scaling Eurasian corridor», «digital transformation», «AI in operations»)
  • Specific recent events: конкретные интервью / награды / mentions
Output Stage 3: context dossier на каждого ЛПР с указанием источников.

目标: 为每位已识别的ЛПР生成360度背景信息。
为每位ЛПР并行执行以下操作:
  1. WebSearch
    "<姓名>" "<企业名称>"
    → 确认职位 + 公开提及信息
  2. WebSearch
    "<姓名>" интервью OR подкаст OR выступление
    → 公开声明
  3. WebSearch
    "<姓名>" site:forbes.kz OR site:kursiv.kz OR site:kapital.kz OR site:inbusiness.kz
    → 哈萨克斯坦商业媒体报道
  4. WebSearch
    "<姓名>" site:linkedin.com/in/
    → 从Google提取LinkedIn片段
  5. WebSearch
    "<姓名>" telegram канал OR t.me/
    → 检查是否有Telegram频道
    • 若找到频道 → 调用telegram-channel-parser获取频道最近20条帖子
  6. WebSearch
    "<姓名>" награды OR премии
    → 荣誉信息
  7. (可选,付费)
    $APIFY_API_KEY
    可用:通过Apify获取完整LinkedIn资料 + 最近20条帖子
为每位ЛПР收集:
  • 背景信息:职业经历、过往职位、公开的教育背景
  • 近期活动(过去3-6个月):帖子、演讲、访谈、事件
  • 核心主题:持续关注的领域(例如:«欧亚走廊规模化»、«数字化转型»、«运营中的AI应用»)
  • 具体近期事件:访谈/奖项/提及等具体信息
阶段3输出: 每位ЛПР的背景档案,附带数据源。

⭐ Правила для черновика сообщения (КРИТИЧНО для KZ B2B)

⭐ 邮件草稿规则(哈萨克斯坦B2B场景至关重要)

Сообщение — это не пересказ research, это снайперский выстрел в pain ЛПР с peer-уважением. Правила выработаны итерациями на реальных B2B-кейсах в KZ:
邮件并非调研内容的复述,而是精准击中ЛПР痛点并体现同行尊重的狙击式沟通。以下规则基于哈萨克斯坦真实B2B场景迭代而成:

Объём и структура

篇幅与结构

ПараметрЗначение
Слов120-160
Абзацев2-3 (target: 3)
SPSV checklistВсе 5 элементов обязательны, но складываются в 3 параграфа
СтруктураПараграф 1 = Контекст · Параграф 2 = Предложение · Параграф 3 = Действие
参数要求
字数120-160词
段落2-3段(目标:3段)
SPSV checklist5个要素全部必备,但整合为3段
结构第1段 = 背景 · 第2段 = 产品主张 · 第3段 = 行动号召

Hook (первый параграф)

Hook(第一段)

  • Короткий KZ-warmup в 1 фразу (5-10 слов) перед диагнозом: «Слежу за X давно», «Внимательно наблюдаю», «Меня заинтересовала траектория Y». KZ-культура уважает признание контекста перед основной мыслью.
  • Переход к диагнозу через тире / «и сейчас» / «и обратил внимание» — плавно из warmup в напряжение
  • 1 предложение с контрастом из их данных сразу после warmup
  • Сильные signal-числа из research — pain-метрики (маржа, конверсия) обязательны если есть
  • Сильные формулировки показывают экспертизу: «редкое сочетание сигналов», «выходит на первый план раньше производства»
  • НЕ длинный warmup на абзац: не «хотел поделиться наблюдением. Накануне я посмотрел релиз...» — это уже церемония, перебор
  • НЕ fake-льстивый: не «вы крутые», не «уважаю всё что вы делаете» — это flattery, а не уважение
  • НЕ accusatory: не «масштабирование убытка», не «вы делаете не то». Insight без осуждения.
Пример хорошего открытия (Радчук, Bayan Sulu):
«Андрей Сергеевич, добрый день. Слежу за "Баян Сулу" давно — и сейчас у вас редкое сочетание сигналов: валовая маржа за 9 мес 2025 минус 13.2%, при этом мощность к концу 2026 растёт на +13 тыс тонн...»
5 слов KZ-warmup → тире → сразу контраст из их P&L → strong frame.
  • 1句5-10词的哈萨克斯坦式暖场后再切入核心:«关注X已久»、«密切关注»、«Y的发展轨迹引起我的兴趣»。哈萨克斯坦文化重视在核心观点前先认可背景。
  • 通过破折号/«而现在»/«我注意到» 从暖场自然过渡到痛点
  • ✅ 暖场后立即1句基于对方数据的对比表述
  • ✅ 加入调研获取的关键数据信号 — 若有痛点指标(利润率、转化率)则必须包含
  • ✅ 使用专业表述体现专业性:«罕见的信号组合»、«早于生产环节成为核心关注点»
  • 不要冗长的暖场段落:不要«想分享一个观察结果。昨天我看到发布...» — 过于繁琐
  • 不要虚假奉承:不要«你们很棒»、«我尊重你们所做的一切» — 这是奉承,而非尊重
  • 不要指责语气:不要«亏损扩大»、«你们做错了»。洞察需不带指责。
优秀开篇示例(Радчук, Bayan Sulu):
«Андрей Сергеевич,您好。关注“Баян Сулу”已久 — 而现在你们出现了罕见的信号组合:2025年前9个月毛利率下降13.2%,但到2026年底产能将增长1.3万吨...»
5词暖场 → 破折号 → 直接引用对方损益表的对比 → 专业框架。

Body (второй параграф)

正文(第二段)

  • Что мы делаем (1 предложение) + конкретная ценность с числами (1 предложение)
  • Параллель с их собственной экспертизой если есть в research («тот же подход, что у вас в X, только повёрнутый в Y»)
  • Числа конкретные и проверяемые из их P&L или industry-бенчмарков
  • 我方业务介绍(1句) + 带数据的具体价值(1句)
  • 若调研中发现对方的专业领域,可建立关联(«与你们在X领域的做法一致,只是转向Y方向»)
  • 使用对方损益表或行业基准中的具体可验证数据

CTA (третий параграф)

CTA(第三段)

  • KZ-уважение: «при возможности», «на ваше усмотрение», «если будет удобно»
  • 2 дня недели на выбор, не агрессивный «давайте в среду»
  • Не «вам было бы интересно» (риторика отсеется)
  • 体现哈萨克斯坦式尊重:«若方便»、«请您决定»、«如有时间»
  • 提供2个可选日期,不要强硬表述«周三见面»
  • 不要使用«您是否感兴趣»这类套话(会被过滤)

Цифры

数据使用

  • 2-4 ключевые в письме (не россыпь)
  • В Hook — 1-2 контрастных (pain + opportunity)
  • В Body — 1 ценность (bench + база)
  • ❌ НЕ кладите 8 цифр в одно письмо — это slide, не sms
  • 2-4个关键数据(不要堆砌)
  • Hook部分 — 1-2个对比数据(痛点+机遇)
  • 正文部分 — 1个价值数据(基准+基础)
  • ❌ 不要在邮件中放入8个数据 — 这是幻灯片,不是短信

Запретный жаргон (НЕ использовать)

禁用黑话(不得使用)

  • AI-pipeline, SFA, sell-out, контекст-360, FMCG-бенчмарк, канальная видимость, sales-process
  • KPI, ROI, customer journey, value proposition, pain points (в значении «боли»)
  • Английские термины без перевода если есть нормальный русский
  • AI-pipeline、SFA、sell-out、контекст-360、FMCG-бенчмарк、канальная видимость、sales-process
  • KPI、ROI、customer journey、value proposition、pain points(表示“痛点”时)
  • 有合适俄语替代的英文术语

KZ-формулы уважения (обязательны)

哈萨克斯坦式尊重规范(必须遵守)

  • Полное имя-отчество в обращении и в подписи
  • На «вы» (не «ты»)
  • «Накануне я посмотрел...» / «Я обратил внимание...» (subject + verb, не «увидел»)
  • «При возможности», «на ваше усмотрение», «если будет удобно» — в CTA
  • «С уважением, [полное имя]» в подписи
  • 称呼和签名使用完整姓名+父称
  • 使用正式的“您”而非“你”
  • 使用«我最近关注到...» / «我注意到...»(主语+动词,而非«看到»)
  • CTA中使用«若方便»、«请您决定»、«如有时间»
  • 签名使用«此致,[完整姓名]»

Не выдумывай

不要编造内容

Если по какому-то блоку SPSV (особенно «Проблема») нет данных в research — лучше пропустить блок, чем добавить generic фразу. Принцип: каждая фраза должна быть подкреплена находкой из Stages 1-4.
若SPSV某模块(尤其“问题”模块)无调研数据支撑 — 最好跳过该模块,而非添加通用表述。原则:每句话必须基于阶段1-4的调研结果。

Replace, не add

替换而非新增

На v→v+1 (после нового шага research) — заменяем generic-фразы на specific, объём НЕ растёт. Если v3 > 170 слов — режем generic, не добавляем новое.

从v版本到v+1版本(新增调研步骤后) — 将通用表述替换为具体内容,篇幅不增加。若v3超过170词 — 删除通用内容,不新增信息。

Stage 4: Synthesis — заходы и черновики сообщений

阶段4:整合——切入点与邮件草稿

Делаем два артефакта:
  1. Заход (hook) — короткое insight-предложение «с чего начать диалог», главная единица персонализации
  2. Черновик сообщения — собран по структуре «анатомия» (см. ниже), включает заход + value prop + CTA
Оба эволюционируют с каждым шагом research. Чем больше слоёв data — тем выше качество по 5 измерениям.

生成两个成果:
  1. 切入点(hook) — 简短的洞察式表述“从何处开启对话”,是个性化的核心单元
  2. 邮件草稿 — 按照“结构框架”(见下文)整合切入点+价值主张+CTA
两者均随调研步骤逐步迭代。数据层越多,5维度质量越高。

📐 Framework качества — что делает заход и сообщение лучше

📐 质量框架——如何提升切入点与邮件质量

5 измерений, по которым растёт качество при каждом новом слое:
#ИзмерениеЧто значитКак растёт v1→v3
1КонкретикаПривязка к этой компании / человеку, не templateкомпания → +рынок → +персона
2Свежесть сигналаRecency reference: на что мы ссылаемсявакансия (дни-недели) → рынок (мес) → LinkedIn-пост (часы-дни)
3Их язык vs нашИспользуем их собственные слова/фрейминг0% → их сектор-термины → прямая цитата
4ДоказательностьПолучатель может проверить, что мы готовилисьвакансия проверяема → +источники → +цитата (неоспоримо)
5Peer-feelЗвучит как коллега пишет, или как cold-salesхолодное → знаем рынок → знаем тебя лично
Это substantive-измерения. По ним можно сравнить любые две версии и сказать, какая сильнее.

5个维度,每新增一层数据,质量都会提升:
#维度含义v1→v3的提升路径
1具体性绑定到目标企业/个人,而非模板企业信息 → +市场信息 → +个人信息
2信号时效性参考的信息时效性:我们引用的内容职位信息(数天-数周) → 市场信息(数月) → LinkedIn帖子(数小时-数天)
3对方语言 vs 我方语言使用对方的措辞/框架0% → 行业术语 → 直接引语
4可验证性收件人可核实我们做了准备工作可验证的职位信息 → +数据源 → +引语(无可辩驳)
5同行感听起来像同行沟通,而非冰冷销售冰冷销售 → 了解市场 → 了解个人
这些是实质性维度。可通过对比任意两个版本判断哪个质量更高。

✏️ Анатомия хорошего сообщения — 4 элемента, каждое 1 фраза

✏️ 优质邮件结构——4个要素,各1句

ЭлементСодержание
Personal contextКонкретное событие / факт из их публичной активности
Why nowСвязь с нашим продуктом и моментом
Specific valueЧто именно решаем под их контекст (не «у нас классный продукт»)
Low-friction CTA15-20 минут, конкретный день, не «вам было бы интересно»
Правила гигиены:
  • 3-5 предложений максимум
  • Прямой тон, без лести, без buzzwords
  • НЕТ слов: «надеюсь, у вас всё хорошо», «коротко о нас», «уделите 5 минут», «думаю, вам будет интересно»
  • Specific, не generic: если можно заменить название компании и смысл не сломается — слишком общее

要素内容
个性化背景对方公开活动中的具体事件/事实
为何是现在与我方产品及当前时机的关联
具体价值针对对方背景的具体解决方案(而非«我们的产品很棒»)
低门槛CTA15-20分钟,具体日期,不要«您是否感兴趣»
规范要求:
  • 最多3-5句话
  • 语气直接,无奉承,无流行词
  • 禁止使用:«祝您一切顺利»、«简单介绍我们»、«占用您5分钟»、«我认为您会感兴趣»
  • 具体而非通用:若替换企业名称后含义不变 → 过于笼统

🎨 Highlight-разметка в HTML-отчёте

🎨 HTML报告高亮标记

В полных письмах на вкладке Коммуникация подсвечиваем что было добавлено на каждом шаге:
  • <span class="added-v2">синий</span>
    — добавлено после Шага 2 (Рынок)
  • <span class="added-v3">зелёный</span>
    — добавлено после Шага 3 (LinkedIn)
  • <span class="added-v4">оранжевый</span>
    — добавится после Шага 4 (Соцсети)
Это даёт визуальный diff: пользователь видит, какие именно куски текста появились благодаря какому слою research.
ВАЖНО: эти span-обёртки применяются ТОЛЬКО внутри
.message-version
блоков (вкладка Коммуникация). На вкладке Аналитика — в person-cards, в Шаге 2, в раскрытом контексте ЛПР — НИКАКИХ
added-v*
span'ов не должно быть. Если возникает соблазн подсветить «добавление» на Аналитике (например, что market context добавил что-то к «С чего зайти») — НЕ делай этого. CSS для
added-v*
scope'нут на
.message-version
, и подсветка вне его не сработает; но и span'ы туда не вставляй — это смешивает уровни.
В framework-блоке Communication tab — легенда с этими цветами.

沟通页的完整邮件中,高亮显示每一步新增的内容:
  • <span class="added-v2">蓝色</span>
    — 阶段2(市场)后新增
  • <span class="added-v3">绿色</span>
    — 阶段3(LinkedIn)后新增
  • <span class="added-v4">橙色</span>
    — 阶段4(社交平台)后新增
便于直观对比:用户可看到哪些文本内容来自哪一层调研。
重要提示: 这些span标签仅适用于
.message-version
模块(沟通页)。分析页的person-cards、阶段2、ЛПР展开背景中不得使用
added-v*
标签。若想在分析页高亮“新增内容”(例如市场背景为切入点新增了什么) — 不要这么做。
added-v*
的CSS仅作用于
.message-version
,分析页的高亮不会生效;且不要在分析页插入这些标签 — 会混淆层级。
沟通页的框架模块中包含这些颜色的图例。

Stage 4a — Person-First Action Summary (обязательное)

阶段4a — 以个人为核心的行动摘要(必填)

Цель: для каждого PRIMARY ЛПР собрать «карточку действий для сейла» — что нужно знать за 10 секунд.
Что включает person-card:
  1. В приоритете сейчас (2-4 буллета) — что у этого ЛПР на тарелке прямо сейчас:
    • Recent moves (последние 3-6 мес) с датами / именами / источниками
    • Что лично говорит / постит / выступает
    • На что он публично потратил время, деньги, внимание
    • НЕ обобщения: «занимается AI» = плохо. «Запустил D8N.ai в 2025, инвестировал $100K в MOST Fund в Q4» = хорошо.
  2. С чего зайти (1 событие + опорная фраза) — конкретный opening:
    • ОДНО событие/факт (свежее, верифицируемое)
    • Опорная фраза которая привязывает событие к диалогу
    • Источник для этого события (чтобы сейл мог проверить)
  3. Стык с нашим оффером (1-2 фразы) — где их фокус пересекает наш продукт:
    • Обязательно. Без этого карточка не имеет ценности для сейла.
    • Не «у нас классный продукт». А «они делают X — наш Y усиливает X»
Приоритизация ЛПР для карточек:
Per-tier hierarchy для ВЫБОРА кого включать в person-cards:
TierКто этоВключать в Главное?
PrimaryBuyer / Champion / Decision Maker по нашему офферу✅ Полная карточка
SecondaryGatekeeper / co-decision (юрист / финансист)❌ Только в «Идентифицированные ЛПР» list. Без person-card.
Правила гигиены person-cards (вкладка Аналитика → Главное):
  • 1-3 карточки максимум, только primary ЛПР
  • Если только 1 primary найден — 1 карточка. Не заполняй искусственно.
  • Если 0 primary — стоп. Сообщи: «не нашёл persona-level контекста для personalized outreach, рекомендую company-level подход».
Выбор ГЛАВНОГО ЛПР для COMM_CARDS (вкладка Коммуникация):
Если primary ЛПР больше одного — выбираем ровно одного для генерации полного письма. Критерии в порядке убывания приоритета:
  1. Уровень в иерархии: CEO/Owner/Founder > C-level (CFO, CMO, CRO, COO, CTO) > VP > Head of > Director > Manager. Выше = главнее.
  2. Final budget authority по нашему офферу: для AI-инструментов отдела продаж — Head of Sales / CRO / коммерческий директор; для серверов — IT-директор / CIO; для маркетинговых сервисов — CMO. Если top-1 по иерархии не имеет authority в нашей категории, а #2 имеет — берём #2.
  3. Свежесть signals: при равных iерархии и authority — берём того, у кого больше recent public активности (новости, посты, выступления) за 30 дней.
  4. Если совсем равны: берём первого по алфавиту фамилии (детерминированно).
В Executive Summary остаются 1-3 person-cards — все primary ЛПР с контекстом для сейла. Но кнопка «Перейти к письму →» (
data-target="#comm-<slug>"
) активна только у главного ЛПР. У остальных кнопка либо отсутствует, либо отображается как disabled с подписью «Письмо генерируем только для главного — для этого ЛПР используй шаблон главного как основу».
Хороший пример (Documentolog → Канафин):
В приоритете сейчас:
• Cross-border расширение через Контур (фев 2026)
• Запуск D8N.ai в продакшен + укомплектование AI Research dept
• Формирование международной партнёрской функции (открыта senior позиция)

С чего зайти:
Открытая вакансия руководителя международных партнёрских продаж —
formation moment коммерческой функции после Контур. Конкретное публичное событие, можно сослаться напрямую.

Стык с нашим оффером:
Канафин уже строит вертикальный AI (D8N.ai) и инвестирует в B2B AI
(MOST Fund). Наш стек — «D8N.ai для коммерческих команд». Категория,
которую он сам признаёт ценной.
Плохой пример (без personalization):
В приоритете сейчас:
• Развивает компанию
• Расширяется
• Внедряет AI

С чего зайти:
Поговорить про AI

Стык с нашим оффером:
У нас есть AI-решение для продаж.
目标: 为每位核心ЛПР生成“销售行动卡片” — 10秒内了解关键信息。
行动卡片包含:
  1. 当前重点(2-4条要点) — 该ЛПР当前关注的事项
    • 近期动态(过去3-6个月),带日期/姓名/数据源
    • 个人公开表述/发帖/演讲内容
    • 公开投入时间、资金、关注的事项
    • 不要笼统表述:«从事AI工作» = 差。«2025年推出D8N.ai,向MOST Fund投资10万美元(第四季度)» = 好。
  2. 切入点(1个事件+引导语) — 具体的开篇方式:
    • 1个事件/事实(时效性强、可验证)
    • 将事件与对话关联的引导语
    • 事件的数据源(便于销售核实)
  3. 与我方产品的契合点(1-2句话) — 对方关注点与我方产品的交集:
    • 必填项。无此内容,卡片对销售无价值。
    • 不要«我们的产品很棒»。要«他们正在做X — 我方Y可强化X»
ЛПР卡片优先级:
按层级选择纳入行动卡片的ЛПР:
层级人员类型是否纳入核心内容?
Primary我方产品的Buyer / Champion / Decision Maker✅ 完整卡片
SecondaryGatekeeper / 共同决策人(律师/财务)❌ 仅列入«已识别ЛПР»列表,无行动卡片
分析页行动卡片规范:
  • 最多1-3张卡片,仅包含Primary ЛПР
  • 若仅找到1位Primary ЛПР — 1张卡片。不要刻意填充。
  • 若未找到Primary ЛПР — 停止流程。告知:«未找到适合个性化outreach的个人背景信息,建议采用企业层面的沟通方式»。
沟通页核心ЛПР选择规则:
若Primary ЛПR超过1位 — 仅选择1位生成完整邮件。优先级从高到低:
  1. 层级高低: CEO/所有者/创始人 > C级高管(CFO、CMO、CRO、COO、CTO) > VP > Head of > Director > Manager。层级越高越优先。
  2. 我方产品的最终预算决策权: 针对AI销售工具 — 销售主管/CRO/商务总监;针对服务器 — IT总监/CIO;针对营销服务 — CMO。若层级最高者无该领域决策权,而第2位有 — 选择第2位。
  3. 信号时效性: 层级和决策权相同时 — 选择过去30天公开活动(新闻、帖子、演讲)更多的人员。
  4. 完全相同时: 按姓氏字母顺序选择(确定性规则)。
执行摘要中保留1-3张行动卡片 — 所有Primary ЛПР的销售背景信息。但«跳转至邮件 →»按钮(
data-target="#comm-<slug>"
)仅对核心ЛПР激活。其他ЛПР的按钮要么隐藏,要么显示为禁用状态,附带提示«仅为核心ЛПР生成邮件 — 此ЛПР可参考核心邮件模板撰写»。
优秀示例(Documentolog → Канафин):
当前重点:
• 通过Контур拓展跨境业务(2026年2月)
• 推出D8N.ai并组建AI研究部门
• 搭建国际合作职能(开放高级职位)

切入点:
国际合作销售主管的开放职位 —
与Контур整合后商务职能的搭建节点。具体公开事件,可直接引用。

与我方产品的契合点:
Канафин已搭建垂直AI产品(D8N.ai)并投资B2B AI(MOST Fund)。我方技术栈是«面向商务团队的D8N.ai»,属于他认可的高价值领域。
糟糕示例(无个性化):
当前重点:
• 发展企业
• 拓展业务
• 实施AI

切入点:
聊聊AI

与我方产品的契合点:
我们有AI销售解决方案。

Stage 5: HTML Report Generation & Auto-Open

阶段5:HTML报告生成与自动打开

Цель: красивый, копируемый HTML-отчёт, автоматически открывается в браузере.
  1. Подготовь данные для подстановки в шаблон (все собранные на Stage 1-4 факты + сообщения).
  2. Прочитай шаблон:
    Read: .claude/skills/enrich-and-pitch/templates/report.html
    В конце шаблона есть HTML-комментарий с описанием всех placeholder'ов и структур повторяющихся блоков — следуй им строго.
  3. Сгенерируй заполненный HTML:
    • Header / meta:
      {{COMPANY_NAME}}
      ,
      {{BIN}}
      ,
      {{TIMESTAMP}}
      (формат «20 мая 2026, 14:30»),
      {{STACK_TAG}}
      ,
      {{STACK}}
      ,
      {{RUNTIME}}
    • {{PERSON_CARDS}}
      ⭐ — секция «Главное»: 1-3 person-action карточки из Stage 4a (только PRIMARY ЛПР). Action-link
      href="#lpr-<slug>"
      ведёт к раскрывающейся карточке ЛПР ниже; кнопка
      data-target="#comm-<slug>"
      переключает на вкладку Коммуникация и скроллит к нужному сообщению.
    • {{COMPANY_FACTS_COMPACT}}
      +
      {{COMPANY_FACTS_LEGAL}}
      — компания: компактные видимые факты + legal в collapsed
      <details>
    • Активность по найму:
      {{HIRING_STATS}}
      (1 строка),
      {{HIRING_WHO}}
      (3-5 буллетов),
      {{HIRING_GAPS}}
      (2-3 буллета),
      {{HIRING_MEANING}}
      (1-2 фразы вывода)
    • {{LPR_CARDS}}
      ⭐ — раскрывающиеся
      <details class="lpr-card" id="lpr-<slug>">
      per ЛПР. Summary — компактная карточка (имя, должность, why). Внутри раскрытия — контекст (background, recent activity, themes, угол захода). Черновика письма внутри НЕТ — он живёт только на вкладке Коммуникация.
    • {{STEP2_SECTION}}
      — Market context, идёт сразу после ЛПР. STUB по умолчанию (Stage 5), FULL после Stage 6.
    • {{STEP3_SECTION}}
      /
      {{STEP4_SECTION}}
      — LinkedIn / Social. STUB по умолчанию (paid).
    • {{SOURCES}}
      — все использованные URL из всех стейджей. Всегда в самом конце вкладки Аналитика.
    • {{COMM_CARDS}}
      ⭐ — РОВНО ОДНА
      .comm-card
      для главного primary ЛПР (top-1, см. правило выбора в Stage 4a). Внутри только
      .message-versions
      с 4 полными версиями письма (v1 база, v2 +рынок, v3 +LinkedIn, v4 +соцсети). Каждая версия = ПОЛНОЕ письмо. В v2/v3/v4 фрагменты, которые добавились относительно предыдущей версии, обёрнуты в
      <span class="added-v2">…</span>
      /
      added-v3
      /
      added-v4
      — это даёт визуальный diff. Никаких отдельных hook-блоков. Для остальных primary ЛПР письма не генерируем — они остаются в person-cards Executive Summary с раскрывающимся контекстом, но без кнопки «Перейти к письму».
    Контекст ЛПР живёт ВНУТРИ
    {{LPR_CARDS}}
    — каждый
    <details class="lpr-card" id="lpr-<slug>">
    содержит
    <summary>
    (компактная карточка) +
    <div class="lpr-context">
    (background, recent activity, themes, угол захода). Отдельного
    DOSSIERS
    плейсхолдера нет.
    Порядок секций на вкладке Аналитика (фиксированный):
    1. Главное (PERSON_CARDS)
    2. Профиль компании
    3. Активность по найму (HIRING_*)
    4. Идентифицированные ЛПР (LPR_CARDS — с вложенным контекстом)
    5. Шаг 2: Market context (STEP2_SECTION)
    6. Шаг 3: LinkedIn deep dive (STEP3_SECTION)
    7. Шаг 4: Social signals (STEP4_SECTION)
    8. Источники (в самом конце)
  4. Определи путь файла:
    bash
    COMPANY_SLUG=$(echo "<COMPANY_NAME>" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-')
    TIMESTAMP=$(date +%Y%m%d-%H%M)
    REPORT_PATH="reports/${COMPANY_SLUG}-${TIMESTAMP}.html"
  5. Создай папку
    reports/
    если её нет + добавь в
    .gitignore
    (чтобы пользовательские отчёты не пачкали репо):
    bash
    mkdir -p reports
    if [ -f .gitignore ] && ! grep -q "^reports/$" .gitignore; then
      echo "reports/" >> .gitignore
    fi
  6. Сохрани HTML через Write tool на
    $REPORT_PATH
    .
  7. Автооткрытие в браузере (cross-platform):
    bash
    open "$REPORT_PATH" 2>/dev/null \
      || xdg-open "$REPORT_PATH" 2>/dev/null \
      || start "" "$REPORT_PATH" 2>/dev/null \
      || echo "Отчёт сохранён: $REPORT_PATH (открой вручную)"
  8. Финальный ответ пользователю:
    ✅ Готово. Отчёт открыт в браузере.
    Файл: reports/<slug>-<timestamp>.html
    Использовано: <stack>
目标: 美观、可复制的HTML报告,自动在浏览器打开。
  1. 准备模板数据(阶段1-4收集的所有事实 + 邮件内容)。
  2. 读取模板:
    Read: .claude/skills/enrich-and-pitch/templates/report.html
    模板末尾有HTML注释,说明所有占位符和重复模块结构 — 严格遵循。
  3. 生成填充后的HTML:
    • Header / meta
      {{COMPANY_NAME}}
      ,
      {{BIN}}
      ,
      {{TIMESTAMP}}
      (格式«2026年5月20日 14:30»),
      {{STACK_TAG}}
      ,
      {{STACK}}
      ,
      {{RUNTIME}}
    • {{PERSON_CARDS}}
      ⭐ — «核心内容»板块:阶段4a的1-3张行动卡片(仅Primary ЛПР)。行动链接
      href="#lpr-<slug>"
      指向下方的ЛПР展开卡片;按钮
      data-target="#comm-<slug>"
      切换至沟通页并滚动至对应邮件。
    • {{COMPANY_FACTS_COMPACT}}
      +
      {{COMPANY_FACTS_LEGAL}}
      — 企业信息:可见的紧凑事实 + 折叠
      <details>
      中的法人信息
    • 招聘活动
      {{HIRING_STATS}}
      (1行),
      {{HIRING_WHO}}
      (3-5条要点),
      {{HIRING_GAPS}}
      (2-3条要点),
      {{HIRING_MEANING}}
      (1-2句结论)
    • {{LPR_CARDS}}
      ⭐ — 每个ЛПР对应一个可展开的
      <details class="lpr-card" id="lpr-<slug>">
      。摘要为紧凑卡片(姓名、职位、理由)。展开后包含背景信息(background、recent activity、themes、切入点)。内部无邮件草稿 — 仅在沟通页展示。
    • {{STEP2_SECTION}}
      — 市场背景,位于ЛПР之后。默认是STUB(阶段5),阶段6后变为FULL。
    • {{STEP3_SECTION}}
      /
      {{STEP4_SECTION}}
      — LinkedIn / 社交平台信息。默认是STUB(付费)。
    • {{SOURCES}}
      — 所有阶段使用的URL。始终位于分析页末尾。
    • {{COMM_CARDS}}
      ⭐ — 仅1个
      .comm-card
      对应核心Primary ЛПР
      (top-1,见阶段4a选择规则)。内部仅包含
      .message-versions
      ,提供4个完整邮件版本(v1基础版、v2 +市场信息、v3 +LinkedIn信息、v4 +社交平台信息)。每个版本都是完整邮件。v2/v3/v4中相对上一版本新增的片段包裹在
      <span class="added-v2">…</span>
      /
      added-v3
      /
      added-v4
      标签中,便于直观对比差异。无单独的hook模块不为其他Primary ЛПР生成邮件 — 它们仅保留在执行摘要的行动卡片中,带展开背景,但无«跳转至邮件»按钮。
    ЛПР背景信息位于
    {{LPR_CARDS}}
    内部
    — 每个
    <details class="lpr-card" id="lpr-<slug>">
    包含
    <summary>
    (紧凑卡片) +
    <div class="lpr-context">
    (background、recent activity、themes、切入点)。无单独的
    DOSSIERS
    占位符。
    分析页板块顺序(固定):
    1. 核心内容(PERSON_CARDS)
    2. 企业概况
    3. 招聘活动(HIRING_*)
    4. 已识别ЛПР(LPR_CARDS — 带内嵌背景)
    5. 步骤2:市场背景(STEP2_SECTION)
    6. 步骤3:LinkedIn深度调研(STEP3_SECTION)
    7. 步骤4:社交信号(STEP4_SECTION)
    8. 数据源(末尾)
  4. 确定文件路径:
    bash
    COMPANY_SLUG=$(echo "<COMPANY_NAME>" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-')
    TIMESTAMP=$(date +%Y%m%d-%H%M)
    REPORT_PATH="reports/${COMPANY_SLUG}-${TIMESTAMP}.html"
  5. 创建
    reports/
    文件夹(若不存在)并添加到
    .gitignore
    (避免用户报告污染仓库):
    bash
    mkdir -p reports
    if [ -f .gitignore ] && ! grep -q "^reports/$" .gitignore; then
      echo "reports/" >> .gitignore
    fi
  6. 通过Write工具保存HTML到
    $REPORT_PATH
  7. 跨平台自动打开浏览器:
    bash
    open "$REPORT_PATH" 2>/dev/null \
      || xdg-open "$REPORT_PATH" 2>/dev/null \
      || start "" "$REPORT_PATH" 2>/dev/null \
      || echo "报告已保存:$REPORT_PATH(请手动打开)"
  8. 向用户发送最终回复:
    ✅ 完成。报告已在浏览器打开。
    文件:reports/<slug>-<timestamp>.html
    使用技术栈:<stack>

Stage 5b: Предложить Шаг 2 в чате

阶段5b:在聊天中建议执行步骤2

Сразу после Stage 5 (после генерации и открытия HTML) — в чате Claude Code предложи запуск Stage 6.
В
{{STEP2_SECTION}}
HTML вставь STUB-state:
html
<section class="step2-stub">
  <h2>📍 Шаг 2: Market context — не запущен</h2>
  <p>Добавь контекст сектора и конкурентов — скажи в чате Claude Code <code>«запусти Шаг 2»</code></p>
</section>
В чате после summary дай предложение:
🔬 Шаг 2 — Market context

Хочешь добавить понимание сектора, конкурентов и динамики рынка?
Это займёт ещё ~3-5 минут — тот же HTML обновится с market research.

Скажи «да» / «запусти Шаг 2» — пойду собирать market context.
Ожидай реакции пользователя. Если «да» / «запусти Шаг 2» / эквивалент → переходи к Stage 6.
Если «нет» / «пока хватит» / молчание → завершай. Пользователь может позже сам запустить.

阶段5完成后(生成并打开HTML后) — 在Claude Code聊天中建议用户启动阶段6。
在HTML的
{{STEP2_SECTION}}
中插入STUB状态:
html
<section class="step2-stub">
  <h2>📍 步骤2:市场背景 — 未启动</h2>
  <p>添加行业背景、竞争对手信息,请在Claude Code聊天中发送指令 <code>«启动步骤2»</code></p>
</section>
在聊天中发送以下建议:
🔬 步骤2 — 市场背景

是否需要添加行业认知、竞争对手及市场动态信息?
约需3-5分钟 — 同一HTML文件将更新市场调研内容。

发送«是» / «启动步骤2» — 我将开始收集市场背景信息。
等待用户回复。若回复«是» / «启动步骤2» / 等效指令 → 进入阶段6。
若回复«否» / «暂时足够» / 无回复 → 结束流程。用户可后续自行启动。

Stage 6: Market Research (только если пользователь сказал «да» в Stage 5b)

阶段6:市场调研(仅当用户在阶段5b回复«是»时执行)

Цель: через WebSearch + WebFetch собрать market context. Не уходи в claude.ai — работаешь теми же тулзами что и в Stages 1-4.
Параллельные WebSearch'и:
  1. Конкуренты компании в секторе:
    • "{сектор}" Казахстан конкуренты топ-5
    • "{сектор}" Казахстан крупнейшие компании
    • "{сектор}" {company} конкуренты
    • Из ответов извлеки 3-5 имён с краткой позицией (~10-15 слов про каждого)
    • Сгруппируй: KZ-локальные / региональные (РФ/CIS) / глобальные
  2. Динамика рынка 2024-2026:
    • "{сектор}" Казахстан рынок 2026
    • "{сектор}" Казахстан объём рост
    • "{сектор}" регулирование Казахстан 2026
    • Ищи: объём рынка, темпы роста, регуляторные изменения, мандатное внедрение, ключевые milestones
  3. AI / технологические тренды в категории:
    • "{сектор}" AI внедрение тренды 2026
    • "{сектор}" автоматизация AI Казахстан
    • Какие именно use cases AI в этой категории, кто из конкурентов внедряет, что мейнстрим
  4. Что меняется в 2026 (макро):
    • Год AI в РК → как это влияет на сектор
    • Регуляторные изменения
    • Cross-border / regional shifts
  5. Уязвимости лидера сегмента:
    • Угрозы со стороны глобалов / новых entrants / regulator
    • Где компания МОЖЕТ потерять долю
    • На что AI-native новички могут заходить
Hallucination guard: те же правила что Stage 1 — каждый факт с источником, неточные пометить.

目标: 通过WebSearch + WebFetch收集市场背景信息。不要使用claude.ai — 使用与阶段1-4相同的工具。
并行执行WebSearch:
  1. 行业内竞争对手:
    • "{行业}" Казахстан конкуренты топ-5
    • "{行业}" Казахстан крупнейшие компании
    • "{行业}" {company} конкуренты
    • 从结果中提取3-5个名称及简短定位(约10-15词)
    • 分组:哈萨克斯坦本地 / 区域(俄罗斯/CIS) / 全球
  2. 2024-2026年市场动态:
    • "{行业}" Казахстан рынок 2026
    • "{行业}" Казахстан объём рост
    • "{行业}" регулирование Казахстан 2026
    • 查找:市场规模、增长率、监管变化、强制实施要求、关键里程碑
  3. AI / 技术趋势:
    • "{行业}" AI внедрение тренды 2026
    • "{行业}" автоматизация AI Казахстан
    • 该领域的AI应用场景、哪些竞争对手正在实施、主流趋势
  4. 2026年宏观变化:
    • 哈萨克斯坦AI年 → 对行业的影响
    • 监管变化
    • 跨境/区域格局变化
  5. 行业领导者的弱点:
    • 来自全球企业/新进入者/监管的威胁
    • 企业可能丢失市场份额的领域
    • AI原生新玩家的切入点
幻觉防护: 与阶段1规则相同 — 每个事实附带数据源,不确定的内容标记或删除。

Stage 7: Update HTML — Step 2 + regenerate full message (v1 → v2)

阶段7:更新HTML — 步骤2 + 重新生成完整邮件(v1 → v2)

Двойная задача:
  1. Заменить STUB Step 2 section на FULL market context (на вкладке Аналитика, между ЛПР и Шагом 3)
  2. Regenerate полное письмо v2 на вкладке Коммуникация — с подсветкой market-добавок через
    .added-v2
После Stage 6:
双重任务:
  1. 将步骤2的STUB板块替换为完整市场背景(分析页,位于ЛПР与步骤3之间)
  2. 重新生成沟通页的完整邮件v2 — 通过
    .added-v2
    高亮新增的市场内容
阶段6完成后:

7a. Regenerate full message v2 (Шаг 2 evolution)

7a. 重新生成完整邮件v2(步骤2迭代)

Для каждого PRIMARY ЛПР:
  • Возьми v1 — полное письмо после Шага 1 (Personal context → Why now → Specific value → CTA)
  • Сгенерируй v2 — то же письмо, но с добавкой market layer: конкуренты, регуляторный контекст, динамика сектора. Добавки обворачивай в
    <span class="added-v2">…</span>
    чтобы они визуально подсвечивались
  • v2 должен звучать резко сильнее v1: если только переставил слова — не меняй (нет смысла в evolution)
  • Добавь блок
    what-changed
    под v2 — 1-2 предложения, что именно добавилось
Пример (Sulpak v1 → v2):
  • v1: «80% покупок через карты лояльности → нагрузка на CRM 24/7, AXELOT WMS расширяется. Готовы обсудить серверы под этот контур»
  • v2: v1 +
    <span class="added-v2">Mechta в 2024 потеряла 15%, категория упёрлась в насыщение → loyalty-data становится единственным защищаемым активом</span>
    +
    <span class="added-v2">регулятор движется тремя волнами поправок в 2026: 18 января уже в силе, 11 июля финальная</span>
针对每位Primary ЛПР:
  • 基于v1 — 步骤1后的完整邮件(个性化背景 → 为何是现在 → 具体价值 → CTA)
  • 生成v2 — 同一邮件,添加市场层内容:竞争对手、监管背景、行业动态。新增内容包裹在
    <span class="added-v2">…</span>
    标签中以便高亮
  • v2必须明显强于v1:若仅调整措辞 — 无需更新(无迭代意义)
  • 在v2下方添加
    what-changed
    板块 — 1-2句话说明新增内容
示例(Sulpak v1 → v2):
  • v1: «80%的购买通过会员卡完成 → CRM全天候负载,AXELOT WMS正在扩容。我们可讨论适配该系统的服务器方案»
  • v2: v1 +
    <span class="added-v2">Mechta在2024年丢失15%份额,行业已达饱和 → 会员数据成为唯一的护城河</span>
    +
    <span class="added-v2">2026年监管将分三轮调整:1月18日已生效,7月11日将发布最终版本</span>

7b. Update HTML

7b. 更新HTML

  1. Найди STUB Step 2 section → замени на FULL market context (HTML-шаблон ниже в этом файле).
  2. На вкладке Коммуникация — единственная comm-card для главного ЛПР:
    • v1 (текущая) → переезжает в
      .previous
    • v2 (новая) → становится
      .current
      на самом верху
    • v3 / v4 stubs остаются как есть
html
<div class="message-versions">

  === LATEST version (current) ===
  <div class="message-version current">
    <button class="copy-btn">Скопировать</button>
    <div class="message-version-meta">
      <span class="message-version-badge">v2 · + Рынок</span>
      <span class="message-version-status">Текущая версия — после Шага 2</span>
    </div>
    <pre>{Имя}, добрый день.

{Personal context v1.} <span class="added-v2">{Market addition.}</span>

{Why now v1.} <span class="added-v2">{Market frame.}</span> {Specific value.}

{CTA.}

С уважением,
[Ваше имя]</pre>
    <div class="what-changed">
      <strong>Что изменилось в v2:</strong> 1-2 предложения объяснения добавленных market-слоёв.
    </div>
  </div>

  === Previous version (v1 base) ===
  <div class="message-version previous">
    <button class="copy-btn">Скопировать</button>
    <div class="message-version-meta">
      <span class="message-version-badge">v1 · База</span>
      <span class="message-version-status">Предыдущая версия — после Шага 1</span>
    </div>
    <pre>{Full v1 letter without market additions.}</pre>
  </div>

  === v3 / v4 stubs (остаются как есть) ===
  ...
</div>
  1. Никаких изменений на вкладке Аналитика в LPR-карточках — там черновика письма нет, контекст ЛПР остаётся прежним.
  2. Сохрани файл, открой:
    bash
    open "$REPORT_PATH"
  3. В чате: «✅ Шаг 2 добавлен. Обнови вкладку (Cmd+R). На вкладке Коммуникация v2 — с подсвеченными market-добавками. Старая v1 рядом для сравнения.»

  1. 找到步骤2的STUB板块 → 替换为完整市场背景(本文件下方的HTML模板)。
  2. 沟通页仅保留核心ЛПР的comm-card
    • v1(当前版本) → 移至
      .previous
    • v2(新版本) → 成为顶部的
      .current
    • v3 / v4的stub保持不变
html
<div class="message-versions">

  === 最新版本(current) ===
  <div class="message-version current">
    <button class="copy-btn">复制</button>
    <div class="message-version-meta">
      <span class="message-version-badge">v2 · +市场信息</span>
      <span class="message-version-status">当前版本 — 步骤2后</span>
    </div>
    <pre>{姓名}, 您好.

{个性化背景v1内容.} <span class="added-v2">{新增市场内容.}</span>

{为何是现在v1内容.} <span class="added-v2">{市场框架内容.}</span> {具体价值内容.}

{CTA内容.}

此致,
[您的姓名]</pre>
    <div class="what-changed">
      <strong>v2新增内容:</strong> 1-2句话说明新增的市场层信息.
    </div>
  </div>

  === 上一版本(v1基础版) ===
  <div class="message-version previous">
    <button class="copy-btn">复制</button>
    <div class="message-version-meta">
      <span class="message-version-badge">v1 · 基础版</span>
      <span class="message-version-status">上一版本 — 步骤1后</span>
    </div>
    <pre>{无市场内容的完整v1邮件.}</pre>
  </div>

  === v3 / v4 stub(保持不变) ===
  ...
</div>
  1. 分析页的ЛПР卡片无需修改 — 内部无邮件草稿,ЛПР背景信息保持不变。
  2. 保存文件并打开:
    bash
    open "$REPORT_PATH"
  3. 在聊天中告知:«✅ 步骤2已添加。请刷新页面(Cmd+R)。沟通页的v2版本包含高亮的市场新增内容。旧版本v1可用于对比。»

Stage 8: Шаг 3 — Paid sources (опционально, если есть keys)

阶段8:步骤3 — 付费数据源(可选,若有密钥)

Сразу после Stage 7 (после Шаг 2 готов) — снова предложение в чате:
🔬 Шаг 3 — Paid sources (LinkedIn deep dive + goszakup)

Хочешь добавить личные данные ЛПР через paid sources?
- Apify LinkedIn Profile + последние 10 постов
- (опционально) goszakup history если есть token

Это ещё ~2-3 мин, hook эволюционирует в v3 с laser-точным контекстом.

Скажи «да» / «запусти Шаг 3».
Если пользователь сказал «да»:
  1. Проверь
    $APIFY_API_KEY
    в env:
    bash
    if [ -f .env ]; then source .env; fi
    if [ -z "$APIFY_API_KEY" ]; then
      echo "Нет APIFY_API_KEY. Положи в .env."; exit
    fi
  2. Найди LinkedIn URL primary ЛПР (из Stage 3 — если был snippet, или WebSearch заново)
  3. Вызови Apify LinkedIn Profile Scraper:
    bash
    curl -X POST "https://api.apify.com/v2/acts/dev_fusion~linkedin-profile-scraper/run-sync-get-dataset-items?token=$APIFY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"profileUrls": ["https://www.linkedin.com/in/<lpr-handle>"]}'
    Альтернативный actor если первый не работает:
    bebity/linkedin-premium-actor
    ,
    curious_coder/linkedin-profile-scraper
    .
  4. Из ответа извлеки:
    • Recent posts (последние 10)
    • About / Summary
    • Skills и эндорсменты
    • Network connections (high-profile)
    • Recent activity (likes, comments, reposts)
  5. Regenerate полное письмо v3 — на основе LinkedIn-данных:
    • v3 включает конкретный recent LinkedIn signal (цитата из поста, недавняя активность) обёрнутый в
      <span class="added-v3">…</span>
    • Пример добавки: «Видел ваш пост от [дата] про [тема] — пересекается с тем что вы делаете в [продукт]»
    • v3 = v2 как база + LinkedIn-добавки, не переписываем письмо целиком
  6. Update HTML — Stage 9.

阶段7完成后(步骤2就绪) — 再次在聊天中建议:
🔬 步骤3 — 付费数据源(LinkedIn深度调研 + goszakup)

是否需要通过付费数据源添加ЛПР的个人信息?
- Apify LinkedIn资料 + 最近10条帖子
-(可选)若有token,添加goszakup历史数据

约需2-3分钟,切入点将迭代为v3,包含精准的个性化背景。

发送«是» / «启动步骤3»。
若用户回复«是»:
  1. 检查环境变量中的
    $APIFY_API_KEY
    bash
    if [ -f .env ]; then source .env; fi
    if [ -z "$APIFY_API_KEY" ]; then
      echo "缺少APIFY_API_KEY。请放入.env文件。"; exit
    fi
  2. 查找Primary ЛПР的LinkedIn URL(阶段3的片段,或重新WebSearch)
  3. 调用Apify LinkedIn Profile Scraper:
    bash
    curl -X POST "https://api.apify.com/v2/acts/dev_fusion~linkedin-profile-scraper/run-sync-get-dataset-items?token=$APIFY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"profileUrls": ["https://www.linkedin.com/in/<lpr-handle>"]}'
    若第一个actor不可用,备选:
    bebity/linkedin-premium-actor
    ,
    curious_coder/linkedin-profile-scraper
    .
  4. 从响应中提取:
    • 最近10条帖子
    • About / Summary
    • 技能与背书
    • 高价值人脉
    • 近期活动(点赞、评论、转发)
  5. 重新生成完整邮件v3 — 基于LinkedIn数据:
    • v3包含具体的LinkedIn近期信号(帖子引语、近期活动),包裹在
      <span class="added-v3">…</span>
      标签中
    • 新增内容示例:«看到您[日期]发布的关于[主题]的帖子 — 与您在[产品]领域的工作契合»
    • v3 = v2为基础 + LinkedIn新增内容,无需重写整个邮件
  6. 更新HTML — 阶段9。

Stage 9: Update HTML — Step 3 → v3 current

阶段9:更新HTML — 步骤3 → v3成为当前版本

  1. На вкладке Коммуникация — единственная comm-card для главного ЛПР:
    • v2 (current) → переезжает в
      .previous
    • v3 (новый) → становится
      .current
      на самом верху
    • v1 (previous) → остаётся
      .previous
      , ниже v2
    • Stub v3 → удаляется
    • v3 содержит ПОЛНОЕ письмо v2 + LinkedIn-добавки обёрнутые в
      <span class="added-v3">…</span>
      (personal post quote, дата, тема). Цвет подсветки автоматически зелёный (см. CSS .added-v3)
    • Добавь блок
      what-changed
      под v3 с описанием LinkedIn-слоя
  2. Опционально: добавить новую секцию
    step3-personal-deep-dive
    с raw LinkedIn data (свёрнуто по умолчанию через
    <details>
    ). Положи между Шаг 2 и Шаг 4 на вкладке Аналитика.
  3. Никаких изменений на вкладке Аналитика в LPR-карточках — там черновика письма нет.
  4. Open + chat:
    ✅ Шаг 3 готов. На вкладке Коммуникация v3 — теперь с personal LinkedIn context (зелёная подсветка). v1, v2 рядом для сравнения.

  1. 沟通页仅保留核心ЛПР的comm-card
    • v2(当前版本) → 移至
      .previous
    • v3(新版本) → 成为顶部的
      .current
    • v1(previous) → 保持
      .previous
      ,位于v2下方
    • 删除v3的stub
    • v3包含完整v2邮件 + 包裹在
      <span class="added-v3">…</span>
      标签中的LinkedIn新增内容(个人帖子引语、日期、主题)。高亮颜色自动为绿色(见CSS .added-v3)
    • 在v3下方添加
      what-changed
      板块说明LinkedIn层内容
  2. 可选: 添加新板块
    step3-personal-deep-dive
    ,包含原始LinkedIn数据(默认通过
    <details>
    折叠)。放在分析页步骤2与步骤4之间。
  3. 分析页的ЛПР卡片无需修改 — 内部无邮件草稿。
  4. 打开文件并在聊天中告知:
    ✅ 步骤3完成。沟通页的v3版本包含LinkedIn个性化背景(绿色高亮)。v1、v2可用于对比。

Market context HTML template (для замены STUB в Stage 7)

市场背景HTML模板(阶段7替换STUB用)

html
<section class="step2-full">
  <h2>📍 Шаг 2: Market context</h2>
  <div class="summary-subtitle">Сектор, конкуренты, динамика, что из этого торчит</div>

  <dl class="market-grid">
    <dt>Сектор</dt>
    <dd>...определение сегмента (1 фраза)...</dd>

    <dt>Положение компании</dt>
    <dd>...лидер / challenger / niche, размер доли если известно...</dd>

    <dt>Конкуренты</dt>
    <dd>
      <ul>
        <li><strong>Имя</strong> — позиционирование (KZ-локальный)</li>
        <li><strong>Имя</strong> — позиционирование (региональный)</li>
        <li><strong>Имя</strong> — позиционирование (глобал)</li>
      </ul>
    </dd>

    <dt>Динамика</dt>
    <dd>
      <ul>
        <li class="up">что растёт / drives the market</li>
        <li class="up">регуляторные tailwinds</li>
        <li class="down">что давит / угрозы / headwinds</li>
      </ul>
    </dd>
  </dl>

  <div class="market-insight">
    <div class="market-insight-label">Что из этого торчит для нашего outreach</div>
    <div class="market-insight-body">
      1-2 предложения вывод. Как контекст сектора усиливает наш заход к этому ЛПР.
    </div>
  </div>

  <div class="market-sources">
    Источники: <a href="...">name1</a>, <a href="...">name2</a>, <a href="...">name3</a>
  </div>
</section>
html
<section class="step2-full">
  <h2>📍 步骤2:市场背景</h2>
  <div class="summary-subtitle">行业、竞争对手、动态、对outreach的价值</div>

  <dl class="market-grid">
    <dt>行业</dt>
    <dd>...行业定义(1句话)...</dd>

    <dt>企业定位</dt>
    <dd>...领导者 / 挑战者 / 细分领域,若已知市场份额...</dd>

    <dt>竞争对手</dt>
    <dd>
      <ul>
        <li><strong>名称</strong> — 定位(哈萨克斯坦本地)</li>
        <li><strong>名称</strong> — 定位(区域)</li>
        <li><strong>名称</strong> — 定位(全球)</li>
      </ul>
    </dd>

    <dt>市场动态</dt>
    <dd>
      <ul>
        <li class="up">增长领域 / 市场驱动力</li>
        <li class="up">监管利好</li>
        <li class="down">压力因素 / 威胁 / 监管利空</li>
      </ul>
    </dd>
  </dl>

  <div class="market-insight">
    <div class="market-insight-label">对outreach的价值</div>
    <div class="market-insight-body">
      1-2句话结论。行业背景如何强化对该ЛПР的切入点。
    </div>
  </div>

  <div class="market-sources">
    数据源:<a href="...">name1</a>, <a href="...">name2</a>, <a href="...">name3</a>
  </div>
</section>

Output Format (для пользователя в чате)

用户聊天输出格式

В начале (Stage 1.0 — подтверждение):
🔍 Ищу компанию...

Нашёл кандидата(ов) для «<input>»:

1. ТОО Documentolog
   БИН 070840007503 · Астана · 41-50 человек · директор Аманбекова М.А.
   Разработка ПО, 18 лет на рынке

2. (если есть второй) ...

Какую исследуем? (1 / 2 / обе / уточнить)
Жди подтверждения. После него — иди в полный цикл.
После Stage 5 (Шаг 1 готов):
✅ Контекст-360 по <Company> готов. Отчёт открыт в браузере.

📄 reports/<slug>-<timestamp>.html

Найдено ЛПР: <N> (из них primary: <N>, главный: <Имя Фамилия>)
Сгенерировано писем: 1 (полное письмо для главного ЛПР)
Использовано: <stack>
Время: ~<X> сек

—————————————————————————
🔬 Шаг 2 — Market context

Хочешь добавить понимание сектора, конкурентов и динамики рынка?
~3-5 мин. Тот же HTML обновится с market research.

Скажи «да» / «запусти Шаг 2» — пойду собирать.
Ожидай реакции пользователя.
После Stage 7 (если Шаг 2 был запущен):
✅ Шаг 2 добавлен в отчёт.

Использовано: <stack> + market research
Время Шага 2: ~<X> мин
Источников добавлено: <N>

Обнови вкладку браузера (Cmd+R) — Market context появится после Источников.
初始阶段(阶段1.0 — 确认):
🔍 正在查找企业...

为«<输入内容>»找到以下候选企业:

1. ТОО Documentolog
   БИН 070840007503 · 阿斯塔纳 · 41-50人 · 总经理 Аманбекова М.А.
   软件开发,成立18年

2.(若有第二个)...

需要调研哪一家?(1 / 2 / 两家都调研 / 补充信息)
等待确认。确认后进入完整流程。
阶段5完成后(步骤1就绪):
✅ <企业名称>的360度背景信息已就绪。报告已在浏览器打开。

📄 reports/<slug>-<timestamp>.html

找到ЛПР:<N>位(其中Primary:<N>位,核心:<姓名>)
生成邮件:1封(核心ЛПР的完整邮件)
使用技术栈:<stack>
耗时:~<X>秒

—————————————————————————
🔬 步骤2 — 市场背景

是否需要添加行业认知、竞争对手及市场动态信息?
约3-5分钟。同一HTML文件将更新市场调研内容。

发送«是» / «启动步骤2» — 我将开始收集。
等待用户回复。
阶段7完成后(若执行了步骤2):
✅ 步骤2已添加到报告。

使用技术栈:<stack> + 市场调研
步骤2耗时:~<X>分钟
新增数据源:<N>个

请刷新浏览器页面(Cmd+R) — 市场背景将显示在数据源之后。

Hallucination Guards (КРИТИЧНО)

幻觉防护规则(至关重要)

  • Каждый факт в output должен иметь URL-источник.
  • Если факт не подтверждён → пометь
    [не подтверждено]
    или опусти.
  • Если человек / компания не верифицируется → не выдумывай: «не нашёл публичных данных о X».
  • НИКОГДА не выдумывай: имена ЛПР, должности, факты биографии, финансовые данные, конкретные события, цитаты из интервью.
  • Если goszakup данные не доступны → не выдумывай историю контрактов.
  • Если LinkedIn профиль не найден → не выдумывай содержание постов.
  • 每个事实的输出必须附带URL数据源。
  • 若事实未确认 → 标记
    [未确认]
    或删除。
  • 若人员/企业无法验证 → 不要编造:«未找到X的公开数据»。
  • 绝对不要编造:ЛПР姓名、职位、生平事实、财务数据、具体事件、访谈引语。
  • 若goszakup数据不可用 → 不要编造合同历史。
  • 若未找到LinkedIn资料 → 不要编造帖子内容。

Tool Detection (auto-graceful degradation)

工具自动降级

В начале работы проверь доступные env vars:
  • $APIFY_API_KEY
    → enables Apify LinkedIn calls (Stage 2-3)
  • $GOSZAKUP_TOKEN
    → enables goszakup API (Stage 1)
  • $SCRAPEDO_TOKEN
    → enables Scrape.do для заблокированных сайтов (Stage 1)
  • $YANDEX_SEARCH_API_KEY
    → enables yandex-search-api для глубокого RU/KZ SERP
В output финальная строка перечисляет что использовалось:
Использовано: free стек
или
Использовано: free + apify + goszakup
.
工作开始前检查可用环境变量:
  • $APIFY_API_KEY
    → 启用Apify LinkedIn调用(阶段2-3)
  • $GOSZAKUP_TOKEN
    → 启用goszakup API(阶段1)
  • $SCRAPEDO_TOKEN
    → 启用Scrape.do访问被封锁网站(阶段1)
  • $YANDEX_SEARCH_API_KEY
    → 启用yandex-search-api进行深度俄文/哈萨克文搜索
输出的最终行需说明使用的技术栈:
使用技术栈:免费技术栈
使用技术栈:免费 + apify + goszakup

Failure Modes

失败场景

  • Компания не найдена в adata.kz: попробуй разные варианты написания (русский / казахский / English). Fallback: только WebSearch.
  • 0 ЛПР найдено: report и стоп. Не генери generic сообщения.
  • ЛПР без public footprint: сообщение можно сделать на основе только company context, но честно отметить «контекст по человеку ограничен».
  • Все paid недоступны: продолжай на free стеке, в output пометь.
  • adata.kz未找到企业:尝试不同拼写(俄语/哈萨克语/英语)。备选方案:仅使用WebSearch。
  • 未找到任何ЛПР:报告并停止流程。不要生成通用邮件。
  • ЛПР无公开信息:可基于企业背景生成邮件,但需明确标注«个人背景信息有限»。
  • 所有付费工具不可用:继续使用免费技术栈,在输出中说明。

Расчётное время выполнения

预计耗时

  • Free стек: 60-120 сек на компанию
    • Apify: +30-60 сек
    • goszakup: +20 сек
  • 免费技术栈:每企业60-120秒
    • Apify:+30-60秒
    • goszakup:+20秒

Примеры запроса от пользователя

用户请求示例

✅ «Сделай контекст-360 на Globalink Logistics. Мы продаём AI-инструменты для отдела продаж: лидген, скоринг входящих, аналитика звонков.»
✅ «Обогати БИН 110842011929 и подготовь outreach. Наш оффер: SaaS для логистических компаний — управление документооборотом и отслеживание грузов.»
✅ «Найди ЛПР в Documentolog и напиши первое сообщение. Продаём: коучинг отделов продаж через AI-анализ переписки.»
✅ «为Globalink Logistics生成360度背景信息。我们销售AI销售工具:线索生成、inbound线索评分、通话分析。»
✅ «增强БИН 110842011929的信息并准备outreach内容。我们的产品:面向物流企业的SaaS — 文档管理与货物追踪。»
✅ «找到Documentolog的ЛПР并撰写首封邮件。我们销售:基于AI邮件分析的销售团队培训。»

Что НЕ делает этот skill

本技能不支持的功能

  • Не отправляет письма (только генерирует драфты)
  • Не сохраняет в CRM (только производит markdown)
  • Не работает с компаниями вне Казахстана как primary use case (для них adata.kz и goszakup не релевантны — нужен другой набор источников)
  • Не делает audio/voice анализ (это отдельная Surfnote-история)
  • 不发送邮件(仅生成草稿)
  • 不保存到CRM(仅生成markdown)
  • 不支持哈萨克斯坦以外的企业作为核心场景(adata.kz和goszakup不适用,需其他数据源)
  • 不支持音频/语音分析(属于单独的Surfnote功能)