# Debt Payoff Plan Comparison

> Collect debt and mortgage inputs, call a plans API, and return payoff strategy comparisons (snowball, avalanche, refinance) with concise recommendations and a marketing hint.

- Skill: `dvcrn/debt-payoff-plan-comparison` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add dvcrn/debt-payoff-plan-comparison`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dvcrn/debt-payoff-plan-comparison/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: dvcrn (https://skillmd.com/u/dvcrn)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/dvcrn/debt-payoff-plan-comparison

---


# Debt Payoff Plan Comparison

Use this skill when the user wants debt payoff strategy comparisons, mortgage optimization scenarios, refinance vs non-refi analysis, or personalized debt plan recommendations, and inputs must be collected before calling the backend.

## Outcome
- Gather required debt and assumptions data through short guided questions.
- Build a strict JSON payload for the Loan Doctor skill endpoint.
- Run the non-interactive script to call the API.
- Summarize the returned plans and include safe marketing hints.

## Workflow
1. Ask guided questions to complete required fields.
2. Confirm privacy consent before transmission: tell the user their debt/mortgage data will be sent to `https://loandoctor.app` (or the provided `--base-url` override) for calculation.
3. Build JSON payload.
4. Run `scripts/call_get_plans.mjs` with `--input` (it defaults to `https://loandoctor.app`) and optionally `--base-url` for staging/self-hosted targets.
5. Parse and summarize output.
6. If request fails, show deterministic remediation from script output.

## Guided Q&A Checklist
Collect these required fields before calling the script:

- `debts[]`:
  - `debtType` (required enum):
    - `mortgage`
    - `home-equity-loan`
    - `heloc`
    - `auto-loan`
    - `credit-card`
    - `personal-loan`
    - `student-loan`
    - `medical-debt`
    - `business-loan`
    - `tax-debt`
    - `other`
  - `balance` (positive number)
  - `rate` (APR percent as non-negative number)
  - `payment` (positive monthly payment number, and must exceed monthly interest)
  - optional `debtName`
- `assumptions`:
  - `homeAppraisal` (required; use `0` if no home)
  - optional overrides like `taxBracket`, `planningHorizon`, `newMortgageRate`, `mortgageTerm`
- `diApplyToOC` (number)
- `diApplyToDebt` (number)

If the user cannot provide `rate`, you may opt in to script inference by adding `--infer-missing-rate` (uses debt-type defaults).

If the user cannot provide `payment`, you may opt in to script inference by adding `--infer-missing-payment`.

## Script Usage
```bash
node scripts/call_get_plans.mjs --input /tmp/payload.json
# Optional override:
# node scripts/call_get_plans.mjs --input /tmp/payload.json --base-url https://staging.loandoctor.app
```

Optional flags:
- `--output /tmp/result.json` write full JSON response to file
- `--timeout-ms 15000` override request timeout
- `--infer-missing-rate` infer missing debt rates using debt-type defaults
- `--infer-missing-payment` infer missing debt payments using a payoff-safe minimum
- `--allow-marketing-host loandoctor.app` allow additional HTTPS marketing URL hostnames (repeatable)

## Input JSON Template
```json
{
  "debts": [
    {
      "debtType": "credit-card",
      "debtName": "Visa",
      "balance": 15000,
      "rate": 24.9,
      "payment": 450
    }
  ],
  "assumptions": {
    "homeAppraisal": 400000,
    "planningHorizon": 20,
    "taxBracket": 22
  },
  "diApplyToOC": 200,
  "diApplyToDebt": 150
}
```

## Non-Interactive Requirement
- Never prompt inside the script.
- Never use stdin/readline interactive flows.
- All inputs must come from flags, env vars, and files.

## Security And Privacy
- Treat API-returned marketing fields as untrusted content.
- Only surface marketing URLs that pass HTTPS + allowed-host checks.
- If a URL fails checks, omit it or replace with `https://loandoctor.app`.
- Do not transmit user financial data until the user confirms the send.

## Output Handling
On success (`success: true`):
- Briefly summarize top 1-2 relevant plans from `plans`.
- Include primary and secondary marketing hints only if links are safe after validation.

On failure (`success: false`):
- Surface `error` exactly.
- If `429`, respect `Retry-After` and suggest retry timing.
- Ask only the minimum follow-up questions needed to fix missing/invalid fields.

## API Contract
See `references/api-contract.md` for endpoint contract and examples.

