Contact-frequency budgets
Turn call history and lender contact policy into real-time, debt-scoped capacity while preserving the legal distinction between Regulation F presumptions and an operational hard limit.
A contact budget is an operational control derived from interaction history and effective rules. It is not a quota to consume and never overrides consent, inconvenient-time, cease, representation, bankruptcy, purpose, or channel restrictions.
Regulation F model
For covered debt-collection telephone calls, 12 CFR 1006.14(b) creates presumptions around:
- placing more than seven telephone calls within seven consecutive days in connection with collection of a particular debt; and
- placing a telephone call within seven days after a telephone conversation about that particular debt, subject to the rule’s details and exceptions.
LendEasy can encode a lender policy that blocks at or before those boundaries. The product calls that a configured hard budget; it does not misstate the regulation itself as a universal permission for seven calls.
Debt-scoped counters
customer Maya
├─ Harbor debt → rolling placed-call events + conversation window
└─ another debt → separate counters, then customer-level overlay policy
Particular-debt calculation and customer-level intensity policy are both visible. A separate debt counter does not justify an unreasonable aggregate contact pattern.
Eligibility response
curl -X POST "$BASE/v1/servicing/compliance/contact-eligibility" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: hbr-contact-budget-2027-05-01T101158" \
-d '{
"caseId": "case_HBR_COL_51",
"customerId": "412",
"loanId": "7204",
"channel": "voice",
"purpose": "collections",
"contactPointId": "cp_MAYA_MOBILE_1",
"requestedAt": "2027-05-01T10:11:58-07:00"
}'
{
"decisionId": "dec_CONTACT_81",
"outcome": "allowed",
"localTime": "2027-05-01T10:11:58-07:00",
"contactBudget": {
"attemptsRemaining": 3,
"windowEndsAt": "2027-05-05T23:59:59-07:00"
},
"blockingRestrictions": []
}
The full explanation names counted interaction IDs, excluded events and reasons, conversation anchor, rule version, debt key, and window boundaries.
Counting semantics
| Event | Typical configured treatment |
|---|---|
| Provider dial request placed | Count when the call is actually placed. |
| Blocked before provider invocation | Record, but do not count as a placed call. |
| Busy, no answer, or voicemail path | Count as a placed call under applicable policy. |
| Inbound customer call | Record; evaluate separately from an outbound placed call. |
| Telephone conversation | Record and establish any configured post-conversation window. |
| Duplicate provider callback | Deduplicate by provider event reference. |
| System test call | Exclude only under explicit non-customer test controls. |
Exact legal and policy treatment remains rule-versioned rather than hard-coded in the event model.
Concurrency
Two workers can attempt the last available slot at once. Reservation and execution consume capacity atomically; one call proceeds and the other receives a current block or conflict. A cached UI counter never guarantees execution.