AI PLAY玩法更新持续收录
← 回到更新流

2026-10-01 · 原文发布日

律所咨询邮件自动分流:利益冲突与期限检查

面向律所的n8n流程:监听Gmail的intake标签新邮件,用Claude提取当事人、案件类型和关键日期,再从Google Sheets读取冲突名单做代码级比对,命中就往Slack发提醒;同时按案件类型核对时效,疑似过期则转律师复核。未过期的咨询由Claude生成内部简报(要点、缺失信息、建议电话问题)发到Slack频道,并给来信人回固定确认、写入台账表格。硬性规则跑在代码节点而非模型里,便于审计。

原文要点

原模板监听Gmail中含intake标签的未读邮件(也可手动跑样例测试),用Anthropic Claude提取当事人、案件类型和关键日期;再从Google Sheets读冲突名单,在代码节点做可审计的名称比对,命中则发Slack暂扣提醒并记录;按案件类型的时效规则在代码中筛查关键日期,疑似过期转律师复核且不回复来信人;未过期事项由Claude生成仅限内部的分流简报(摘要、关键事实、缺失信息、电话问题、复核人、优先级),标记疑似法律意见的行,发Slack频道、回复固定确认、写入Intake log。三个硬停止跑在代码节点而非模型里,时效期间仅为示例,须律师确认。

这次做成什么

用合成邮件和合成冲突名单,在n8n里跑通「提取—冲突比对—时效筛查—内部简报—固定回复—写台账」的律所咨询分流练习,重点理解为什么硬性规则要放代码节点。

准备什么

  • n8n实例及Gmail、Google Sheets、Slack、Anthropic四类凭据
  • 一个Gmail账号并建好名为intake的标签
  • 一个Google Sheets文件,含Conflicts、Checklists、Intake log三个标签页
  • Slack工作区及一个用于接收分流简报的频道
  • Anthropic API密钥,可调用Claude聊天模型

具体怎么做

  1. 建三张配置表

    在Google Sheets新建文件,建Conflicts页(列:name、aliases)、Checklists页(列:matter_type、questions、reviewer)、Intake log页(列:received_at、sender、subject、matter_type、outcome、notes)。Conflicts页填入下方合成CSV。记下Sheet ID填入流程的firm settings。

  2. 配Gmail触发与提取节点

    Gmail Trigger设为监听含intake标签的未读邮件,查询条件与你实际打标签的方式一致。后接规范化节点整理sender、subject、body,再接Claude节点,使用下方提取提示词,输出结构化JSON(parties、matter_type、key_date)。

  3. 放代码级冲突检查

    在Claude节点之后加n8n的Code节点,粘贴下方比对代码:读取Conflicts表内容,对提取到的当事人名做大小写与空格归一化后比对,命中任一名字或别名即把outcome置为conflict_hold。命中分支连Slack提醒节点和写台账节点,且不走回复。

  4. 加时效筛查与简报分支

    在代码节点里按matter_type查时效规则表(示例:人身伤害2年、合同纠纷4年),key_date距今超过期限则outcome置为limitation_review,发Slack律师复核提醒,不回复。未过期分支让Claude读Checklists中对应问题清单生成内部简报,发Slack、对真实邮件回复固定确认语、追加Intake log行。

  5. 端到端测试

    手动给一封测试邮件打上intake标签后触发流程:先测命中冲突名的一封,确认只发Slack暂扣不回复;再测未过期正常咨询一封,确认Slack简报、固定回复和台账行三者都出现。

可直接复制的材料

咨询邮件要素提取提示词(本站编写)

本站独立编写,matter_type取值范围需与Checklists表中的类型名一一对应

从下面的法律咨询邮件中提取结构化信息,只输出JSON:
{"parties":["当事人姓名"],"matter_type":"案件类型","key_date":"YYYY-MM-DD或null"}
matter_type只能从以下取值:personal_injury、contract_dispute、employment、real_estate、other。
key_date指事件发生或损害发生日期,邮件里没有明确日期就填null,不要猜测。
邮件正文:{{ $json.body }}

冲突比对代码节点(本站编写)

节点引用名$('Google Sheets')需改成你流程中读冲突表节点的实际名称;此为纯字符串精确比对,模糊匹配需另加规则

// n8n Code节点,输入项需包含提取的parties数组与Conflicts表行
const items = $input.all();
const extracted = items[0].json.parties || [];
const conflicts = $('Google Sheets').all(); // 指向读Conflicts表的节点
const norm = s => String(s).toLowerCase().replace(/\s+/g, ' ').trim();
const hits = [];
for (const p of extracted) {
  for (const row of conflicts) {
    const names = [row.json.name, ...(String(row.json.aliases || '').split(';'))].filter(Boolean);
    if (names.some(n => norm(n) === norm(p))) hits.push({ party: p, matched: row.json.name });
  }
}
return [{ json: { conflict_hit: hits.length > 0, hits, outcome: hits.length > 0 ? 'conflict_hold' : 'clear' } }];

Conflicts表合成示例数据

本站虚构合成名单,别名用分号分隔以配合上方代码解析

name,aliases
恒远建材有限公司,恒远建材;HY Building Materials
陈志明,陈生;Zhiming Chen
蓝湾置业集团,蓝湾置业;Blue Bay Realty

输入与输出示例

本站虚构演示,非实际调用Claude的结果;conflict_hit由代码节点确定性产生

输入

合成咨询邮件正文:「您好,我是李文,2026年7月12日在恒远建材有限公司的仓库摔伤,对方至今未赔偿,想咨询起诉事宜。」

对应输出

{"parties":["李文","恒远建材有限公司"],"matter_type":"personal_injury","key_date":"2026-07-12"},随后代码节点输出{"conflict_hit":true,"outcome":"conflict_hold"},流程只发Slack暂扣提醒、不回复来信人

做完检查这些

  • 含冲突方名字的合成邮件触发后只产生Slack暂扣提醒和台账行,Gmail回复节点不执行
  • key_date超过示例时效的合成邮件进入limitation_review分支且不给来信人回复
  • 正常咨询邮件在Slack频道出现含摘要、缺失信息、电话问题的格式化简报
  • 每封处理过的邮件都在Intake log页追加一行且outcome字段有值

容易卡住的地方

  • 原文明确说明时效期间仅为示例,上线前必须由执业律师确认本辖区规则
  • Claude提取的当事人名可能有拼写变体,纯精确比对会漏,别名表要维护完整
  • Gmail触发查询与标签习惯不一致会导致漏收,打标签流程要先统一
  • 固定确认语只应发给真实邮件,手动测试样例要排除以免误发
  • 本流程是分流辅助而非法律意见,简报中疑似建议性语句需人工复核

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Triage law firm intake emails with Gmail, Slack, Google Sheets, and Claude
原作者
Amplence
原始发布日期
2026-10-01T10:11:21.968Z
来源
https://n8n.io/workflows/20282