payment-tracker-run

$npx mdskill add aAAaqwq/AGI-Super-Team/payment-tracker-run

Automatically monitor invoices and generate payment follow-ups.

  • Identifies overdue invoices and creates email drafts for clients.
  • Depends on deals.csv and Telegram for data and notifications.
  • Calculates payment status using invoice dates and client context.
  • Delivers results via Telegram messages and activity logs.

SKILL.md

.github/skills/payment-tracker-runView on GitHub ↗
---
name: payment-tracker-run
description: Automatic payment tracking and follow-up
---
# Payment Tracker - Run

> Monitors outstanding invoices, tracks payment status, sends reminders

## When to use

- "check payments"
- "which invoices are overdue?"
- "payment status check"
- "run payment tracker"
- Manual trigger for immediate payment check

## How to execute

### Full run

```bash
cd $AGENTS_PATH/payment-tracker
python3 payment_tracker_agent.py
```

This will execute:
1. Load outstanding invoices from deals.csv
2. Calculate payment status (OK/DUE_SOON/OVERDUE/PENDING_INVOICE)
3. Enrich with client/company context
4. Generate Telegram notification
5. Create follow-up email drafts
6. Log activities to activities.csv
7. Git commit changes

### Dry-run (no changes)

```bash
python3 payment_tracker_agent.py --dry-run
```

- Analyzes all invoices
- Shows what would be sent
- Does NOT write to CSV
- Does NOT send Telegram
- Does NOT make git commit

### Without notifications

```bash
python3 payment_tracker_agent.py --no-notify
```

- Performs the check
- Logs activities
- Skips Telegram notification

### Test notification

```bash
python3 payment_tracker_agent.py --force-notify
```

- Sends Telegram even if there are no issues
- For testing notification setup

## Output

### Telegram Notification

Sent to Saved Messages ('me'):

```
**Payment Tracker Report**

Total outstanding: **$4,827 USD**
2 overdue, 1 due soon, 0 pending invoice

🔴 **OVERDUE**

• **INV-095** - Enterprise Corp
  $XXX USD • 8 days overdue
  Action: Email Alice

🟡 **DUE SOON**

• **INV-096** - Client D
  $X,XXX USD • Due 2026-02-15 (5 days since invoice)

✅ **OK** (3 invoices on track)
```

### Follow-up Drafts

File: `$AGENTS_PATH/data/payment_followups/YYYY-MM-DD_followup_drafts.md`

Contains ready-made email drafts for overdue invoices.

### Activities Log

Entries in `sales/crm/activities.csv`:
- activity_id: `act-XXX`
- type: `note`
- subject: `Payment tracker: Invoice #INV-095 - OVERDUE`
- created_by: `payment-tracker-agent`

### Agent Log

JSON file: `$AGENTS_PATH/data/payment_tracker_log.json`

```json
{
  "ts": "2026-02-12T10:00:00",
  "outstanding_total": 4827,
  "overdue_count": 2,
  "due_soon_count": 1,
  "pending_invoice_count": 0,
  "notifications_sent": true,
  "errors": []
}
```

## Scheduled Run

The agent runs automatically via launchd:
- **Schedule**: Daily at 10:00 AM (Mon-Fri)
- **Plist**: `~/Library/LaunchAgents/com.yourcompany.payment-tracker.plist`

### Load schedule

```bash
cp $AGENTS_PATH/payment-tracker/com.yourcompany.payment-tracker.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.yourcompany.payment-tracker.plist
```

### Unload schedule

```bash
launchctl unload ~/Library/LaunchAgents/com.yourcompany.payment-tracker.plist
```

### Check status

```bash
launchctl list | grep payment-tracker
```

### View logs

```bash
tail -f /tmp/payment-tracker-agent.log
tail -f /tmp/payment-tracker-agent-error.log
```

## Payment Terms

