Lapsewatch

io.github.GillMacedo由 GitHub 账号 GillMacedo 发布v0.1.0更新于 Nov 3, 2026

Find customers who stopped buying, and the revenue at risk, from an orders CSV on your machine.

已验证STDIO仅桌面数据与分析商业与电商

概览

AI 生成的概览

分析本机订单 CSV,找出有流失风险和已流失的客户,并给出年度风险营收、复购率和营收集中度。

可以做什么
  • 在订单 CSV 中找出有流失风险和已流失的客户,按优先顺序排列,并给出年度风险营收
  • 获取留存汇总指标:复购率、总营收以及头部客户贡献占比
  • 检查不熟悉的 CSV,查看识别到的列和可读取的行数,但不返回行内容
适用场景
当你手上有订单导出文件,想知道哪些客户已悄悄停止购买、应优先联系谁做挽回,或业务对少数头部客户的依赖程度时适用。
运行要求
通过 npx(Node.js)或使用 Go 1.27 及以上版本构建的 Go 二进制在本机以 stdio 运行。无需账号、API 密钥或网络访问。输入须为同一台机器上的 CSV 文件,最大 50 MB。
安装前请注意
检查工具会把客户姓名或邮箱返回给 MCP 客户端,因而会传到你所使用的 AI 模型;命令行方式则全部留在本机。结果基于每位客户自身购买节奏估算,无法说明流失原因,可能误判季节性买家、一次性买家或重复身份。目前仅用虚构数据测试,未在真实导出上验证。若据此名单发邮件,请遵守当地营销与隐私规定。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Lapsewatch,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

lapsewatch: find customers who stopped buying

[npm] [CI] [MIT license] [MCP Registry]

Customer retention and churn analysis from an orders CSV: see who's at risk, who you've lost, and how much yearly revenue is in danger. For e-commerce stores, service businesses and small B2B companies.

Keeping a customer usually costs less than finding one, but nobody notices when a regular quietly stops ordering. lapsewatch compares each customer with their own buying pattern, so someone who orders monthly is flagged sooner than someone who orders twice a year. It's an MCP server and a single Go binary, with no account, no API key and no network access.

What you can ask your agent

  • "Which customers have stopped buying?"
  • "Who should I contact first to win back revenue?"
  • "How much yearly revenue is at risk?"
  • "What's my repeat customer rate, and how much do I depend on my top customers?"

Install

As a Claude Code plugin, which adds the MCP server and a skill that tells Claude when to use it. You need Node, which runs the server through npx:

claude plugin marketplace add GillMacedo/lapsewatchclaude plugin install lapsewatch@lapsewatch-marketplace

For other MCP clients:

json
{  "mcpServers": {    "lapsewatch": {      "command": "npx",      "args": ["-y", "lapsewatch", "serve"]    }  }}

Or build the binary with Go 1.27 or newer:

go install github.com/GillMacedo/lapsewatch@latest

Usage

Without installing anything, run npx lapsewatch check orders.csv. This example uses the made-up file in examples/:

$ go run . check examples/orders.csvAs of 2026-09-27: 8 customers, 75.0% bought more than once, 14598.00 revenue, top 10% bring in 49.3%AT RISK: contact these first (2)  [email protected]  197 days since last order, usually every 60  worth 5475.00 a year  [email protected]  92 days since last order, usually every 30  worth 3771.67 a yearLOST (1)  [email protected]  297 days since last order, usually every 20  worth 1368.75 a yearONE-TIME (1)  [email protected]  397 days since their only order  spent 60.003 active, 1 new.SKIPPED row 68: no valid date, customer or amount9246.67 a year at risk from 2 customers.

Add --as-of 2026-12-31 to measure from a specific date, --top 50 to list more customers, and --json for machine-readable output.

How it decides

