@agenticmail/core 0.9.32 → 0.9.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dist/index.d.cts +1 -1
  2. package/dist/index.d.ts +1 -1
  3. package/dist/skills/built-in/accommodation-intake.json +132 -0
  4. package/dist/skills/built-in/add-driver-vehicle-household.json +133 -0
  5. package/dist/skills/built-in/admissions-waitlist-followup.json +129 -0
  6. package/dist/skills/built-in/anchor-and-counter-anchor.json +161 -0
  7. package/dist/skills/built-in/anti-social-engineering.json +153 -0
  8. package/dist/skills/built-in/anything-else-sweep.json +120 -0
  9. package/dist/skills/built-in/apologise-correctly.json +126 -0
  10. package/dist/skills/built-in/ask-for-in-person-meeting.json +114 -0
  11. package/dist/skills/built-in/attorney-new-client-intake.json +133 -0
  12. package/dist/skills/built-in/bant-discovery-call.json +125 -0
  13. package/dist/skills/built-in/book-new-patient-appointment.json +131 -0
  14. package/dist/skills/built-in/bookmark-close.json +113 -0
  15. package/dist/skills/built-in/bypass-i-am-the-supervisor.json +130 -0
  16. package/dist/skills/built-in/bypass-scripted-rep.json +142 -0
  17. package/dist/skills/built-in/calibrated-questions.json +155 -0
  18. package/dist/skills/built-in/call-911-fire.json +118 -0
  19. package/dist/skills/built-in/call-911-medical-emergency.json +126 -0
  20. package/dist/skills/built-in/call-911-violent-crime-in-progress.json +133 -0
  21. package/dist/skills/built-in/call-988-crisis-line.json +128 -0
  22. package/dist/skills/built-in/call-poison-control.json +115 -0
  23. package/dist/skills/built-in/call-police-non-emergency.json +114 -0
  24. package/dist/skills/built-in/call-with-person-in-distress.json +133 -0
  25. package/dist/skills/built-in/cancel-cable-fiber-no-retention-loop.json +156 -0
  26. package/dist/skills/built-in/cancel-policy-clean.json +130 -0
  27. package/dist/skills/built-in/capture-rep-identity.json +113 -0
  28. package/dist/skills/built-in/childcare-provider-intake.json +157 -0
  29. package/dist/skills/built-in/close-account-no-residual-fees.json +127 -0
  30. package/dist/skills/built-in/close-on-concrete-next-step.json +116 -0
  31. package/dist/skills/built-in/confirm-agreement-readback.json +134 -0
  32. package/dist/skills/built-in/confirm-next-step-ownership.json +113 -0
  33. package/dist/skills/built-in/contractor-estimate-request.json +142 -0
  34. package/dist/skills/built-in/court-clerk-administrative-inquiry.json +119 -0
  35. package/dist/skills/built-in/cpa-intake-call.json +134 -0
  36. package/dist/skills/built-in/day-of-flight-cancellation.json +127 -0
  37. package/dist/skills/built-in/de-escalate-angry-rep.json +114 -0
  38. package/dist/skills/built-in/decline-unsolicited-pitch.json +110 -0
  39. package/dist/skills/built-in/deliver-difficult-news.json +122 -0
  40. package/dist/skills/built-in/detect-fake-escalation-loops.json +140 -0
  41. package/dist/skills/built-in/detect-lies-and-contradictions.json +139 -0
  42. package/dist/skills/built-in/dispute-billing-code-eob.json +147 -0
  43. package/dist/skills/built-in/dispute-charge-reg-e-reg-z.json +131 -0
  44. package/dist/skills/built-in/dispute-credit-report-via-bank.json +128 -0
  45. package/dist/skills/built-in/dispute-denied-claim.json +143 -0
  46. package/dist/skills/built-in/dispute-security-deposit.json +130 -0
  47. package/dist/skills/built-in/dispute-usage-spike-meter-reread.json +120 -0
  48. package/dist/skills/built-in/dmv-vehicle-registration-renewal.json +120 -0
  49. package/dist/skills/built-in/document-call-promises.json +145 -0
  50. package/dist/skills/built-in/early-lease-termination.json +126 -0
  51. package/dist/skills/built-in/elite-line-escalation.json +107 -0
  52. package/dist/skills/built-in/equipment-swap-cable-router-modem.json +126 -0
  53. package/dist/skills/built-in/eu261-uk261-dot-compensation.json +113 -0
  54. package/dist/skills/built-in/file-fnol-auto-claim.json +130 -0
  55. package/dist/skills/built-in/file-habitability-complaint.json +115 -0
  56. package/dist/skills/built-in/financial-aid-appeal.json +128 -0
  57. package/dist/skills/built-in/follow-up-stalled-claim.json +118 -0
  58. package/dist/skills/built-in/get-past-gatekeeper.json +115 -0
  59. package/dist/skills/built-in/get-past-tier-1-script.json +130 -0
  60. package/dist/skills/built-in/handle-callback-stall.json +120 -0
  61. package/dist/skills/built-in/handle-outsourced-no-escalation.json +138 -0
  62. package/dist/skills/built-in/handle-send-me-an-email-deflection.json +112 -0
  63. package/dist/skills/built-in/handle-time-pressure.json +159 -0
  64. package/dist/skills/built-in/health-prior-auth-appeal.json +131 -0
  65. package/dist/skills/built-in/hoa-dispute.json +123 -0
  66. package/dist/skills/built-in/hold-time-strategy.json +137 -0
  67. package/dist/skills/built-in/hold-warmth-cold-rep.json +114 -0
  68. package/dist/skills/built-in/hotel-walk-over-recovery.json +114 -0
  69. package/dist/skills/built-in/humour-when-it-lands.json +127 -0
  70. package/dist/skills/built-in/i20-visa-dso.json +134 -0
  71. package/dist/skills/built-in/invoke-regulator-firmly.json +137 -0
  72. package/dist/skills/built-in/irrops-waiver-awareness.json +103 -0
  73. package/dist/skills/built-in/irs-payment-plan-setup.json +134 -0
  74. package/dist/skills/built-in/k12-iep-504-enrollment.json +134 -0
  75. package/dist/skills/built-in/late-add-petition.json +128 -0
  76. package/dist/skills/built-in/leave-of-absence-deferral.json +130 -0
  77. package/dist/skills/built-in/lock-in-terms-verbally.json +127 -0
  78. package/dist/skills/built-in/match-energy-keep-goal.json +120 -0
  79. package/dist/skills/built-in/medical-records-transfer.json +138 -0
  80. package/dist/skills/built-in/medical-withdrawal.json +131 -0
  81. package/dist/skills/built-in/mid-call-evidence-collection.json +159 -0
  82. package/dist/skills/built-in/mirror-technique.json +145 -0
  83. package/dist/skills/built-in/missed-connection-distressed-passenger.json +111 -0
  84. package/dist/skills/built-in/mortgage-loan-hardship.json +130 -0
  85. package/dist/skills/built-in/move-out-walkthrough.json +114 -0
  86. package/dist/skills/built-in/multi-channel-escalation.json +141 -0
  87. package/dist/skills/built-in/multi-issue-tradeoffs.json +155 -0
  88. package/dist/skills/built-in/negotiate-rent-renewal.json +123 -0
  89. package/dist/skills/built-in/no-as-opening.json +154 -0
  90. package/dist/skills/built-in/not-sound-like-spam-dialer.json +118 -0
  91. package/dist/skills/built-in/outage-credit-applied.json +127 -0
  92. package/dist/skills/built-in/passport-expedite-or-appointment.json +123 -0
  93. package/dist/skills/built-in/pediatric-school-forms.json +141 -0
  94. package/dist/skills/built-in/personal-trainer-discovery.json +138 -0
  95. package/dist/skills/built-in/pharmacy-callback.json +134 -0
  96. package/dist/skills/built-in/pivot-mid-call.json +141 -0
  97. package/dist/skills/built-in/port-mobile-number-survive-retention.json +127 -0
  98. package/dist/skills/built-in/prescription-refill-followup.json +132 -0
  99. package/dist/skills/built-in/push-past-invented-policy.json +159 -0
  100. package/dist/skills/built-in/rapport-opening-30-seconds.json +130 -0
  101. package/dist/skills/built-in/reach-executive-office.json +137 -0
  102. package/dist/skills/built-in/read-vocal-cues.json +139 -0
  103. package/dist/skills/built-in/read-vocal-tone.json +159 -0
  104. package/dist/skills/built-in/realestate-agent-vetting.json +144 -0
  105. package/dist/skills/built-in/receive-difficult-news.json +115 -0
  106. package/dist/skills/built-in/recording-claim-conversation-legally.json +121 -0
  107. package/dist/skills/built-in/recover-summary-refusal.json +121 -0
  108. package/dist/skills/built-in/reengage-ghosted-lead.json +115 -0
  109. package/dist/skills/built-in/referral-followup-without-burning.json +116 -0
  110. package/dist/skills/built-in/referral-prior-authorization.json +130 -0
  111. package/dist/skills/built-in/refuse-the-split.json +142 -0
  112. package/dist/skills/built-in/refuse-upsell-at-close.json +114 -0
  113. package/dist/skills/built-in/rental-car-counter-defense.json +116 -0
  114. package/dist/skills/built-in/rental-scam-report.json +125 -0
  115. package/dist/skills/built-in/replace-lost-stolen-card-expedited.json +139 -0
  116. package/dist/skills/built-in/report-downed-line-gas-smell-911-triage.json +130 -0
  117. package/dist/skills/built-in/report-elder-or-child-abuse.json +125 -0
  118. package/dist/skills/built-in/report-fbi-tip.json +116 -0
  119. package/dist/skills/built-in/report-fraud-ic3-or-ftc.json +117 -0
  120. package/dist/skills/built-in/report-fraudulent-transaction.json +126 -0
  121. package/dist/skills/built-in/report-power-outage-get-etr.json +116 -0
  122. package/dist/skills/built-in/report-urgent-maintenance.json +123 -0
  123. package/dist/skills/built-in/request-credit-limit-increase.json +126 -0
  124. package/dist/skills/built-in/request-supervisor-gracefully.json +129 -0
  125. package/dist/skills/built-in/request-welfare-check.json +127 -0
  126. package/dist/skills/built-in/request-written-confirmation.json +113 -0
  127. package/dist/skills/built-in/reschedule-appointment.json +121 -0
  128. package/dist/skills/built-in/reset-by-callback.json +143 -0
  129. package/dist/skills/built-in/resist-urgency-manipulation.json +152 -0
  130. package/dist/skills/built-in/revisit-totaling-decision.json +125 -0
  131. package/dist/skills/built-in/roadside-assistance-dispatch.json +132 -0
  132. package/dist/skills/built-in/roommate-replacement.json +121 -0
  133. package/dist/skills/built-in/same-day-urgent-appointment.json +130 -0
  134. package/dist/skills/built-in/schedule-rental-viewing.json +111 -0
  135. package/dist/skills/built-in/service-move-shutoff-start-no-overlap.json +129 -0
  136. package/dist/skills/built-in/social-security-replacement-card.json +122 -0
  137. package/dist/skills/built-in/specialist-doctor-booking.json +136 -0
  138. package/dist/skills/built-in/spot-bait-and-switch.json +155 -0
  139. package/dist/skills/built-in/stop-recurring-ach.json +127 -0
  140. package/dist/skills/built-in/switch-postpaid-to-prepaid-mid-cycle.json +130 -0
  141. package/dist/skills/built-in/tactical-empathy-labeling.json +147 -0
  142. package/dist/skills/built-in/therapist-intake-call.json +133 -0
  143. package/dist/skills/built-in/train-cancellation-refund-rebook.json +104 -0
  144. package/dist/skills/built-in/transcript-request.json +128 -0
  145. package/dist/skills/built-in/travel-insurance-claim-on-the-road.json +114 -0
  146. package/dist/skills/built-in/travel-notice-unlock-card.json +119 -0
  147. package/dist/skills/built-in/unemployment-claim-status-and-appeal.json +123 -0
  148. package/dist/skills/built-in/uscis-case-status-and-biometrics.json +125 -0
  149. package/dist/skills/built-in/utility-deposit-waiver.json +122 -0
  150. package/dist/skills/built-in/utility-payment-plan-avoid-disconnect.json +122 -0
  151. package/dist/skills/built-in/verify-insurance-coverage-pre-procedure.json +140 -0
  152. package/dist/skills/built-in/verify-out-of-network-coverage.json +129 -0
  153. package/dist/skills/built-in/veteran-benefits-community-college.json +134 -0
  154. package/dist/skills/built-in/veterinary-new-patient-intake.json +135 -0
  155. package/dist/skills/built-in/visa-boarding-denial-recovery.json +115 -0
  156. package/dist/skills/built-in/vital-records-certificate-copy.json +120 -0
  157. package/dist/skills/built-in/voicemail-that-gets-called-back.json +114 -0
  158. package/dist/skills/built-in/voter-registration-and-ballot.json +124 -0
  159. package/dist/skills/built-in/walkaway-threats.json +159 -0
  160. package/dist/skills/built-in/wedding-vendor-intake.json +149 -0
  161. package/dist/skills/built-in/when-to-stop-being-polite.json +161 -0
  162. package/dist/skills/built-in/wire-funds-safely.json +129 -0
  163. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ {
2
+ "id": "equipment-swap-cable-router-modem",
3
+ "name": "Equipment Swap: Cable Box / Router / Modem — Drop-Off vs. Mail-In Decision",
4
+ "version": "1.0.0",
5
+ "category": "customer-service",
6
+ "tags": [
7
+ "telecom",
8
+ "cable",
9
+ "isp",
10
+ "equipment",
11
+ "return",
12
+ "swap",
13
+ "phone-call",
14
+ "utility-telecom"
15
+ ],
16
+ "description": "Call a cable / ISP provider to swap or return rented equipment (modem, router/gateway, cable box, voice adapter, security gateway) — deciding between in-store drop-off and mail-in return, locking in tracked receipts, and stopping equipment-lease charges on the right date.",
17
+ "disclaimer": "Equipment lease fees continue billing until the provider's system marks the device as RETURNED, not when you hand it off. Drop-off receipts and mail-in tracking are the only proof of return; without them, the provider can charge $100-$500 per device as 'unreturned'.",
18
+ "context": {
19
+ "when_to_use": "User is returning equipment because: (a) cancelling service entirely, (b) replacing leased gear with personally-owned gear to drop the rental fee, (c) swapping a malfunctioning device for a working one, or (d) upgrading hardware. NOT for installing brand-new service (that's a different workflow).",
20
+ "preconditions": [
21
+ "Complete inventory of equipment to return: device, model, MAC address (or serial), all power adapters, all remotes, all cables that came with it.",
22
+ "Account number and account holder name.",
23
+ "Current monthly equipment lease charge (so you can verify it drops off after return).",
24
+ "Whether the swap is concurrent (new device first, return old) or sequential (return old, then activate new).",
25
+ "If replacing with personally-owned modem: model number to confirm provisioned compatibility."
26
+ ],
27
+ "estimated_call_duration_minutes": 15
28
+ },
29
+ "principles": [
30
+ "In-store drop-off at a CARRIER-OWNED store is the gold standard. Walk out with a printed receipt that lists every device's serial number and the timestamp. That receipt is your proof.",
31
+ "UPS Store drop-off (carrier-funded label) is the second-best. UPS scans the device serial against the carrier's return manifest — get a tracking number AND keep the receipt slip.",
32
+ "Mail-in via carrier-supplied box is the third-best — slower, but works. Photograph the device before sealing AND save the tracking number.",
33
+ "Authorised resellers (Best Buy, Walmart, third-party stores) are the worst option — they often can't formally accept returns and the device can sit in a back room for weeks while billing continues.",
34
+ "Recognise wrong-queue: 'tech support' often can't process returns; 'equipment services' or 'account services' is the right team.",
35
+ "Always ask: 'on what date does the lease fee stop billing?' Returning the device does not stop the bill automatically — there's an internal de-provisioning step that the rep can confirm or schedule."
36
+ ],
37
+ "phrases": {
38
+ "opener": "Hi, I need to return equipment on account [number]. The device is [model + MAC/serial], plus the [power adapter / remote / cables]. I want to confirm the return method and the date the lease fee stops billing.",
39
+ "queue_check": "Are you the equipment / account-services team? I want to be with whoever can formally close out the device and stop the lease charge.",
40
+ "transfer_request": "Could you do a warm transfer to equipment services and stay on the line until they pick up? I don't want to lose my hold position.",
41
+ "ask_return_options": "What are my return options — carrier-owned store drop-off, UPS Store with pre-paid label, mail-in kit? I'd prefer whichever gives me a tracked receipt that gets the device marked returned fastest.",
42
+ "ask_lease_stop_date": "When will the equipment lease fee stop billing — date of return scan, end of current cycle, or some other trigger? I want to confirm it doesn't keep charging through the next cycle.",
43
+ "ask_required_accessories": "What exactly needs to be returned with the device — power adapter, remotes, cables, original box? I want to avoid a 'missing accessory' charge.",
44
+ "personal_modem_compatibility": "I'm planning to replace the gateway with my own [make/model]. Can you confirm it's on your approved-device list and what info I'll need to provision — MAC address, account PIN, anything else?",
45
+ "swap_overlap": "If this is a swap (not a return), can the new device ship before I return the old one — so I don't lose service? What's the return window after the new device arrives?",
46
+ "lock_in_writing": "Please email me: return reference number, return method, what's required in the box, lease-fee stop date, and the deadline by which the device must be received. I want it in writing.",
47
+ "graceful_close": "Thanks — return reference [number], method [store / UPS / mail], lease stops [date], items required [list], return deadline [date]. I'll send tracking once it's on its way."
48
+ },
49
+ "tactics": [
50
+ {
51
+ "name": "Pick the highest-trust return method available",
52
+ "when": "After options are listed.",
53
+ "script": "Rank: (1) carrier-owned store with printed receipt > (2) UPS Store with pre-paid label and tracking > (3) carrier-supplied mail-in box with tracking > (4) authorised reseller (avoid). Use `ask_return_options` to surface the choices.",
54
+ "priority": 1
55
+ },
56
+ {
57
+ "name": "Pin the lease-stop date",
58
+ "when": "Within the first 5 minutes.",
59
+ "script": "Use `ask_lease_stop_date`. 'When you scan it in' and 'end of billing cycle' are both common answers — knowing which one applies tells you when to expect the lease fee to fall off.",
60
+ "priority": 2
61
+ },
62
+ {
63
+ "name": "Inventory accessories explicitly",
64
+ "when": "Before going to the store / sealing the box.",
65
+ "script": "Use `ask_required_accessories`. Missing power adapter: $20-$40 charge. Missing remote: $20. Missing cables: $5-$10. These accumulate.",
66
+ "priority": 3
67
+ },
68
+ {
69
+ "name": "Recognise wrong-queue / tech support trap",
70
+ "when": "Rep starts running diagnostics or troubleshooting the device.",
71
+ "script": "Use `queue_check`. Tech support's job is to keep the device in service; equipment services' job is to take it out. Different queues.",
72
+ "priority": 4
73
+ },
74
+ {
75
+ "name": "If swapping, get overlap right",
76
+ "when": "Not a pure return — also activating a new device.",
77
+ "script": "Use `swap_overlap`. The new device shipped before the old return = no service gap. Ask the return-window length (typically 14-30 days after new device arrival).",
78
+ "priority": 5
79
+ },
80
+ {
81
+ "name": "If switching to personal modem, verify compatibility",
82
+ "when": "Returning a leased gateway to use personal gear.",
83
+ "script": "Use `personal_modem_compatibility`. Mid-call confirmation prevents the 'I returned it and now my own modem won't activate' loop."
84
+ }
85
+ ],
86
+ "boundaries": [
87
+ "Do NOT drop equipment at an authorised reseller (Best Buy, Walmart, third-party) unless the rep explicitly confirms it appears in their return manifest. Many resellers cannot accept returns even though they sold the device.",
88
+ "Do NOT leave the store without a printed receipt listing each device's serial number.",
89
+ "Do NOT mail a device without tracking and without photographing it first (device + serial label + accessories).",
90
+ "Do NOT toss a device because you 'paid it off' — leased devices remain provider-owned regardless of how long you've had them.",
91
+ "Do NOT cancel autopay until the return is confirmed and the lease fee has fallen off two consecutive bills."
92
+ ],
93
+ "success_signals": [
94
+ "Return reference number issued.",
95
+ "Return method confirmed with tracking expectation.",
96
+ "Required accessories listed explicitly.",
97
+ "Lease-fee stop date confirmed.",
98
+ "Written confirmation email arrives."
99
+ ],
100
+ "failure_signals": [
101
+ "Rep cannot give a lease-fee stop date.",
102
+ "Rep says 'just drop it off, you'll be fine' with no reference number or written record.",
103
+ "Return method is mail-in but no pre-paid label is provided.",
104
+ "Personal modem is NOT on the approved list (and the user expected it would be)."
105
+ ],
106
+ "exit_strategy": {
107
+ "on_success": "Confirm reference number, return method, deadline. Within 24 hours: complete the return and capture the receipt or tracking number. Watch the next 2 bills to verify the lease fee dropped.",
108
+ "on_failure": "If a return method cannot be confirmed, escalate to a supervisor in equipment services. If the provider keeps deflecting, mail the device with tracking AND signature confirmation to the executive office address (publicly listed for most major carriers) with a cover letter referencing the case number.",
109
+ "follow_ups": [
110
+ "Day of return: photograph the device + serial + accessories before drop-off / sealing.",
111
+ "Within 7 days: verify the provider's system shows the device as 'received' — call back referencing the return reference number if not.",
112
+ "Next billing cycle: confirm the lease fee has dropped off. If not, dispute that line on the bill and escalate.",
113
+ "Cycle after that: confirm no 'unreturned equipment' charge appears."
114
+ ]
115
+ },
116
+ "required_user_info": [
117
+ "Account number and account holder name",
118
+ "Device(s) to return — model, MAC address or serial, accessories",
119
+ "Current monthly equipment lease amount",
120
+ "Whether also activating a replacement (and if so, what)",
121
+ "Nearest carrier-owned store and UPS Store",
122
+ "Best email for written confirmation"
123
+ ],
124
+ "contributed_by": "utility-telecom agent (v0.9.87 community drop)",
125
+ "updated_at": "2026-05-20T06:09:47Z"
126
+ }
@@ -0,0 +1,113 @@
1
+ {
2
+ "id": "eu261-uk261-dot-compensation",
3
+ "name": "EU261 / UK261 / DOT Denied-Boarding Cash Compensation",
4
+ "version": "1.0.1",
5
+ "category": "travel",
6
+ "tags": ["regulation", "eu261", "uk261", "dot", "compensation", "denied-boarding", "regulator"],
7
+ "description": "File a cash-compensation claim for cancellation, long delay, or denied boarding under EU Regulation 261/2004, UK Regulation 261, or US DOT 14 CFR 250 / 14 CFR 259. Push the airline directly first, escalate to the regulator only if denied.",
8
+ "disclaimer": "Regulations and amounts cited reflect the rules as of 2025. EU261 amounts are set in the Regulation; UK261 mirrors them in GBP; DOT denied-boarding caps are indexed and updated by DOT periodically. Always confirm the current cap on the DOT or airline's site at time of claim.",
9
+ "context": {
10
+ "when_to_use": "User experienced one of: (a) flight cancelled within 14 days of departure, (b) arrival delay >3 hours, (c) involuntary denied boarding (bumped). On a flight that is either (i) departing the EU/UK on any airline, or (ii) arriving in the EU/UK on an EU/UK airline (EU261/UK261), OR (iii) any US domestic/international flight with involuntary denied boarding (DOT). Note: in the US, cancellations and delays do NOT mandate cash — only a refund for cancellation.",
11
+ "preconditions": [
12
+ "User has the flight number, date, original schedule, and actual schedule.",
13
+ "User has boarding pass (printed, screenshot, or in app).",
14
+ "User has the airline-issued cancellation/delay notification or photo of the airport board.",
15
+ "User knows the cause cited by the airline (because 'extraordinary circumstances' is the carrier's main defense)."
16
+ ],
17
+ "estimated_call_duration_minutes": 30
18
+ },
19
+ "principles": [
20
+ "Regulator citation by article number is the difference between being taken seriously and being fobbed off. 'Article 7 of Regulation (EC) 261/2004' is the magic phrase for EU.",
21
+ "Cash, not voucher. EU261 Article 7(3) entitles you to cash by bank transfer; airlines will offer vouchers worth more — the law says cash. Vouchers are fine if you'll use them; refuse if you want money.",
22
+ "'Extraordinary circumstances' is the airline's defense (weather, ATC, security, political instability, hidden manufacturing defects). Mechanical issues are NOT extraordinary per CJEU Case C-549/07 (Wallentin-Hermann). Crew shortages are NOT extraordinary per Case C-28/20 (Airhelp v SAS).",
23
+ "Direct claim first. Most airlines have an EU261/UK261 web form. File there with the right citation; you'll often get paid in 4-8 weeks without escalation.",
24
+ "Time limits vary: UK 6 years (England/Wales), 5 years (Scotland), EU member-state law (typically 2-6 years). File early.",
25
+ "DOT denied-boarding is different: it's about IDB (involuntary denied boarding) only, with a cash cap pegged to one-way fare. Voluntary bumps don't trigger statutory amounts — those are negotiated."
26
+ ],
27
+ "phrases": {
28
+ "opener_eu261": "I am claiming compensation under Article 7 of Regulation (EC) No. 261/2004 for flight [number] on [date] from [origin] to [destination]. The flight was [cancelled / delayed by X hours / I was denied boarding involuntarily]. I am owed [€250 / €400 / €600] based on the great-circle distance of [km].",
29
+ "opener_uk261": "I am claiming under UK Regulation 261 for flight [number] on [date]. The Civil Aviation Authority enforces this and the amounts are [£220 / £350 / £520] depending on distance.",
30
+ "opener_dot_idb": "I was involuntarily denied boarding on [flight] on [date]. Under 14 CFR 250.5 I am entitled to [200% / 400%] of my one-way fare, up to the current cap, in cash or check — not a voucher.",
31
+ "rebut_extraordinary": "The cause cited is [reason]. Under CJEU case law — Wallentin-Hermann for technical issues, Airhelp v SAS for crew strikes — this does not qualify as extraordinary circumstances. Please reassess.",
32
+ "demand_cash_not_voucher": "Article 7(3) provides for payment in cash, by electronic bank transfer, bank order or cheque. I'm declining the voucher and requesting bank transfer.",
33
+ "escalate_to_regulator": "I'm noting that as a denial. I'll be filing with [the National Enforcement Body in [country] / the UK Civil Aviation Authority / the US DOT at file.dot.gov] and pursuing through small claims if necessary.",
34
+ "graceful_close_success": "Thank you. Please confirm the amount, the payment method, and the timeline. I'll expect the bank transfer within 14 days.",
35
+ "graceful_close_failure": "Okay — please send me your final written denial with reasoning. I'll be escalating from there."
36
+ },
37
+ "tactics": [
38
+ {
39
+ "name": "Determine the right regulation",
40
+ "when": "Before filing.",
41
+ "script": "EU261: applies to ALL flights departing from EU/EEA/Switzerland (any airline) AND flights arriving in EU/EEA/Switzerland on an EU/EEA-licensed airline. UK261: flights departing UK (any airline) or arriving UK on UK/EU airline. DOT IDB: any US-touching flight where you were involuntarily denied boarding. A flight from JFK to LHR on BA: both UK261 (arriving UK on UK carrier) AND DOT (departing US) — pick the more favourable.",
42
+ "priority": 1
43
+ },
44
+ {
45
+ "name": "Calculate the entitlement amount",
46
+ "when": "Drafting the claim.",
47
+ "script": "EU261/UK261 distance bands: ≤1500 km → €250/£220. 1500-3500 km or any intra-EU >1500 → €400/£350. >3500 km → €600/£520. Halve if the airline rebooked you within (2/3/4 hours of original arrival) per Article 7(2). DOT IDB: 0-1 hr late → no comp; 1-2 hr domestic / 1-4 hr int'l → 200% of one-way fare up to ~$1,075; >2/4 hr → 400% up to ~$2,150. Caps are indexed.",
48
+ "priority": 2
49
+ },
50
+ {
51
+ "name": "File the airline's direct web form first",
52
+ "when": "Before escalating.",
53
+ "script": "Every EU/UK airline has an EU261 form (e.g. BA 'Manage My Booking → Submit a Claim', LH 'Compensation Application', Ryanair customer services). US carriers have IDB compensation desks at the gate immediately, but you can also file post-flight customer relations.",
54
+ "priority": 3
55
+ },
56
+ {
57
+ "name": "Rebut 'extraordinary circumstances' with case law",
58
+ "when": "Airline denies with extraordinary defense.",
59
+ "script": "Cite Wallentin-Hermann (C-549/07) for mechanical issues; Airhelp v SAS (C-28/20) for own-crew strikes; Krüsemann (C-195/17) for so-called 'wildcat strikes'. ATC strikes ARE extraordinary; airline's own crew strikes are NOT.",
60
+ "priority": 4
61
+ },
62
+ {
63
+ "name": "Refuse voucher, demand cash",
64
+ "when": "Airline offers a voucher higher than the statutory cash amount.",
65
+ "script": "Article 7(3) says cash, bank transfer, or cheque. Voucher requires your written agreement (Article 7(3)). Politely decline if you want money. Accept if the voucher is meaningfully larger AND you fly that airline often."
66
+ },
67
+ {
68
+ "name": "Escalate to the National Enforcement Body",
69
+ "when": "Airline denies and the denial is weak.",
70
+ "script": "EU: each member state has an NEB (Germany LBA, France DGAC, Netherlands ILT, Spain AESA, etc.). UK: CAA's PACT (Passenger Advice and Complaints Team). US: file.dot.gov for DOT IDB or for tarmac-rule violations. Free, but slow (3-6 months)."
71
+ },
72
+ {
73
+ "name": "Small-claims as backstop",
74
+ "when": "Airline drags or denies despite clear case.",
75
+ "script": "EU: Money Claim Online (UK), European Small Claims Procedure (cross-border ≤€5000). Airlines settle 70%+ of small claims without contesting because legal costs exceed payout. Companies like AirHelp / Bott & Co take 25-35% but handle filings — only use if you don't want the hassle."
76
+ }
77
+ ],
78
+ "boundaries": [
79
+ "Do NOT confuse EU261 (cancellation/delay/denied boarding cash) with the EU Package Travel Directive (tour-operator obligations) — different law.",
80
+ "Do NOT accept a voucher disguised as 'compensation' without realising you've forfeited cash rights.",
81
+ "Do NOT pursue EU261 for purely US domestic flights — it doesn't apply.",
82
+ "Do NOT inflate the delay length. Compensation is based on ARRIVAL delay at final destination, measured by door-open time (Case C-452/13, Germanwings)."
83
+ ],
84
+ "success_signals": [
85
+ "Airline acknowledges the claim and sends a case reference number within 14 days.",
86
+ "Cause of disruption is one of: own mechanical, crew shortage, IT outage, operational decision — none extraordinary.",
87
+ "Bank-transfer confirmation issued.",
88
+ "Regulator opens a case file."
89
+ ],
90
+ "failure_signals": [
91
+ "Airline cites extraordinary circumstances and refuses, providing weather METAR or ATC slot evidence.",
92
+ "Claim is for arrival delay <3 hours (no compensation, only Article 9 'right to care').",
93
+ "Flight is outside EU261/UK261/DOT territorial scope."
94
+ ],
95
+ "exit_strategy": {
96
+ "on_success": "Confirm payment hits the account. If a partial offer is reasonable, accept; if not, escalate. Save all correspondence for the next claim.",
97
+ "on_failure": "Take the written denial and file with the appropriate NEB / CAA / DOT, or with a claims company on contingency. Note that even after a denial, small claims has a high success rate.",
98
+ "follow_ups": [
99
+ "Article 9 'right to care' (meals + accommodation during the delay) is SEPARATE from Article 7 cash. You can claim both.",
100
+ "Save boarding passes — required as proof of presence for most claims.",
101
+ "If you have travel insurance with trip-delay coverage, that's ON TOP of EU261 — claim both."
102
+ ]
103
+ },
104
+ "required_user_info": [
105
+ "Flight number, date, origin, destination",
106
+ "Carrier IATA code and operating carrier (codeshare matters — claim against the operating carrier)",
107
+ "Scheduled vs actual departure and arrival times",
108
+ "Cause cited by the airline",
109
+ "Boarding pass (image)",
110
+ "Passenger name(s) and bank details for payout"
111
+ ],
112
+ "contributed_by": "travel-rebooking agent (v0.9.87 community drop)"
113
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "id": "file-fnol-auto-claim",
3
+ "name": "File a First-Notice-of-Loss Auto Claim (Without Admitting Fault)",
4
+ "version": "1.0.0",
5
+ "category": "finance-admin",
6
+ "tags": [
7
+ "auto",
8
+ "claim",
9
+ "fnol",
10
+ "first-notice-of-loss",
11
+ "phone-call",
12
+ "fault",
13
+ "insurance"
14
+ ],
15
+ "description": "Open a brand-new auto claim with the user's carrier (or the at-fault driver's carrier) — report the facts the carrier needs to assign a claim number and adjuster WITHOUT making any statement that admits fault, accepts liability, or characterises the user's prior driving record or vehicle condition.",
16
+ "disclaimer": "Agent must NEVER admit fault, NEVER agree to a settlement on the operator's behalf, NEVER speculate about prior conditions, NEVER sign a release. All of those route through ask_operator.",
17
+ "context": {
18
+ "when_to_use": "An accident, theft, vandalism, or comprehensive event has occurred and the user wants to open a claim. Use this for the FIRST call only — once a claim number and adjuster are assigned, switch to `follow-up-stalled-claim` or `dispute-denied-claim` as appropriate.",
19
+ "preconditions": [
20
+ "User has their policy number (or full name + DOB + address for lookup).",
21
+ "User has the date, time, and rough location of the loss.",
22
+ "User has the other party's name, plate, and insurance info if a collision (if available — do not delay reporting if not).",
23
+ "User has the police report number if one was filed.",
24
+ "User has confirmed they actually want to file (filing creates a claim record even if later withdrawn)."
25
+ ],
26
+ "estimated_call_duration_minutes": 25
27
+ },
28
+ "principles": [
29
+ "Report facts, not conclusions. 'The vehicles made contact at the intersection' — not 'I hit them' or 'they hit me'.",
30
+ "The recorded statement is the document the adjuster will use for the rest of the claim. Treat every sentence like it will be read back to you in court.",
31
+ "If you don't know, say 'I don't know' or 'I'd need to check'. Guessing creates inconsistencies the carrier weaponises later.",
32
+ "The carrier's first job on FNOL is to gather facts; their second is to look for coverage exclusions. Both are happening simultaneously.",
33
+ "Speed matters for the claim NUMBER and the adjuster ASSIGNMENT. Detail can come later in writing. Don't let the rep pressure a full narrative on the first call.",
34
+ "Every state has a statutory acknowledgment window (commonly 10-15 days). Filing starts that clock — get it started."
35
+ ],
36
+ "phrases": {
37
+ "opener": "Hi, I'm calling to report a new loss under policy [number]. The incident was on [date] at approximately [time] in [city/state]. I'd like to open a claim and get a claim number and adjuster assigned today.",
38
+ "fault_deflection": "I'd rather not characterise fault on this call — I'd like the adjusters to review the police report and any available footage and reach their own determination.",
39
+ "unknown_fact": "I don't have that detail confirmed right now. I'll get back to you in writing once I've verified it.",
40
+ "request_recording_disclosure": "Before we go further — is this call being recorded? And will I be given a copy of any recorded statement I provide?",
41
+ "decline_recorded_statement": "I'm comfortable giving you the facts to open the claim, but I'd like to defer any recorded statement until I've reviewed the police report. Can we schedule that for later this week?",
42
+ "request_claim_number": "Could you give me the claim number and the name and direct line of the assigned adjuster before we end the call?",
43
+ "request_written_summary": "Could you email me a written summary of what was reported today, including the claim number and adjuster contact info?",
44
+ "graceful_close": "Thank you. To confirm: claim number is [number], adjuster is [name] at [phone/email], and the next step is [step] by [date]. I'll follow up in writing."
45
+ },
46
+ "tactics": [
47
+ {
48
+ "name": "Lead with the policy number and the ask",
49
+ "when": "First substantive turn.",
50
+ "script": "Use the `opener` phrase. State you want a claim number and adjuster TODAY. That's the only deliverable from this call.",
51
+ "priority": 1
52
+ },
53
+ {
54
+ "name": "Report observable facts only",
55
+ "when": "Rep asks 'what happened?'",
56
+ "script": "Describe what was observed — vehicle positions, weather, traffic signal state if known, point of contact on the vehicles. Avoid verbs like 'I hit', 'I caused', 'I didn't see'. Prefer 'the vehicles made contact', 'visibility was [condition]', 'the signal was [state] when I last observed it'.",
57
+ "priority": 2
58
+ },
59
+ {
60
+ "name": "Deflect fault questions",
61
+ "when": "Rep asks 'were you at fault?' or 'do you think the other driver was at fault?'",
62
+ "script": "Use the `fault_deflection` phrase. The adjusters determine fault from physical evidence + police report + statements. The user's opinion on the phone is not required to open the claim.",
63
+ "priority": 3
64
+ },
65
+ {
66
+ "name": "Decline or defer the recorded statement on first call",
67
+ "when": "Rep says 'I'll need to take a recorded statement.'",
68
+ "script": "Use the `decline_recorded_statement` phrase. The carrier can open the claim without it. Defer until the user has a police report, photos, and time to think. If they push, route to `ask_operator` — never give a recorded statement live on FNOL.",
69
+ "priority": 4
70
+ },
71
+ {
72
+ "name": "Refuse to speculate on prior conditions or pre-existing damage",
73
+ "when": "Rep asks 'was there any prior damage to the vehicle?' or 'any pre-existing injuries?'",
74
+ "script": "Say 'I'd need to check my records / consult my doctor before answering that.' Never volunteer a guess. Prior-damage and pre-existing-condition questions are coverage-exclusion fishing.",
75
+ "priority": 5
76
+ },
77
+ {
78
+ "name": "Get the claim number, adjuster name, and adjuster direct line",
79
+ "when": "Before ending the call.",
80
+ "script": "Use the `request_claim_number` phrase. Without these three artifacts, the call did not accomplish its purpose — keep the rep on the line until you have them.",
81
+ "priority": 6
82
+ },
83
+ {
84
+ "name": "Ask for a written summary",
85
+ "when": "After the claim number is captured.",
86
+ "script": "Use the `request_written_summary` phrase. The summary is the user's evidence that what was reported is what the carrier has on file. Carriers sometimes mis-transcribe.",
87
+ "priority": 7
88
+ }
89
+ ],
90
+ "boundaries": [
91
+ "Do NOT admit fault, even partially, even conversationally ('I should've slowed down', 'I didn't see them' — these are admissions).",
92
+ "Do NOT agree to a settlement number, a release, or a 'we'll just write you a check for $X' on this call. Route via `ask_operator`.",
93
+ "Do NOT speculate about prior vehicle damage, pre-existing injuries, or the other driver's intent.",
94
+ "Do NOT give a recorded statement on the first call unless the operator has explicitly authorised it after seeing the police report.",
95
+ "Do NOT estimate repair costs or injury severity. Adjusters and medical providers do that.",
96
+ "Do NOT share more PII than needed to open the claim — driver's license number, full SSN, and bank info are almost never required on FNOL."
97
+ ],
98
+ "success_signals": [
99
+ "Rep issues a claim number on the call.",
100
+ "Rep names a specific adjuster and provides direct contact info.",
101
+ "Rep agrees to email a written summary.",
102
+ "Rep accepts a deferred recorded statement.",
103
+ "Rep schedules an inspection or rental authorisation in the same call."
104
+ ],
105
+ "failure_signals": [
106
+ "Rep refuses to issue a claim number without a recorded statement.",
107
+ "Rep insists on a fault admission before opening the claim.",
108
+ "Rep won't name an adjuster ('one will call you in 7-10 business days').",
109
+ "Rep starts quoting a settlement number before the inspection has happened."
110
+ ],
111
+ "exit_strategy": {
112
+ "on_success": "Read back the claim number, adjuster name, adjuster phone + email, and next-step deadline. Confirm a written summary will be emailed. Thank the rep and end politely.",
113
+ "on_failure": "If the rep refuses to issue a claim number without a recorded statement, end the call and route to `ask_operator` — that posture itself is reportable to the state insurance commissioner. Do NOT capitulate to opening a recorded statement under pressure.",
114
+ "follow_ups": [
115
+ "Email the operator the claim number, adjuster contact info, and next step.",
116
+ "Calendar the statutory acknowledgment deadline (10-15 days from FNOL depending on state).",
117
+ "If the user has not received written confirmation within 72 hours, trigger `follow-up-stalled-claim`."
118
+ ]
119
+ },
120
+ "required_user_info": [
121
+ "Policy number (or full name + DOB for lookup)",
122
+ "Date, time, and location of the loss",
123
+ "Brief factual description of what was observed (NOT a fault narrative)",
124
+ "Police report number if filed",
125
+ "Other party's name, plate, insurance info if collision (if available)",
126
+ "Whether operator authorises a recorded statement on this call (default: NO)"
127
+ ],
128
+ "contributed_by": "insurance-claims agent (v0.9.87 community drop)",
129
+ "updated_at": "2026-05-20T06:09:47Z"
130
+ }
@@ -0,0 +1,115 @@
1
+ {
2
+ "id": "file-habitability-complaint",
3
+ "name": "File a Habitability Complaint with the City Housing Department",
4
+ "version": "1.0.0",
5
+ "category": "real-estate",
6
+ "tags": [
7
+ "habitability",
8
+ "code-enforcement",
9
+ "housing-department",
10
+ "inspection",
11
+ "tenant-rights",
12
+ "phone-call",
13
+ "housing-tenancy"
14
+ ],
15
+ "description": "Call the city or county housing / code-enforcement department to open an official habitability complaint after the landlord has failed to repair an urgent issue — opening an inspection record that preserves the tenant's legal posture for future rent-withholding, repair-and-deduct, or lease-break.",
16
+ "disclaimer": "Not legal advice. Habitability + early-termination skills are scripted to PRESERVE legal posture (request things in writing, refuse verbal-only assurances) — but the operator must consult a tenant attorney for actual rights determination.",
17
+ "context": {
18
+ "when_to_use": "Landlord has been notified (in writing — see `report-urgent-maintenance`) of a habitability issue and has either: ignored it past a reasonable deadline (often 24–72 hours for emergencies; days to weeks for non-emergency code issues), refused to repair it, or repaired it badly enough that the issue persists. Use this BEFORE rent-withholding or lease-break — the inspection record is the foundation for either move.",
19
+ "preconditions": [
20
+ "User has already reported the issue to the landlord IN WRITING (text or email) with a timestamp.",
21
+ "Landlord has either not responded, missed a stated deadline, or refused to repair.",
22
+ "User has documentation: photos, videos, the original report, any landlord response.",
23
+ "User has the name of the city / county housing department or code-enforcement agency. (If unknown, ask the operator to look it up first.)",
24
+ "User understands that an inspection may put the unit on a public record AND may prompt landlord retaliation (which is illegal in most places but does happen)."
25
+ ],
26
+ "estimated_call_duration_minutes": 18
27
+ },
28
+ "principles": [
29
+ "An inspection record is leverage — once the city has cited the unit, the landlord's repair obligation is no longer optional.",
30
+ "Be factual, not emotional. Code-enforcement officers take notes that become evidence; opinions get filtered out, dates and conditions do not.",
31
+ "Anti-retaliation laws exist in most US jurisdictions — landlords cannot legally raise rent, refuse to renew, or evict in response to a code complaint. Mention it on the call only if asked; do not threaten.",
32
+ "Get the complaint number, the inspector's name, and the expected inspection window before hanging up. Without those three, you have nothing to follow up on.",
33
+ "If a city offers an anonymous complaint option, ask the operator first — anonymous filings sometimes have weaker enforcement and weaker retaliation protections than named ones."
34
+ ],
35
+ "phrases": {
36
+ "opener": "Hi, I'd like to file a habitability complaint against my landlord. The address is [full address, unit number]. The issue is [one-sentence description]. I reported it to the landlord in writing on [date] and the repair hasn't happened.",
37
+ "describe_issue": "Specifically, [issue]. It started on [date]. The landlord was notified by [text/email] on [date], and as of today it's still [unrepaired / worsening / partially fixed and still failing].",
38
+ "ask_about_process": "Can you walk me through what happens next — when an inspector comes out, whether I need to be home, and what the timeline is for the landlord to fix it after a citation?",
39
+ "ask_for_complaint_number": "Could I get the complaint or case number for this so I can refer to it in any follow-up?",
40
+ "ask_about_retaliation_protection": "If the landlord retaliates — like trying to raise rent or non-renew — is there a separate complaint I should file at that point?",
41
+ "ask_about_anonymous_option": "Is filing anonymously an option, and does it change how the complaint is enforced?",
42
+ "graceful_close": "Thank you. To confirm: case number [#], inspector or contact [name], inspection window [dates], next step on my side is [action]. I'll be available for the inspection."
43
+ },
44
+ "tactics": [
45
+ {
46
+ "name": "Open with the address, the issue, and the prior-notice date",
47
+ "when": "First substantive turn.",
48
+ "script": "Use the `opener`. The prior-notice date is the single most important fact — it proves the landlord had a chance to fix it.",
49
+ "priority": 1
50
+ },
51
+ {
52
+ "name": "State facts in date order",
53
+ "when": "When asked to describe what happened.",
54
+ "script": "Use `describe_issue`. Walk it chronologically: when it started, when reported, what landlord said or didn't say, current condition. Stick to facts.",
55
+ "priority": 2
56
+ },
57
+ {
58
+ "name": "Pin the process",
59
+ "when": "After the complaint is logged.",
60
+ "script": "Use `ask_about_process`. Find out: inspection window, whether the tenant must be present, what the landlord's repair deadline becomes after citation, and what happens if the landlord doesn't comply.",
61
+ "priority": 3
62
+ },
63
+ {
64
+ "name": "Capture the case number",
65
+ "when": "Before ending the call.",
66
+ "script": "Use `ask_for_complaint_number`. Get the number, the inspector's name (if assigned), and the direct line for follow-up.",
67
+ "priority": 4
68
+ },
69
+ {
70
+ "name": "Pre-arm the retaliation complaint",
71
+ "when": "If the user has expressed concern about landlord retaliation.",
72
+ "script": "Use `ask_about_retaliation_protection`. Find out the path before retaliation happens — knowing it exists makes it easier to spot the moment it starts.",
73
+ "priority": 5
74
+ }
75
+ ],
76
+ "boundaries": [
77
+ "Do NOT exaggerate or embellish the condition. Inspectors will see the unit themselves and a credibility loss hurts the entire case.",
78
+ "Do NOT promise to withhold rent in the same call. Rent-withholding has separate legal procedure — handle via `ask_operator` after a tenant attorney consult.",
79
+ "Do NOT name other tenants or share their issues without their permission.",
80
+ "Do NOT make claims about the landlord's other properties or other tenants — only your unit.",
81
+ "Do NOT discuss settlement amounts, lawsuits, or attorney involvement on the call. Code enforcement is a parallel track, not a negotiation venue."
82
+ ],
83
+ "success_signals": [
84
+ "Complaint accepted, case number issued, inspector assigned.",
85
+ "Inspection window is within days, not weeks (true habitability issues are usually prioritised).",
86
+ "Officer explains the citation-and-cure timeline clearly.",
87
+ "Anti-retaliation protections are confirmed."
88
+ ],
89
+ "failure_signals": [
90
+ "Department says the issue isn't in their jurisdiction (call back to ask which agency handles it).",
91
+ "Officer is dismissive of a clear habitability issue — ask politely for a supervisor.",
92
+ "No case number issued — the complaint isn't real yet.",
93
+ "Inspection window quoted is weeks out for a true emergency (heat, water, sewage) — ask about expedited review."
94
+ ],
95
+ "exit_strategy": {
96
+ "on_success": "Confirm case number, inspector name (if known), inspection window, what the tenant must do (be home, document conditions, etc.), and the post-citation landlord timeline. Report all of this to the operator.",
97
+ "on_failure": "Ask which agency DOES handle it (housing inspection, public health, fire marshal, building department all overlap) and call that next. Report the runaround to the operator.",
98
+ "follow_ups": [
99
+ "Operator emails landlord a copy of the complaint case number for the record (do this ONLY after talking to a tenant attorney if retaliation is a concern).",
100
+ "Calendar the inspection window — tenant must be reachable.",
101
+ "Photo / video the unit conditions the morning of the inspection so the timestamped record matches what the inspector sees.",
102
+ "After the inspection, request the inspector's written report — operator should follow up if not received within 5 business days."
103
+ ]
104
+ },
105
+ "required_user_info": [
106
+ "Full unit address and unit number",
107
+ "City / county and the housing or code-enforcement department name + phone number",
108
+ "Date the issue started and date the landlord was notified in writing",
109
+ "Copy of the written notification (text screenshot, email)",
110
+ "Photos / video / readings documenting the condition",
111
+ "Whether the user is concerned about retaliation"
112
+ ],
113
+ "contributed_by": "housing-tenancy agent (v0.9.87 community drop)",
114
+ "updated_at": "2026-05-20T06:09:47Z"
115
+ }