我构建了这个AI发票自动化工作流程,因为转发的发票邮件很混乱,重复发生,财务错误代价高昂。在这个案例研究中,我将展示如何使用一个狭窄的Hermes代理配置来读取发票邮件、验证PDF、去重条目、匹配顾问和项目,并仅在每个检查通过时创建或更新Perfex CRM费用。我使用AI发票自动化来加快无聊的部分,但我保持决策门槛严格。
目标不是完全自主的财务。目标是具有确定性检查、可审计性和人工升级的受控财务自动化。如果你想要速度而不在CRM中发布错误的费用,这一点很重要。
为什么我构建了这个AI发票自动化代理
手动工作流程问题
发票处理看起来简单,直到你在真实公司中运行它。邮件被转发,PDF通过链接到达,同一发票被发送两次,顾问账单通常只包含足够的上下文来混淆通用助手。
我一次又一次看到相同的失败模式:发件人名称与真实供应商不匹配、参考字段指向一个人而不是公司,以及如果你只信任未读邮件,重复转发看起来是新的。盲目自动化这些,你将创建错误的费用并浪费时间清理它们。
这就是为什么我将这个AI发票自动化设置构建为一个保守的操作系统,而不是一个聪明的聊天机器人。它有一个任务:安全地处理发票,并在某些事情看起来不确定时停止。
代理需要解决的问题
代理必须做的不仅仅是提取金额。它需要决定邮件是否包含真实的发票,PDF是否有效,条目是否已存在,它是否属于现有顾问费用,以及Perfex CRM是否应该接收新记录或更新。
它还需要记忆。不是关于所有事物的原始记忆,而是关于模式的结构化记忆:某些供应商如何开具发票,顾问如何标记参考,以及哪些项目通常接收哪些费用。这就是向量记忆变得有用的地方。它有助于匹配,但它永远不会推翻实时参考字段或经过验证的重复检查。
系统概述
Hermes代理配置和职责
我通过一个名为`optagonen-ekonomi`的专用Hermes配置运行这个工作流程。我故意将范围保持在狭窄的目的上。它处理收件箱监控、发票解析、PDF/OCR检查、去重、Perfex CRM费用处理、附件验证和Telegram报告。它不处理SEO、外展、社交媒体或开发工作。
这种狭窄的范围比一个通用助手处理所有事情更安全。在实践中,这就是我写关于如何设计狭窄AI代理→的原因:较小的代理以较少的方式失败,当它们失败时,故障更容易追踪。
这对AI发票自动化很重要,因为财务工作在没有证据的情况下惩罚自信。狭窄的Hermes配置给我一个受控的通道,而不是一个模糊的“做所有事情”的助手。
邮件摄取、PDF检查、CRM同步和报告流程
该过程从一个监视邮箱的程序开始,检查一个有限的最近IMAP UID窗口。我不单单依赖未读状态,因为其他摄取流程可以将邮件标记为已读。相反,我在做任何其他事情之前,将每个候选者与本地去重状态和实时CRM/参考状态进行比较。
从那里,代理读取邮件正文,提取发票信号,验证PDF,检查重复,将发票映射到正确的目标,然后仅在数据一致时写入Perfex CRM。整个循环自然适合更广泛的自动化堆栈,这就是为什么这个项目与我的AI自动化生态系统CRM构建→连接良好的原因。
我还围绕基于工具的检查而不是模糊推理设计了代理。如果你想要实现这种思维方式,我建议考虑实用代理工具架构→。确定性工具是使代理值得信赖的关键。
发票邮件解析
哪些邮件信号重要
AI发票自动化在信任错误信号时会失败。发件人地址很重要,但这还不够。主题行有帮助,但也不够。正文文本和发票本身携带真实的决策数据。
最重要的字段是发票号码、金额、日期、供应商身份和发票参考。在我的工作流程中,`Er referens`字段在决定费用属于谁或什么时比发件人名称更重要。我不断重复这一点,因为它可以防止最常见的财务自动化错误。
这听起来微不足道。其实并非如此。供应商或中介可以代表顾问转发发票,如果你只信任发件人,你将把费用附加到错误的人或项目上。
提取供应商、金额、日期和参考数据
我将解析视为一个结构化提取问题,而不是自由格式的摘要任务。代理首先读取邮件正文,然后寻找发票元数据,然后将PDF文本或OCR输出与邮件声明进行交叉检查。
工作流程专注于几个稳定的字段:
如果正文说一件事而PDF说另一件事,代理就会停止。如果参考字段缺失或模糊,代理就会停止。如果金额与实时上下文不匹配,代理就会停止。
这种保守性是安全AI发票自动化的核心。
PDF发票验证
基本验证检查
仅仅因为存在链接,PDF并不有效。我在代理在Perfex CRM中创建任何内容之前验证实际文件。该文件必须是真正的PDF,而不是HTML,不是登录页面,也不是损坏的下载响应。如果文件不以`%PDF`开头,我将其视为不可信并停止。
我还检查PDF是否来自邮件作为附件或来自经过验证的公共下载链接。如果链接需要登录、过期、重定向到HTML或返回非PDF文件,工作流程会要求人工审核,而不是猜测。这个规则节省了后面的时间,因为它首先将坏记录排除在CRM之外。
检测格式错误、缺失或可疑的发票
我不假设每个附加文档都是发票。除非人类明确要求,否则我使用实际的发票PDF,而不是规格附件。当供应商在同一线程中包含宣传册、订单确认或重复PDF时,这一点很重要。
该文件必须完整到足以支持真实的会计决策。如果金额缺失、参考不清晰或供应商身份与邮件正文不匹配,代理就会停止。AI发票自动化在拒绝即兴发挥时效果最佳。
一个简单的规则保持工作流程的安全:
这在设计上是保守的。这也是保持过程可审计的原因。
去重策略
按发票号码、金额、供应商和日期匹配
重复发票是自动化快速变得昂贵的地方。我不单单依赖未读邮件或消息ID,因为其他摄取流程可以将邮件标记为已读。相反,代理检查一个有限的最近IMAP UID窗口,将其与本地状态进行比较,并在创建任何内容之前检查实时Perfex/参考上下文。
去重逻辑查看常见的发票标记:供应商、发票号码、金额和日期。如果这些信号指向现有记录,代理将该邮件视为重复,除非人类需要更新。
这个过程是实用AI发票自动化的核心。它减少了重复工作,而不假装邮箱是一个干净的真实来源。
处理近重复和重复转发
转发的发票即使不是也常常看起来是新的。一位同事从不同的线程转发相同的PDF。供应商以新的主题行发送相同的发票。顾问回复时附上更正的说明,但文件相同。
我通过检查实时CRM数据、本地去重状态和已知发票模式的组合来处理这些情况。向量记忆在这里有帮助,但仅作为上下文。它不能推翻经过验证的重复检查,也不能在证据薄弱时发明匹配。
规则很简单:如果系统无法证明它是新的,它必须假设它不是新的。
匹配顾问和项目
将发票上下文映射到正确的费用目标
这就是参考字段最重要的地方。我总是先读取邮件正文和发票字段`Er referens`,然后再选择所有者、人员或项目。仅凭发件公司是不够的。
这个教训来自于一次真实的纠正。一张顾问发票最初匹配了错误的人,因为供应商和发件人暗示了Black Moose/Eventcenter,而发票参考指向了Alex。我纠正了工作流程,使得带有`Sotenäs V20 Alex`或`Oxelösund V19 Alex`等参考的发票附加到Alex Jassim的现有费用,而不是Black Moose,即使法律供应商看起来不同。
这强烈表明了为什么AI发票自动化需要可审计性和记忆纠正。记忆可以帮助你学习模式,但发票参考仍然是胜者。
当信心低时的后备规则
当信心低时,我不猜测。我停止并请求审核。这通常发生在供应商未知、类别不明确、项目缺失、金额不一致或发票参考与发件人假设冲突时。
向量记忆帮助我识别重复出现的模式,如自家公司发票、Bokio链接、财务中介、Eventcenter/Black Moose和顾问特定习惯。然而,它仅仅是提供信息。它从不推翻明确的发票数据。
如果你自己构建AI发票自动化,这就是需要记住的规则:
创建和更新Perfex CRM费用
费用创建工作流程
我仅在代理通过验证、去重和匹配检查后创建新的Perfex CRM费用。这包括验证实时记录上下文、确认PDF附件,并确保金额和供应商符合目标。
工作流程还遵循Optagonen的会计规则。金额通常以不含增值税的方式进入Perfex,系统使用25%的增值税,税号为1,除非保存的供应商规则另有说明。默认费用日期遵循即将到来的瑞典银行日和SEB例程,而不是发票日期。
这听起来可能在操作上微不足道,但这些默认设置消除了很多手动清理。
已知发票的更新逻辑
AI发票自动化不应将每张发票视为全新的对象。对于顾问发票,我首先尝试匹配现有的项目可见Perfex费用,并附加或更新它,而不是创建重复费用。
这种区别很重要。新费用会创建一个新的会计事件。更新则通过更好的参考数据、经过验证的PDF附件或更正的项目链接来改善现有的费用。如果系统已经知道费用,更新它比重复创建更安全。
审计跟踪和可追溯性
我总是想在以后回答同一个问题:为什么代理创建或更新了这个记录?如果我无法将该决策追溯到邮件、PDF、参考字段和实时Perfex状态,那么工作流程就太松散了。
这就是为什么AI发票自动化必须端到端验证。你应该能够检查CRM记录、附加文件、去重状态和推理轨迹,而不必逆向工程代理的思维。
向量记忆以便随时间学习
存储在记忆中的内容
向量记忆帮助代理在不将其变成黑箱的情况下改善重复匹配。我用它来存储关于供应商、顾问参考、项目提示和发票处理结果的清理模式。我不需要原始发票内容或秘密来学习模式。
我使用的记忆表和工具支持一个狭窄的学习循环:什么匹配、什么失败、什么被取代,以及下一次应该发生什么。这足以改善未来的决策,而不会产生隐私或治理问题。
记忆如何改善未来的匹配和分类
当同一发票系列一次又一次出现时,记忆变得有用。一个重复的供应商可能总是从一个地址发送,但通过另一个地址开票。一个顾问可能使用特定的参考格式,映射到一个人或项目。一个已知的中介可能代表其他人转发发票。
记忆的价值并不是为了预测而预测。其价值在于减少当模式已知时的重复手动审核。在AI发票自动化中,这可以节省时间,但前提是记忆始终服从于实时证据。
这就是为什么我将向量记忆视为证据,而不是权威。保存的模式可以建议一个可能的匹配,但它不能胜过经过验证的发票参考或已知的项目可见费用。
安全的Telegram报告
代理可以自动报告的内容
Cron足以满足这个工作流程,因为我不需要毫秒级的响应时间。监视程序每两分钟运行一次,这对于内部财务操作来说足够快,而不会使系统变得嘈杂。然后,Telegram处理人机交互层。
我仅在某些事情发生变化或需要人类决策时发送消息。如果没有发生任何事情,代理保持沉默。这种沉默很重要,因为它使Telegram保持有用,而不是变成另一个噪音流。
这就是Hermes非常适合这个用例的原因之一。Hermes代理支持消息网关和Telegram工作流程,因此操作员可以将循环保持在一个简单、可观察的通道内。
编辑、总结和审批安全消息
我保持报告简短且安全。消息应说明发生了什么,验证了什么,以及需要关注的内容,而不将敏感的发票内容倾倒到聊天中。
一份好的报告告诉我:
这对于日常操作来说足够了。它给了我信心,而不会暴露超过工作流程所需的数据。
人工升级和安全规则
信心阈值
AI发票自动化不应追求完整性。它应追求正确性。我设定的标准是,代理只有在PDF真实、参考清晰、去重检查通过且费用目标合理时才能继续。
如果任何主要信号冲突,代理就会停止。这包括未知供应商、缺失或可疑的PDF、不明确的项目所有权、金额不匹配和不确定的重复。我宁愿花30秒审核一个案例,也不愿花30分钟修复错误的会计条目。
代理何时停止并请求审核
停止条件是设计的一部分,而不是错误状态。当代理无法安全继续时,它应请求审核。
这通常发生在以下情况下:
一个知道何时停止的保守财务代理比一个自信的猜测代理更好。
AI发票自动化在实践中的工作方式
我每次使用的验证循环
当代理确实创建或更新费用时,我会端到端验证结果。我不信任单一的成功信号。
这个顺序很重要,因为每一步都证明了上一步的有效性。AI发票自动化只有在记录、附件、簿记文档同步和内部状态都一致时才有价值。
簿记文档同步
最后一步不仅仅是将PDF保存在CRM中。工作流程还将经过验证的发票文件同步到用于簿记的文档结构中。这使得进行会计的人拥有与代理使用的相同证据:发票PDF、CRM费用记录、参考编号以及项目或类别上下文。
这很重要,因为AI发票自动化不仅仅是创建数据。它应准备干净、可审核的簿记支持。CRM记录解释了注册的内容,而同步的文档则为会计人员提供了正确记账所需的基础证据。
在我的验证循环中,案例在CRM费用、附加的发票文件和簿记文档同步都经过检查之前,不被视为完整。如果该同步失败,代理应报告问题,而不是假装工作流程完成。
为什么这个循环保持系统安全
许多自动化演示停留在“代理说它做了事情”上。这对财务来说是不够的。我想要CRM中的证据、文件表中的证据、簿记文件夹中的证据、记忆中的证据以及操作状态中的证据。
如果缺少一部分,我将该运行视为不完整。这保持了工作流程的可审计性,并在某些事情失败时使故障排除更快。
结果、教训和我下次想改进的内容
节省的时间和失败案例
我不将此视为完全自主的财务,因为它不是。我将其视为更安全的财务自动化,手动步骤更少,重复检查更少。最大的胜利是减少重复的发票分类,同时保持最终决策的保守性。
最大的失败案例教会了我最多:Black Moose/Alex的纠正。它证明了供应商身份可能会误导你,而`Er referens`通常指向真实的所有者或项目。我纠正了记忆,标记了错误的行为已被取代,并添加了更好的规则。
这就是在生产中构建AI发票自动化的正确方式。你保持系统狭窄,让它学习,并在现实不一致时修正记忆。
更强自动化的下一步
如果我进一步扩展,我会改善结构化验证、加强顾问匹配,并继续收紧停止条件。我还会为模糊案例保持人工审批门。
教训很简单。狭窄的范围、经过验证的文档、保守的自动化和人工升级每次都胜过华丽的自主。
安全AI发票自动化的检查清单
最好的AI代理是狭窄的、可审计的,并愿意停止。这就是这个AI发票自动化系统背后的核心教训:经过验证的文档、保守的决策和人工升级使财务工作流程安全,同时节省时间。如果你正在构建类似的东西,请使用上面的检查清单,并保持审批门的存在。