StatusRule
ActiveOrdered within twice their usual gap
At riskPast twice their usual gap, and at least 30 days since their last order
LostPast four times their usual gap, and at least 30 days since their last order
NewOne order in the last 90 days
One-timeOne order, more than 90 days ago

The usual gap is the median number of days between a customer's orders. Yearly value is their average order times 365 divided by that gap, so it's an estimate. Rows on the same day count as one order, and refunds reduce totals without counting as orders.

MCP tools

ToolWhat it does
customers_check_lapsedReturns the summary and customers by priority, with a limit for large files
customers_inspect_csvShows detected columns and row counts, without row contents

Both are read-only, and neither can contact anyone. customers_check_lapsed returns customer names or emails to the MCP client, so they reach whichever AI model you use. The CLI keeps everything on your machine.

FAQ

How do I find inactive customers? Export your orders as CSV and run npx lapsewatch check orders.csv.

Does it work with Shopify, WooCommerce or Stripe exports? It reads CSV and recognizes common column names such as Email, Total and Created at, and you can name others with --columns date=When,customer=Who,amount=Sum. It doesn't connect to those platforms, and it hasn't been tested on each one's real exports yet.

Should I use names or emails? Emails work best, because it treats each distinct value as one customer.

Limits

  • It finds who to look at, and can't tell why someone stopped. A one-off need or a seasonal buyer can look lapsed.
  • A customer under two names or emails counts as two customers. samecontact can help clean a list first.
  • It doesn't convert currencies.
  • It reads CSV only, up to 50 MB.
  • If you email customers from these lists, follow your local marketing and privacy rules.
  • So far it has been tested on made-up data, not real exports. If yours fails, please open an issue with the column headers, not your data.

Contributing

Contributions are welcome, from people and from people working with AI agents. See CONTRIBUTING.md. Good first issues:

  • Add column names from more platforms and languages
  • Add --out to write a win-back list to a CSV
  • Add seasonal buyer detection
  • Add a cohort retention table
  • Add a plugin icon

How pull requests work

  1. Open a PR. Fork the repo, work on a branch, and keep it to one change. Write a title that says what changes for users, because it becomes the changelog line: feat: goes under Added and fix: under Fixed.
  2. Automatic check. Code changes need tests, and make test must pass. Changes over 30 lines need a linked open issue (Closes #<number>), and a PR can have at most 800 changed lines. If something is missing, a comment tells you what to fix.
  3. Review. Claude reviews each PR automatically. Code PRs also get a security review and are tested in a sandbox. The review then merges the PR or asks for changes. PRs that change CI, agent settings, npm or Python dependencies, vendored code or build files can't be merged this way, and a comment says so. The same goes for anything the security review doesn't clear.
  4. Release. A merge that changes what users install becomes a new version within about two hours, with a GitHub Release and, if the project has one, its npm package. Docs and CI changes wait for the next release.

AI disclosure

This project was largely generated with Claude Code and reviewed by its maintainer.

About me

I'm Giulliano Macedo, and I build developer tools at GoTech Solutions. Follow along or get in touch:

If lapsewatch helped you win a customer back, a star helps others find it.


MIT licensed.

Built by Giulliano Macedo, GoTech Solutions · LinkedIn · X

来源:README.md,提交 49960cb

工具

2

customers_check_lapsed

Find customers who stopped buying

Finds at-risk and lost customers in an orders CSV by comparing each customer with their own buying pattern, with yearly revenue at risk, repeat rate and revenue concentration. Use for customer retention, churn analysis, or win-back lists. Read-only, and never uses the network. Results include customer names or emails from the file, so they reach the model. It can't contact anyone.

输入参数path必填as_oflimitcolumnsdate_format

customers_inspect_csv

Inspect an orders CSV

Shows which columns lapsewatch detects in an orders CSV and how many rows it can read, without returning row contents. Use if the file is unfamiliar or a check failed.

输入参数path必填

版本历史

1
  1. v0.1.0最新Oct 31, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分