// @ts-nocheck /* Claysend Brutalist UI kit — sample data (fictional, from the product). Attached to window.DATA for all screen files. */ const COLUMNS = [ { key:'company', label:'公司', type:'base' }, { key:'contact', label:'联系人', type:'base' }, { key:'context', label:'Context', type:'ai', kind:'context', src:'多源聚合' }, { key:'email', label:'邮件', type:'channel', platform:'email', src:'GPT-4o' }, ]; // platforms a "触达列" can target. email = 发送渠道(序列); others = 触点/推荐渠道(点开看推荐) const PLATFORMS = [ { key:'email', label:'邮件', icon:'mail', kind:'send' }, { key:'linkedin', label:'LinkedIn', icon:'idcard', kind:'rec' }, { key:'twitter', label:'Twitter', icon:'zap', kind:'rec' }, { key:'rednote', label:'小红书', icon:'flame', kind:'rec' }, { key:'reddit', label:'Reddit', icon:'megaphone', kind:'rec' }, ]; // recommended touchpoints per platform (shown when you click a channel cell) const CHANNEL_RECS = { linkedin: { profile:'活跃 · 本周发过帖 · 180 人公司', recs:[ { type:'近期动态', icon:'idcard', tone:'hot', text:'本周发帖:「我们如何把 onboarding 激活率做到 40%」· 92 赞', action:'评论切入 · 呼应激活率', cta:'生成评论' }, { type:'共同关系', icon:'users', text:'2 位共同好友:Sara Kim(前 Stripe 同事)、Leo F.', action:'走 Sara 暖引荐', cta:'请求引荐' }, { type:'私信角度', icon:'send', text:'她刚挂出 growth 岗——「招人即痛点」是天然开场', action:'按招聘信号定制', cta:'生成私信' }, ] }, twitter: { profile:'常聊 #GTM #RevOps · 近 7 天活跃', recs:[ { type:'近期推文', icon:'zap', tone:'hot', text:'吐槽「outbound 工具太多,数据各自为政」', action:'回复切入 · 数据统一', cta:'生成回复' }, { type:'话题', icon:'spark', text:'常转发增长拆解长文,偏实操', action:'按话题互动暖场', cta:'看话题' }, ] }, rednote: { profile:'发过 3 篇 B2B 增长笔记 · 最高 1.2k 赞', recs:[ { type:'笔记', icon:'flame', tone:'hot', text:'「冷启动 0→1 获客」笔记下评论区很活跃', action:'评论引流 · 留干货', cta:'生成评论' }, { type:'选题', icon:'spark', text:'近期收藏多为「私域 / 增长」选题', action:'按选题定制内容', cta:'看选题' }, ] }, reddit: { profile:'活跃于 r/sales、r/SaaS', recs:[ { type:'帖子', icon:'megaphone', tone:'hot', text:'在 r/sales 问「冷邮个性化怎么规模化」', action:'真诚作答 · 非推广', cta:'生成回答' }, { type:'社区', icon:'users', text:'r/SaaS 周三 self-promo 帖可露出', action:'按版规参与', cta:'看版规' }, ] }, _default: { profile:'已找到公开资料', recs:[ { type:'触点', icon:'spark', text:'已找到可切入的公开内容', action:'生成互动草稿', cta:'生成' }, ] }, }; // what an incremental "更新" appends to a lead's Context (newly found, since last run) const CTX_UPDATE = [ { icon:'zap', label:'新动态', v:'今早发推:正在评估新的 outbound 栈', meta:'Twitter · 刚刚', fresh:true }, { icon:'users', label:'招聘信号', v:'新挂 2 个 Growth / Demand Gen 岗', meta:'LinkedIn Jobs · 刚刚', fresh:true }, ]; const LEADS = [ { id:1, company:'Northbeam', domain:'northbeam.io', contact:'Dana Okoye', title:'Head of Growth', email:{v:'dana@northbeam.io', meta:'已验证'}, status:'ready', selected:true, context:{ state:'ready', sources:4, updated:'2 小时前', signals:[ { icon:'chart', label:'近期融资', v:'B 轮 · $42M', meta:'Crunchbase · 2026-03', ok:true }, { icon:'globe', label:'主页 H1', v:'归因,终于说真话了。', meta:'网页爬取' }, { icon:'users', label:'团队规模', v:'~180 人 · 近 90 天 +22%', meta:'LinkedIn' }, { icon:'megaphone', label:'近期动态', v:'发布归因 2.0,HN 240 赞', meta:'Hacker News · 5 天前' }, { icon:'package', label:'技术栈', v:'Segment · Snowflake · dbt', meta:'BuiltWith' }, ] } }, { id:2, company:'Lumenote', domain:'lumenote.app', contact:'Theo Marchand', title:'VP Marketing', email:{v:'theo@lumenote.app', meta:'已验证'}, status:'ready', context:{ state:'ready', sources:3, updated:'1 天前', signals:[ { icon:'chart', label:'近期融资', v:'A 轮 · $11M', meta:'Crunchbase · 2025-11', ok:true }, { icon:'globe', label:'主页 H1', v:'把会议笔记变成行动。', meta:'网页爬取' }, { icon:'megaphone', label:'近期动态', v:'Product Hunt #2 of the day', meta:'PH · 上周' }, { icon:'users', label:'团队规模', v:'~40 人', meta:'LinkedIn' }, ] } }, { id:3, company:'Cedar Health', domain:'cedarhealth.co', contact:'Priya Nadkarni', title:'Demand Gen', email:{v:'priya@cedarhealth.co', meta:'已验证'}, status:'enriching', context:{ state:'loading' } }, { id:4, company:'Forgepoint', domain:'forgepoint.dev', contact:'Mikael Strand', title:'Co-founder & CEO', email:{v:'mikael@forgepoint.dev', meta:'已验证'}, status:'ready', selected:true, context:{ state:'ready', sources:4, updated:'4 小时前', signals:[ { icon:'chart', label:'近期融资', v:'种子 · $4.5M', meta:'Crunchbase · 2026-01', ok:true }, { icon:'globe', label:'主页 H1', v:'给工程团队的发布管线。', meta:'网页爬取' }, { icon:'megaphone', label:'近期动态', v:'Show HN:「一周手动发 200 封冷邮」', meta:'Hacker News' }, { icon:'package', label:'技术栈', v:'Next.js · Vercel · Postgres', meta:'BuiltWith' }, ] } }, { id:5, company:'Driftwood', domain:'driftwood.com', contact:'Sasha Romero', title:'CMO', email:{v:'sasha@driftwood.com', meta:'已验证'}, status:'ready', selected:true, context:{ state:'ready', sources:4, updated:'6 小时前', signals:[ { icon:'chart', label:'近期融资', v:'C 轮 · $80M', meta:'Crunchbase · 2025-09', ok:true }, { icon:'globe', label:'主页 H1', v:'电商增长的操作系统。', meta:'网页爬取' }, { icon:'users', label:'团队规模', v:'~520 人', meta:'LinkedIn' }, { icon:'megaphone', label:'近期动态', v:'收购 Pixel Analytics(5 月)', meta:'TechCrunch' }, ] } }, { id:6, company:'Pellucid', domain:'pellucid.ai', contact:'Wen Zhao', title:'Head of RevOps', email:{v:'wen@pellucid.ai', meta:'风险'}, status:'queued', context:{ state:'queued' } }, { id:7, company:'Halcyon Labs', domain:'halcyon.dev', contact:'Ravi Menon', title:'Growth Lead', email:{v:'ravi@halcyon.dev', meta:'已验证'}, status:'ready', context:{ state:'ready', sources:3, updated:'3 小时前', signals:[ { icon:'chart', label:'近期融资', v:'B 轮 · $30M', meta:'Crunchbase · 2026-02', ok:true }, { icon:'globe', label:'主页 H1', v:'安全,默认开启。', meta:'网页爬取' }, { icon:'megaphone', label:'近期动态', v:'博客:outbound 数据合规指南', meta:'公司博客 · 1 周前' }, ] } }, { id:8, company:'Tindr Logistics', domain:'tindrlog.com', contact:'Grace Abara', title:'VP Sales', email:{v:'—', meta:'未找到'}, status:'partial', context:{ state:'ready', sources:1, updated:'1 天前', partial:true, signals:[ { icon:'chart', label:'近期融资', v:'未公开', meta:'无记录', faint:true }, { icon:'globe', label:'主页 H1', v:'页面 403 · 抓取失败', meta:'网页爬取', err:true }, { icon:'users', label:'团队规模', v:'~60 人', meta:'LinkedIn' }, ] } }, ]; const TABLE_STATUS = { total:1240, enriched:991, ready:872, running:3, queued:12 }; /* ---- workspace templates (a workspace's "type") + the user's workspaces ---- */ const TEMPLATES = [ { key:'email', name:'Email 外联', icon:'mail', tag:'LEADS', desc:'名单 → 富化 Context → 多渠道触点 → 邮件序列 → 发送', flow:['导入名单','富化 Context','多渠道触点','邮件序列'], unit:'leads', popular:true }, { key:'seo', name:'GEO & SEO', icon:'search', tag:'KEYWORDS', desc:'关键词 → 搜索意图 → SEO 机会分析 → 大纲 → 生成文章', flow:['关键词','搜索意图','SEO 分析','生成文章'], unit:'keywords' }, { key:'ads', name:'Google Ads', icon:'target', tag:'CAMPAIGNS', desc:'关键词 → AI 分组 → 生成 RSA 文案 → 投放管理(新建/刷新/调价/暂停)', flow:['关键词','AI 分组','RSA 文案','投放管理'], unit:'campaigns' }, { key:'blank', name:'空白工作区', icon:'plus', tag:'CUSTOM', desc:'从一张空表开始,自己定义行与富化列', flow:['自定义行','自定义列'], unit:'rows' }, ]; const WORKSPACES = [ { id:'ws1', name:'prospects_q2', type:'email', rows:1240, cols:5, updated:'2 小时前', running:3, owner:'Bob Lee', star:true }, { id:'ws2', name:'EU 扩张名单', type:'email', rows:680, cols:4, updated:'昨天', running:0, owner:'Bob Lee' }, { id:'ws3', name:'YC W26 创始人', type:'email', rows:312, cols:6, updated:'3 天前', running:0, owner:'Sam Lin' }, { id:'ws4', name:'博客 SEO · Q3', type:'seo', rows:48, cols:5, updated:'1 小时前', running:2, owner:'Bob Lee', star:true }, { id:'ws5', name:'落地页关键词', type:'seo', rows:120, cols:4, updated:'1 周前', running:0, owner:'Mira Chen' }, // ads workspaces are REAL — loaded from /api/ads in the hub (no mock). ]; /* ---- SEO workspace (keyword → analysis → article) ---- */ const SEO_CHECKS = [ { t:'主关键词进 H1 + 首段', d:'自然出现,不堆砌' }, { t:'覆盖 PAA 问题', d:'问答式小标题' }, { t:'相关长尾自然分布', d:'密度 1–1.5%' }, { t:'内链 ≥ 3 处', d:'指向产品 / 案例页' }, { t:'Meta 描述 ≤ 155 字符', d:'含主词 + 动作' }, { t:'图片 alt 已填', d:'每张配图' }, ]; const SEO_ROWS = [ { id:1, kw:'冷邮件个性化', vol:'2.4k', kd:42, intent:{ v:'信息型', meta:'how-to' }, seo:{ state:'ready', score:78, signals:[ { icon:'target', label:'机会分', v:'78 / 100', meta:'高潜力', ok:true }, { icon:'doc', label:'竞争页', v:'前 10 有 3 篇 < 1,000 词', meta:'可超越' }, { icon:'list', label:'相关长尾', v:'18 个 · 合计 9.1k/月', meta:'Ahrefs' }, { icon:'help', label:'People Also Ask', v:'6 个问题', meta:'纳入小标题' }, ] }, article:{ state:'ready', status:'草稿', title:'冷邮件个性化的 7 个真实做法(含模板)', words:1850, sections:6, score:5, outline:['什么才算真正的个性化','为什么 {FirstName} 不算','7 个可复制的钩子','把调研规模化的方法','别毁了送达率','即用模板','结语 + CTA'] } }, { id:2, kw:'outbound 序列模板', vol:'1.1k', kd:35, intent:{ v:'信息型', meta:'模板' }, seo:{ state:'ready', score:71, signals:[ { icon:'target', label:'机会分', v:'71 / 100', meta:'中高', ok:true }, { icon:'doc', label:'竞争页', v:'多为工具落地页', meta:'内容缺口' }, { icon:'list', label:'相关长尾', v:'12 个 · 合计 4.3k/月', meta:'Ahrefs' }, ] }, article:{ state:'ready', status:'草稿', title:'5 套高回复 outbound 序列模板(可直接抄)', words:1620, sections:5, score:6, outline:['好序列的 3 个原则','模板一:创始人对创始人','模板二:触发事件','模板三:内容钩子','如何改写成你的语气'] } }, { id:3, kw:'邮箱送达率 提升', vol:'3.2k', kd:58, intent:{ v:'信息型', meta:'指南' }, seo:{ state:'loading' }, article:{ state:'queued' } }, { id:4, kw:'lead 富化 工具对比', vol:'890', kd:48, intent:{ v:'商业型', meta:'对比' }, seo:{ state:'ready', score:64, signals:[ { icon:'target', label:'机会分', v:'64 / 100', meta:'中等' }, { icon:'doc', label:'竞争页', v:'前 10 多为 listicle', meta:'需做对比表' }, { icon:'list', label:'相关长尾', v:'9 个 · 合计 2.1k/月', meta:'Ahrefs' }, ] }, article:{ state:'ready', status:'待复核', title:'2026 年 8 款 lead 富化工具横评', words:2240, sections:8, score:4, outline:['评测维度','逐款拆解','对比表','怎么选','常见问题'] } }, { id:5, kw:'AI 写冷邮件', vol:'5.6k', kd:66, intent:{ v:'信息型', meta:'how-to' }, seo:{ state:'queued' }, article:{ state:'queued' } }, { id:6, kw:'GTM 增长策略', vol:'4.1k', kd:72, intent:{ v:'信息型', meta:'宽泛' }, seo:{ state:'ready', score:38, signals:[ { icon:'target', label:'机会分', v:'38 / 100', meta:'竞争过高', faint:true }, { icon:'doc', label:'竞争页', v:'前 10 全是 DR80+ 大站', meta:'暂不建议' }, ] }, article:{ state:'none', reason:'机会分过低' } }, { id:7, kw:'B2B 邮件主题行', vol:'720', kd:29, intent:{ v:'信息型', meta:'清单' }, seo:{ state:'ready', score:83, signals:[ { icon:'target', label:'机会分', v:'83 / 100', meta:'高潜力', ok:true }, { icon:'doc', label:'竞争页', v:'低权重站为主', meta:'易超越' }, { icon:'list', label:'相关长尾', v:'21 个 · 合计 6.4k/月', meta:'Ahrefs' }, { icon:'help', label:'People Also Ask', v:'8 个问题', meta:'纳入小标题' }, ] }, article:{ state:'ready', status:'草稿', title:'50 个高打开率 B2B 邮件主题行(按场景分类)', words:1380, sections:7, score:6, outline:['主题行为什么决定打开率','触发好奇的 5 种结构','按场景的 50 个示例','A/B 测试怎么做','避雷:触发垃圾箱的词'] } }, { id:8, kw:'销售跟进 节奏', vol:'1.8k', kd:44, intent:{ v:'信息型', meta:'how-to' }, seo:{ state:'ready', score:69, signals:[ { icon:'target', label:'机会分', v:'69 / 100', meta:'中高', ok:true }, { icon:'list', label:'相关长尾', v:'14 个 · 合计 3.7k/月', meta:'Ahrefs' }, ] }, article:{ state:'loading' } }, ]; const BRAND = { company:'Acme Growth', domain:'getacme.com', checked:'2026-05-28', oneLiner:'让每一次触达都建立在真实调研上——名单、富化、邮件、广告、内容一套做完。', audience:'B2B SaaS 的 demand gen / growth 负责人 · 50–500 人公司', pillars:[ { p:'真实的个性化', d:'每一次触达都基于一个真实、可核查的事实,而不是 {FirstName} 占位' }, { p:'省的是调研时间', d:'把数小时人肉调研压到分钟级——改善「时间」,不承诺结果' }, { p:'渠道信誉优先', d:'宁可少做,也不烧掉域名、广告账户或品牌的信誉' }, ], voice:[ { a:'实操者口吻', do:'把名单调研从 3 小时压到 8 分钟', dont:'赋能您的增长飞轮' }, { a:'用具体数字', do:'帮 Lumenote 把每月合格商机翻了一倍', dont:'显著提升转化效果' }, { a:'同行对同行', do:'承认增长很难、个性化做不好就废', dont:'居高临下教别人做增长' }, ], vocabUse:['触达','钩子 / 切入点','渠道健康','调研时间','合格商机'], banned:[ '无法证实的「最高 / 唯一 / 第一」', '任何质量 / 结果保证(如「保证约到会议」)', '贬低竞品(如「比 Apollo 强 3 倍」)', '企业套话:「在当今快节奏的世界」', ], proof:[ { f:'帮 Lumenote 把每月合格商机翻了一倍', src:'案例页 · 客户授权', ok:true }, { f:'名单调研时间中位数 3.2h → 8min', src:'内部 412 次运行', ok:true }, { f:'「被 1,200+ 团队使用」', src:'首页 · 仅一处来源', ok:false }, ], example:{ off:'我们是行业领先的 AI 增长平台,保证帮您把转化提升 65%。', on:'我们把名单调研从几小时压到几分钟——结果取决于你的钩子,但至少调研不再是瓶颈。', }, }; const PERSONA = { name:'Mira Chen', first:'Mira', role:'Co-founder & Head of Growth · Acme Growth', email:'mira@get.acme.com', tagline:'好的增长像同行帮同行,不像供应商群发。', arc:[ { co:'Stripe', role:'增长团队 · 4 年', note:'做 self-serve onboarding,盯增长漏斗究竟在哪一步漏' }, { co:'Lumenote', role:'首位增长负责人', note:'把冷启动获客从 0 做成稳定管道——靠钩子不靠量' }, { co:'Acme Growth', role:'联合创始人', note:'因为自己一次次撞同一堵「调研墙」而做' }, ], voice:{ sentence:'短句、常小写开头、用缩写(i\'d / we\'re)、几乎不用感叹号', sample:'增长里无聊的那部分——调研——才是信任长出来的地方。', }, hooks:[ { line:'在 Stripe 增长团队待了四年,盯着增长漏斗究竟在哪一步漏。', why:'实操可信度', ok:true }, { line:'做 Acme 是因为我们自己一次次撞上同一堵调研墙。', why:'起源 / 共情', ok:true }, { line:'在 Lumenote 把冷启动获客从 0 做成稳定管道——靠钩子,不靠量。', why:'结果可信度', ok:true }, ], notDo:[ '不连用一堆「我 / 我们」开头', '不堆 hype 词(革命性 / 颠覆)', '不写论文长度——四到六行封顶', '不假装熟("老朋友"式套近乎)', ], sig:'— Mira Chen\nCo-founder @ Acme Growth\ngetacme.com', }; const COMPOSE = { lead:{ name:'Dana Okoye', co:'Northbeam', role:'Head of Growth', email:'dana@northbeam.io', emailStatus:'verified', why:'三月发了一篇复盘「B 轮之后如何重搭 outbound 栈」,正好踩在我们解决的问题上。', hook:'她那篇博客写「个性化做不好,再多量也是噪音」—— 几乎就是我们的产品论点。', verify:[ { f:'B 轮 · $42M', src:'Crunchbase', date:'5/28', ok:true }, { f:'博客原句', src:'northbeam.io/blog', date:'5/28', ok:true }, ] }, draft:{ subject:'你那篇 outbound 复盘', lines:[ { role:'称呼', text:'hey Dana,', plain:true }, { role:'破冰 · 真实观察', kind:'hook', text:'你三月那篇复盘里「个性化做不好,再多量也是噪音」,是我今年看到把 outbound 说得最准的一句。' }, { role:'价值 · 当定位讲', kind:'hedge', text:'我们做的正好是这块,所以我猜你们 B 轮后铺量,调研那一步大概越来越难保持质量。' }, { role:'价值 · 具体数字', kind:'value', text:'我们把名单调研从几小时压到分钟级——改善的是时间,不是替你保证回复率。' }, { role:'CTA · 一句能答', kind:'cta', text:'好奇——调研时间现在是你盯的指标,还是还在噪音里?' }, { role:'签名', text:'— Mira', plain:true }, ], words:78, }, checks:[ { t:'钩子真实且专属', ok:true, d:'引用她本人博客原句' }, { t:'CTA 是「回一句」而非约会', ok:true, d:'以问题收尾' }, { t:'判断已对冲', ok:true, d:'用「我猜 / 大概」' }, { t:'粗体事实已核查', ok:true, d:'B 轮 $42M 已对 Crunchbase' }, { t:'未触禁用声明', ok:true, d:'无「保证回复率」' }, { t:'首封无链接 / 附件', ok:true, d:'保护送达率' }, ], offExample:'Hi Dana,希望你一切都好!我们是行业领先的 AI 外联平台,想约 15 分钟聊聊如何帮你把回复率提升 65%。', }; const KPIS = [ { label:'已发送', num:'412', unit:'', spark:[30,50,40,70,60,80,90], delta:null }, { label:'打开率', num:'38', unit:'%', spark:[40,50,45,60,55,62,70], delta:{dir:'up', v:'+4PP'} }, { label:'回复率', num:'12', unit:'%', spark:[20,30,25,35,40,50,55], delta:{dir:'up', v:'+1PP'} }, { label:'会议预约', num:'18', unit:'', spark:[15,25,35,40,50,60,75], delta:{dir:'up', v:'$0.92/封'} }, ]; const TOP_OPENERS = [ { tpl:'"看到你们刚 {融资}——"', uses:87, reply:'22%', best:true }, { tpl:'"{主页 H1} 让我想到——"', uses:54, reply:'14%' }, { tpl:'"用过 {竞品} 做 outbound 吗?"', uses:39, reply:'9%' }, ]; const ANOMALIES = [ { t:'序列 B 邮件触发 spam 词', kind:'warn', action:'查看' }, { t:'5 个回复未分配责任人', kind:'info', action:'分配' }, { t:'序列 C 已 7 天无新数据', kind:'info', action:'检查' }, ]; const FUNNEL = [ { l:'1,240 名单', w:100, c:'' }, { l:'991 富化完成 · 80%', w:84, c:'' }, { l:'872 邮箱可发 · 70%', w:72, c:'a1' }, { l:'412 已发送 · 33%', w:46, c:'a2' }, { l:'157 打开 · 13%', w:28, c:'a2' }, { l:'49 回复 · 4%', w:16, c:'a3' }, { l:'18 会议', w:8, c:'a3' }, ]; const INBOX_CATS = [ { key:'hot', label:'热点', count:8, ico:'flame' }, { key:'meet', label:'要排会', count:12, ico:'calendar' }, { key:'q', label:'问细节', count:9, ico:'help' }, { key:'later', label:'暂不需', count:6, ico:'clock' }, { key:'no', label:'拒绝', count:5, ico:'x' }, { key:'angry', label:'语气重', count:1, ico:'alert' }, { key:'auto', label:'OOO/自动', count:6, ico:'bot' }, ]; const REPLIES = [ { id:1, who:'Dana Okoye', co:'Northbeam', email:'dana@northbeam.io', t:'2m', cat:'要排会', hot:true, unread:true, snippet:'感兴趣,下周二 9am PT 可以吗?发个日历过来。', aiNote:'草稿已准备 · 待发', arr:'$24k ARR · 上次接触 2 天前', thread:[ { dir:'out', when:'2 天前', text:'看到 Northbeam 三月刚关掉 B 轮——恭喜。我们帮 demand gen 团队把调研时间砍到 5%…' }, { dir:'in', when:'2 分钟前', text:'感兴趣,下周二 9am PT 可以吗?发个日历过来。' }, ], draft:'Dana,\n太好了 — 下周二 6/3 9–9:30am PT 我这边能约,cal.com/mira/30 上选个点?\n顺手发一下我们刚帮 Lumenote 做的 case study 作为背景。\n— Mira', conf:0.94 }, { id:2, who:'Karima Sefton', co:'Vertex Flow', email:'karima@vertexflow.com', t:'12m', cat:'问细节', unread:true, snippet:'你们是现有 outbound 工具的插件,还是独立产品?现在用 Apollo + Smartlead。', aiNote:'草稿已准备 · 待复核', arr:'潜在 · 种子轮公司', conf:0.88 }, { id:3, who:'Anya Petrova', co:'Retabl', email:'anya@retabl.com', t:'38m', cat:'语气重', snippet:'请不要再发了,你们到底怎么拿到我邮箱的?', aiNote:'已加 suppression · 起草道歉', arr:'已停止序列', flag:true, conf:0.86 }, { id:4, who:'Jonah Reyes', co:'Driftwood', email:'jonah@driftwood.com', t:'2h', cat:'热点', hot:true, snippet:'哈哈,Adobe 那件事你也听说了——我们正好在重新评估 outbound 栈。', aiNote:'草稿已准备 · 待发', arr:'$60k ARR 机会', conf:0.83 }, { id:5, who:'Mei Tanaka', co:'Lumenote', email:'mei@lumenote.app', t:'1h', cat:'OOO/自动', snippet:'休假中,6/15 回办公室,紧急事项请联系 ops@…', aiNote:'已 snooze 到 6/16', arr:'自动回复', conf:0.99 }, ]; const FLEET_AGG = [ { label:'送达率 · 今', num:'98.4', unit:'%' }, { label:'BOUNCE · 阈值 3%', num:'0.8', unit:'%' }, { label:'垃圾箱率 · 估算', num:'12.4', unit:'%' }, { label:'需关注', num:'3', unit:'' }, ]; const MAILBOXES = [ { addr:'mira', domain:'get.acme.com', name:'Mira Chen', status:'ok', cap:'120/150', deliver:'99.1%', spam:'0.8%', bounce:'0.4%', warm:100 }, { addr:'sam', domain:'get.acme.com', name:'Sam Lin', status:'ok', cap:'118/150', deliver:'98.2%', spam:'1.2%', bounce:'0.6%', warm:100 }, { addr:'jay', domain:'try.acme.com', name:'Jay Kovač', status:'warn', warnText:'垃圾箱高', cap:'50/50', deliver:'94.0%', spam:'28%', spamHot:true, bounce:'0.4%', warm:100 }, { addr:'ari', domain:'try.acme.com', name:'Ari Zaman', status:'warming', warmText:'预热 D8', cap:'40/40', deliver:'97.0%', spam:'5.2%', bounce:'0.0%', warm:40 }, { addr:'leo', domain:'hi.acme.com', name:'Leo Fonseca', status:'warming', warmText:'预热 D14', cap:'80/80', deliver:'98.5%', spam:'2.1%', bounce:'0.0%', warm:70 }, { addr:'ben', domain:'mail.acme.com', name:'Ben Park', status:'err', warnText:'DKIM 未配', cap:'—', deliver:'—', spam:'—', bounce:'—', warm:0 }, { addr:'noah', domain:'hey.acme.com', name:'Noah Klein', status:'warn', warnText:'bounce 高', cap:'0/50', deliver:'—', spam:'—', bounce:'7.2%', bounceHot:true, warm:0 }, ]; const SUPP_LISTS = [ { key:'all', label:'全局黑名单', count:'4,289', ico:'ban', on:true }, { key:'unsub', label:'退订', count:'1,247', ico:'mail' }, { key:'bounce', label:'硬退', count:'892', ico:'x' }, { key:'spam', label:'spam 举报', count:'14', ico:'alert' }, { key:'manual', label:'手动', count:'218', ico:'hand' }, { key:'cust', label:'现有客户', count:'1,082', ico:'building' }, { key:'comp', label:'竞品域名', count:'89', ico:'target' }, { key:'team', label:'同事/自己', count:'47', ico:'users' }, ]; const SUPP_ROWS = [ { who:'anya@retabl.com', type:'手动', tk:'red', src:'回复二审', when:'2 天前', scope:'全局', note:'语气严重 · 二审标记' }, { who:'@datadog.com', type:'域', tk:'', src:'手动', when:'1 周前', scope:'全局', note:'现有客户' }, { who:'noah@hey.acme.com', type:'硬退', tk:'', src:'自动', when:'5 小时前', scope:'全局', note:'550 No such user' }, { who:'@apollo.io', type:'域', tk:'', src:'手动', when:'1 个月前', scope:'全局', note:'竞品' }, { who:'karima@vertexflow.com', type:'退订', tk:'amber', src:'脚注点击', when:'3 天前', scope:'仅序列 A', note:'点击 unsubscribe' }, { who:'@stripe.com', type:'域', tk:'', src:'HubSpot 同步', when:'2 周前', scope:'全局', note:'现有 ARR > 0' }, ]; // ---- per-lead email SEQUENCES (rendered as one "邮件" column; // click a cell to open the sequence — first email + planned follow-ups) ---- const DRAFTS = { 1: { state:'ready', emails:[ { step:'首封', when:'立即', status:'草稿', subject:'你那篇 outbound 复盘', words:78, checks:6, lines: COMPOSE.draft.lines }, { step:'跟进 1', when:'+3 天 · 未回复时', status:'计划', subject:'re: 你那篇 outbound 复盘', words:46, checks:6, lines:[ { role:'称呼', text:'Dana,', plain:true }, { role:'破冰 · 续上', kind:'hook', text:'上封提到调研那步——我把我们帮 Lumenote 做的拆解整理了一页。' }, { role:'CTA · 一句能答', kind:'cta', text:'要我发过来吗?一句话回我就行。' }, { role:'签名', text:'— Mira', plain:true }, ] }, { step:'跟进 2', when:'+7 天 · 收尾', status:'计划', subject:'最后一封,就不打扰了', words:33, checks:5, lines:[ { role:'称呼', text:'Dana,', plain:true }, { role:'收尾', kind:'hedge', text:'这封之后我就不再追了——时机不对完全理解。' }, { role:'CTA · 留口子', kind:'cta', text:'下季度想聊随时回这封即可。' }, { role:'签名', text:'— Mira', plain:true }, ] }, ] }, 2: { state:'ready', emails:[ { step:'首封', when:'立即', status:'草稿', subject:'把笔记变成行动', words:71, checks:6, lines:[ { role:'称呼', text:'hey Theo,', plain:true }, { role:'破冰 · 真实观察', kind:'hook', text:'你们 PH 发布那天讲「把笔记变成行动」的 GTM,我盯了一整天那条讨论串。' }, { role:'对冲判断', kind:'hedge', text:'我猜 A 轮之后,你得同时铺量又保住每封信的质量,挺难两全。' }, { role:'价值 · 数字', kind:'value', text:'我们把名单调研从几小时压到分钟级——时间省下来,质量才有空间。' }, { role:'CTA · 一句能答', kind:'cta', text:'好奇你们现在调研一个潜客大概花多久?' }, { role:'签名', text:'— Mira', plain:true }, ] }, { step:'跟进 1', when:'+3 天 · 未回复时', status:'计划', subject:'re: 把笔记变成行动', words:40, checks:6, lines:[ { role:'称呼', text:'Theo,', plain:true }, { role:'破冰 · 续上', kind:'hook', text:'顺手发你一个:我们怎么把一个潜客的调研压到 8 分钟。' }, { role:'CTA · 一句能答', kind:'cta', text:'有用的话我们聊 15 分钟?' }, { role:'签名', text:'— Mira', plain:true }, ] }, ] }, 3: { state:'loading' }, 4: { state:'ready', emails:[ { step:'首封', when:'立即', status:'草稿', subject:'给工程团队的发布管线', words:74, checks:6, lines:[ { role:'称呼', text:'hey Mikael,', plain:true }, { role:'破冰 · 真实观察', kind:'hook', text:'Show HN 上你写「一周手动发 200 封冷邮」,那条我印象很深。' }, { role:'对冲判断', kind:'hedge', text:'种子轮阶段你大概还在亲自做外联,量一上来手动就崩了。' }, { role:'价值 · 数字', kind:'value', text:'我们帮创始人把调研自动化——还是你写的钩子,只是不用人肉查。' }, { role:'CTA · 一句能答', kind:'cta', text:'现在一封冷邮从调研到发出,大概几分钟?' }, { role:'签名', text:'— Mira', plain:true }, ] }, { step:'跟进 1', when:'+4 天 · 未回复时', status:'计划', subject:'re: 给工程团队的发布管线', words:38, checks:6, lines:[ { role:'称呼', text:'Mikael,', plain:true }, { role:'破冰 · 续上', kind:'hook', text:'我录了 90 秒,演示怎么把一条线索从域名到草稿一键跑完。' }, { role:'CTA · 一句能答', kind:'cta', text:'发你链接看看?' }, { role:'签名', text:'— Mira', plain:true }, ] }, ] }, 5: { state:'ready', emails:[ { step:'首封', when:'立即', status:'草稿', subject:'C 轮之后的增长压力', words:80, checks:5, lines:[ { role:'称呼', text:'hey Sasha,', plain:true }, { role:'破冰 · 真实观察', kind:'hook', text:'「电商增长操作系统」这个定位野心很大,C 轮之后压力估计都压你身上。' }, { role:'对冲判断', kind:'hedge', text:'我猜铺量的同时,个性化是最先被牺牲的那块。' }, { role:'价值 · 数字', kind:'value', text:'我们把调研压到分钟级,帮同类公司把回复率做到 18%——靠钩子不靠量。' }, { role:'CTA · 一句能答', kind:'cta', text:'你们现在 outbound 的瓶颈是个性化还是送达?' }, { role:'签名', text:'— Mira', plain:true }, ] }, ] }, 6: { state:'queued' }, 7: { state:'ready', emails:[ { step:'首封', when:'立即', status:'草稿', subject:'安全默认开启', words:73, checks:6, lines:[ { role:'称呼', text:'hey Ravi,', plain:true }, { role:'破冰 · 真实观察', kind:'hook', text:'上周读了 Halcyon 博客那篇 outbound 数据合规,「安全默认开启」很对味。' }, { role:'对冲判断', kind:'hedge', text:'B 轮之后要规模化外联,合规和个性化常常打架。' }, { role:'价值 · 数字', kind:'value', text:'我们本地直连、名单数据不外传,调研还是分钟级。' }, { role:'CTA · 一句能答', kind:'cta', text:'你们现在外联数据这块谁在盯?' }, { role:'签名', text:'— Mira', plain:true }, ] }, { step:'跟进 1', when:'+5 天 · 未回复时', status:'计划', subject:'re: 安全默认开启', words:36, checks:6, lines:[ { role:'称呼', text:'Ravi,', plain:true }, { role:'破冰 · 续上', kind:'hook', text:'附上我们的 DPA 和数据流向图,方便你们安全团队过一眼。' }, { role:'CTA · 一句能答', kind:'cta', text:'要的话直接回我。' }, { role:'签名', text:'— Mira', plain:true }, ] }, ] }, 8: { state:'none', reason:'缺邮箱' }, }; window.DATA = { COLUMNS, PLATFORMS, CHANNEL_RECS, CTX_UPDATE, LEADS, TABLE_STATUS, BRAND, PERSONA, COMPOSE, DRAFTS, TEMPLATES, WORKSPACES, SEO_CHECKS, SEO_ROWS, KPIS, TOP_OPENERS, ANOMALIES, FUNNEL, INBOX_CATS, REPLIES, FLEET_AGG, MAILBOXES, SUPP_LISTS, SUPP_ROWS, };