---
name: tenant_communication
description: Handle tenant communication for a small landlord or property manager: rent reminders and late notices, maintenance intake and work orders, entry, renewal and move-out sequences, deposit statements, and accommodation replies, with timing and tone rules for each situation and a log that holds up in a dispute. Ships a message library by situation, a tested log and draft checker, a work order template, and a worked month of messages. Use when writing or sending any tenant message, setting up a rent or maintenance sequence, logging tenant contact, or preparing records for a deposit or eviction dispute.
---

# Tenant Communication

## Purpose

Most tenant disputes are won or lost on the messages, not the facts. A landlord who sent a clear late notice on a known date, acknowledged a repair the day it was reported, and gave proper entry notice has a file that speaks for itself. A landlord who handled the same month by phone and text fragments has a memory contest.

This skill gives a small landlord or property manager one system for the whole tenancy. Use all of it:

- The message library by situation: `references/message-library.md`. Twelve situations, from rent reminder to accommodation response, each with a sendable draft and the rule that governs it.
- The tracker: `scripts/tenant_comms.py`, standard library only. It keeps the communication log, lists follow-ups that are due, checks a draft before it goes out, and prints a work order.
- A worked month: `references/worked-month.md`. One unit through a late payment, a repair, an entry, a renewal offer, and an accommodation request, with the log entries each message produced.
- Templates: `assets/communication-log-template.csv` and `assets/work-order-template.md`.

The output is communication and records, not legal advice. Notice forms, periods, and deposit deadlines are set by state and often city law and they vary a lot. The skill flags every place where local law controls and tells you to use the local form and period. It never supplies one national number where the law supplies fifty different ones.

## Workflow

1. **Set the channels and the clock at move-in.** Record in the lease file which channel is the channel of record, usually email, what counts as an emergency channel, and the tenant's preferred language. Put every substantive message on the channel of record, even when it started as a call or a hallway chat. Write a call up in the log the same day, with the outcome. A promise that exists only in a call does not exist in a dispute.

2. **Classify the situation before writing a word.** Pick one of the twelve situations in the library: rent reminder, late notice, pay or quit, cure notice, maintenance acknowledgement, maintenance update, entry notice, renewal offer, nonrenewal, move-out instructions, deposit statement, or accommodation response. One message does one job. A late notice that also complains about noise and announces an inspection gives the tenant three things to argue about and weakens all three. Send separate messages, on separate days where the timing allows it.

3. **Apply the timing rules for that situation.** Rent reminder: 2 to 3 days before the due date, never on or after it. Late notice: only after any grace period in the lease has run, with the fee, if any, exactly as the lease states it. Maintenance acknowledgement: the same business day the report arrives, immediately for an emergency. Entry notice: non-emergency entry gets at least 24 hours in many states, and the longer period wins when the lease or local law requires more. Renewal offer: early enough to meet the longest rent change notice period that applies. Deposit statement: by the deadline where the unit sits, which runs from 14 days in New York to 21 in California to 45 in Virginia. Formal notices, meaning pay or quit, cure, and nonrenewal, use the form, period, and delivery method local law requires. Those periods run from about 3 to 30 days depending on the state and the reason, so there is no safe default to copy.

4. **Write to the tone rules.** State facts, amounts, and dates, and cite the lease section when a rule is involved. Give the cure path in every problem message: what to do, by when, and how, plus what happens if it is done, which is usually that no further action follows. Keep one issue per message and keep it short, under about 220 words. Never characterise the tenant. Write "rent for October was received on October 19" and never "you are always late". Never threaten anything you cannot lawfully do, and never threaten the short list in step 7 at all.

5. **Triage maintenance by harm, not by order of arrival.** Emergency means a condition that threatens health, safety, or the building now: no heat in cold weather, no water or hot water, no electricity, a gas smell, active flooding, a sewage backup, or a door that will not lock. Urgent means a habitability item that is getting worse or leaves the unit partly unusable, such as one working toilet out of one, or a failed water heater with a same week fix booked. Routine is everything else. Acknowledge all three the same day. Emergency gets a vendor moving the same day and an update before the day ends. Urgent gets a booked window within days. Routine gets a window and a date you will update by, and the update goes out on that date even when the repair is not finished.

6. **Run every maintenance report as a work order, not a thread.** Open the work order with the tenant's own words for the issue, the date and time reported, the priority, and the access arrangement. Run the generator: `python3 scripts/tenant_comms.py workorder --id WO-1042 --tenant NAME --unit UNIT --issue TEXT --priority routine --reported YYYY-MM-DD`. Close it only with what was found, what was done, photos, and the date the tenant was told the result. Habitability law in most states turns on notice plus a reasonable time scaled to severity, so the work order is the proof of both: when you learned of it, and how fast you moved.

