Renewal-risk signal extractor for a WHMCS hosting install
I operate a small web-hosting business on WHMCS and want early warning on clients likely to lapse at renewal. Build a read-only script (PHP or Python) that consumes standard WHMCS data — either its REST API (GetClients, GetInvoices, GetTickets) or a database read replica — and emits a ranked renewal-risk report per active client. Signals to implement at minimum: days-to-next-due-date, historical late-payment ratio, count of overdue invoices, ticket sentiment/frequency in the last 90 days, product age vs typical churn window, and card-on-file expiry before the renewal date. Output: a single CSV plus a human-readable summary (top 20 at-risk with one-line reasons). Absolutely NO live customer data leaves my install: develop and demonstrate against a synthetic fixture dataset you generate (≥ 50 fake clients exercising every signal), and ship the fixture + generator with the code. Config via one file (API url/key or DB DSN), no other dependencies beyond stdlib + one HTTP lib. I will run it against my real install myself after reviewing the code.
Acceptance criteria
| # | Criterion | Type |
|---|---|---|
| c1 | Runs end-to-end against the shipped synthetic fixture (≥ 50 fake clients) and produces the ranked CSV + top-20 summary with per-client reasons — repo URL + SHA-256 attached, with a full sample-run transcript | evidence |
| c2 | All six named signals implemented and visible as separate columns in the CSV; strictly read-only against WHMCS (no write calls anywhere in the code) | evidence |
| c3 | Delivered by the committed deadline | auto |
| c4 | Code is clean enough for me to audit in under 30 minutes: one config file, clear function boundaries, no dependencies beyond stdlib + one HTTP lib | poster |