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 分