
InvoicePaymentChaser
InvoicePaymentChaser — README
Polite Overdue Invoice Follow-Up Generator
3 emails + SMS/DM + phone script + internal memo, tailored to your client
relationship and tone. No legal advice.
Quick start
1. Load the system prompt into a host agent
Open system_prompt.md and paste its full contents into the system prompt
slot of a host agent (Claude, GPT, or any Capafy-compatible runner).
2. Send an input
Either provide the 10-field list described in system_prompt.md § INPUT
FORMAT, or send a JSON object matching the schema insample/input/sample_invoice_input.json.
Required fields:
invoice_amountpayment_due_datedays_overdueclient_relationship— one of:new client,repeat client,long-term client,strategic client,difficult client,othertone— one of:soft,standard,firmpayment_method
Optional fields:
invoice_numberclient_namebusiness_nameprior_followup_history
3. Receive the follow-up package
The agent returns a Markdown document with these sections in order:
- A. Situation Diagnosis (Light Delay / Watch Closely / Firm Follow-up
Recommended) — status + 2–3 bullets + recommended next step. - B. Email 1: Soft Reminder — subject + body.
- C. Email 2: Deadline-Based Follow-up — subject + body + requested
response/payment date. - D. Email 3: Final Confirmation + Next Action Notice — subject + body, no
legal threats. - E. SMS/DM Short Version — 1–2 short messages.
- F. Phone Script — opening / confirmation question / payment timing question
/ calm close. - G. Internal Record Memo — date / amount / due date / days overdue /
contact attempt / next scheduled follow-up date.
A reference output is available atsample/output/expected_invoice_output.md so you can see the expected shape.
4. (Optional) Pre-flight checks with the helper script
The helper at scripts/invoice_payment_chaser.py is pure Python standard
library. It does not call any LLM. Use it to validate input JSON or render an
empty output skeleton.
# Validate an input file
python3 scripts/invoice_payment_chaser.py \
--input sample/input/sample_invoice_input.json \
--mode validate
# Render an empty output skeleton (useful for manual editing)
python3 scripts/invoice_payment_chaser.py \
--mode template \
--output ./out/invoice_followup_skeleton.md
Files
| File | Role |
|---|---|
SKILL.md |
Specification with frontmatter, input/output schemas, and design notes |
agent-card.md |
Marketplace listing draft (bilingual English / Japanese) |
system_prompt.md |
The system prompt the host agent loads |
scripts/invoice_payment_chaser.py |
Input validator and template renderer (stdlib only) |
config/output_template.md |
Output template skeleton |
sample/input/sample_invoice_input.json |
Example input |
sample/output/expected_invoice_output.md |
Example output |
LICENSE |
MIT |
Design principles
- Tactical, not theoretical. Emails are ready to copy-paste into Gmail
and send. SMS lines fit in a single text. The phone script is short enough
to memorize before dialing. - Three tones, three escalation steps. Soft Reminder → Deadline-Based
Follow-up → Final Confirmation, matched to the diagnosed status (Light
Delay / Watch Closely / Firm Follow-up Recommended). - Relationship-safe by default. Even at the firm tone, the language stays
professional and non-threatening. Aggressive requests get softened with a
brief note that the wording has been kept relationship-safe. - Hard ban on legal language. No threats, no penalty claims, no legal
enforcement wording, no debt collection terminology. If asked, the agent
declines and suggests consulting a qualified professional. - No invented invoice details. Missing required information is asked back
or marked with[Client Name],[Invoice Number],[Payment Link]
placeholders.
Compatibility
- Python 3.10 or newer (for the helper script)
- Any LLM host that accepts a system prompt and a user message in plain text
- Capafy listing fields (the parameter mapping in agent-card.md is aligned)
Customization
- Edit
config/output_template.mdto change section order or add fields
(e.g., a localized header for your business name, or an extra
"next-action owner" column in the internal memo). - Add new tone descriptors to
system_prompt.mdfor industry-specific
styles (e.g., long-term retainer clients, public-sector buyers). - The helper script takes a
--configargument if you want to keep multiple
template variants (e.g., one per business unit).
License
MIT. See LICENSE.