7. **Hold the hard lines in every message, at every balance owed.** No lock change, no utility shutoff, no removing belongings, doors, or windows, and no demanding a tenant be out today. Self-help eviction like that is illegal in virtually every state, and removal takes a court order carried out by law enforcement. No different terms, response times, or late policy for one tenant than another on a protected ground. The federal Fair Housing Act covers race, color, national origin, religion, sex, familial status, and disability, and many states and cities add source of income, age, marital status, and other classes. Apply the same sequence, on the same days, to every tenant, and let the log prove it.

8. **Treat any disability related request as an accommodation request, whatever words it uses.** A request counts when it is spoken, in plain language, and never says reasonable accommodation. Consider it even when your form was not used. Ask only for what shows the link between the request and a disability related need, and only when that link is not obvious. Never ask for a diagnosis or medical records, and never charge a fee for an accommodation. An assistance animal is not a pet: no pet deposit, pet rent, breed rule, or weight limit applies. If the exact request cannot be granted, say why in specific terms and offer the alternative that gets closest, then keep talking. That back and forth is part of the duty, not a courtesy.

9. **Check retaliation timing before any adverse step.** Most states bar eviction, a rent increase, or a cut in services after a tenant requests repairs, complains to an agency, organises, or sues, and many presume retaliation when the adverse step lands inside a set window, 180 days in California. Before sending a nonrenewal, a rent increase, or a cure notice that follows any of those events, write down the independent reason for the step and check that the reason is documented from before the protected activity. If it is not, wait, or get local legal advice first.

10. **Check the draft, then log before you move on.** Run `python3 scripts/tenant_comms.py validate --situation late_notice DRAFT.txt`. Exit 0 means no blocks. A BLOCK means the draft threatens a self-help act or misses a required element such as the amount, the date, or how to pay, and it does not go out. Read every REVIEW line yourself: the checker flags protected class language, personal characterisation, all caps, and length. Then log the sent message the same day: `python3 scripts/tenant_comms.py log LOG.csv --date YYYY-MM-DD --tenant NAME --unit UNIT --channel email --situation late_notice --summary TEXT --follow-up YYYY-MM-DD`. Check what is owed each week with the `due` subcommand and clear it, because an unanswered follow-up date in your own log hurts more than no log at all.

11. **Close the tenancy in the same system.** Move-out instructions tie cleaning and condition to the move-in record, and say plainly that ordinary wear and tear is not charged. The deposit statement is itemised, line by line, with a cost, a receipt reference, and the move-in and move-out photos behind each line, sent by the local deadline. Keep the whole file, meaning the log, the sent messages, work orders with photos, inspection records, and proof of service for formal notices, together for the tenancy and for as long after it as local limitation periods and your adviser require. Answer a deposit disagreement item by item, in writing, against the move-in record.

12. **Verify the tool before trusting it with a real tenancy.** Run `python3 tests/score_worked.py` from this skill's folder. Expected result: 9 of 9 checks pass, covering log creation, due follow-ups, a clean late notice passing, lockout and shutoff threats blocking, a missing amount blocking, an entry notice passing, and work order printing.

## Output Contract

- One message per situation, built from the library draft, with amount, date, lease section, and payment or cure path filled from the lease and the ledger, never from memory.
- A communication log row for every sent message, made the same day, with a follow-up date wherever a reply, a payment, a visit, or an update is owed.
- A work order for every maintenance report, opened with the tenant's own words and closed only with findings, work done, photos, and the date the tenant was told.
- Entry, renewal, and formal notices that carry the period, form, and delivery method local law requires, with proof of service filed for formal notices.
- A deposit statement that is itemised line by line against the move-in record, with receipts, sent by the local deadline.
- A weekly due list that is cleared or carried with a reason, never ignored.

## Operating Rules

- The lease, the ledger, and local law set the numbers. A template never overrides any of them, and a bracket in the library means fill it from those sources or stop.
- Same sequence, same days, same tone for every tenant. Consistency is the fair housing defence and the log is how you prove it.
- Write it or it did not happen. Calls and chats get written up in the log the same day, with the outcome and any date promised.
- No self-help, ever, at any balance. Locks, utilities, belongings, and access change only under a court order.
- A fee exists only when the lease provides for it and local law allows it. Never invent a fee, a grace period, or a deadline to make a message stronger.
- Get consent before automated texts, honour a stop request by any reasonable wording, and move essential notices to the channel of record when a tenant opts out of text. Keep marketing out of tenancy messages entirely.
- Protect the file. Tenant messages can contain health and financial details, so keep the log and work orders in the tenancy file, share them only with people working on that tenancy, and never quote one tenant's situation to another.
- When local law and this skill disagree, local law wins, and the disagreement gets noted in the log so the next message uses the right rule.
