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
- Ask guided questions to complete required fields.
- Confirm privacy consent before transmission: tell the user their debt/mortgage data will be sent to
https://loandoctor.app(or the provided--base-urloverride) for calculation. - Build JSON payload.
- Run
scripts/call_get_plans.mjswith--input(it defaults tohttps://loandoctor.app) and optionally--base-urlfor staging/self-hosted targets. - Parse and summarize output.
- 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):mortgagehome-equity-loanhelocauto-loancredit-cardpersonal-loanstudent-loanmedical-debtbusiness-loantax-debtother
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; use0if 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
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.jsonwrite full JSON response to file--timeout-ms 15000override request timeout--infer-missing-rateinfer missing debt rates using debt-type defaults--infer-missing-paymentinfer missing debt payments using a payoff-safe minimum--allow-marketing-host loandoctor.appallow additional HTTPS marketing URL hostnames (repeatable)
Input JSON Template
{
"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
errorexactly. - If
429, respectRetry-Afterand 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.