- **Known clients** (status=active): 7 days
- **New clients** (status=new): 14 days
- **DUE_SOON warning**: 3 days before deadline
- **Follow-up cadence**:
  - DUE_SOON: reminder every 3 days
  - OVERDUE: daily reminders

## Payment Categories

1. **OK**: Invoice on track (days <= payment_terms - 3)
2. **DUE_SOON**: Approaching deadline (payment_terms - 3 < days <= payment_terms)
3. **OVERDUE**: Missed deadline (days > payment_terms)
4. **PENDING_INVOICE**: Deal delivered but invoice not sent yet

## Troubleshooting

### Telegram not sending

```bash
# Test Telegram connection
cd $TG_TOOLS_PATH
python3 -c "from tg_utils.auth import get_client; import asyncio; asyncio.run(get_client())"

# Force notification
cd $AGENTS_PATH/payment-tracker
python3 payment_tracker_agent.py --force-notify
```

### Activities not logging

```bash
# Check CSV permissions
ls -la $CRM_PATH/activities.csv

# Check git status
cd $PROJECT_ROOT
git status

# Dry-run to see what would be logged
cd $AGENTS_PATH/payment-tracker
python3 payment_tracker_agent.py --dry-run
```

### Wrong payment terms

Edit constants in `payment_tracker_agent.py`:
```python
DEFAULT_PAYMENT_TERMS_KNOWN = 7
DEFAULT_PAYMENT_TERMS_NEW = 14
DUE_SOON_BUFFER_DAYS = 3
```

## Integration

### Upstream
- **Invoice Generator** (#17): creates invoice_date, invoice_number in deals.csv
- **Manual bank check**: owner updates paid_date when payment is received

### Downstream
- **Daily Briefing** (#14): can include payment tracker summary
- **Activity Logging** (#13): shares activities.csv

## Human Approval

- Agent does NOT send emails automatically
- Generates drafts for review
- Owner decides when and how to send follow-ups

## Rollback

### Stop agent
```bash
launchctl unload ~/Library/LaunchAgents/com.yourcompany.payment-tracker.plist
```

### Revert activity logs
```bash
cd $PROJECT_ROOT
git log --grep="payment tracker"
git revert <commit-hash>
```

### Clear agent log
```bash
rm $AGENTS_PATH/data/payment_tracker_log.json
```

## Related skills

- `invoice` - invoice creation (process #17)
- `log-activity` - manual CRM activity logging
- `daily-briefing` - morning briefing (process #14)

## Owner

Your Name ([email protected])
Process ID: #18

More from aAAaqwq/AGI-Super-Team

SkillDescription
a-fund-monitor监控 A 股基金实时估值与盘后净值,自动判断交易日并生成提醒或分析。
add-leadAdd company/person/relationship to CRM
ads-agentAI-агент для управления Facebook рекламой. Вызывай для анализа, оптимизации, создания кампаний и отчётов.
afrexai-compliance-auditRun internal compliance audits against major governance and security
afrexai-personal-financeComplete personal finance system — budgeting, debt payoff, investing, tax optimization, net worth tracking, and financial independence planning. Use when managing money, building wealth, paying off debt, planning retirement, or optimizing taxes. Zero dependencies.
after-salesUse when managing post-purchase experience, building customer loyalty, or increasing repeat purchases
agent-contactsAI agent contacts — add, list, remove MCP contacts. Use when someone gives an agent URL, or when you need to view/remove contacts.
agent-model-switcher批量查看和切换子 agent 的模型配置,用于统一调整多 agent 的 provider/model 设置。
agent-patternsFormat SPAWN REQUEST messages to launch parallel agents, generate structured agent status reports, and define communication protocols within the sprint system. Use when the user needs to coordinate multiple agents, format spawn requests, produce agent reports, or establish inter-agent communication patterns.
agent-task-confirmUse when confirming whether a dispatched agent task was actually received, activated, and progressing after sessions_send or other task handoff actions.