Lease Renewal Reminder
Daily heads-up before tenant leases expire, so you can offer renewal or list the unit.
What it does
Reads your Tenants Google Sheet every morning. Sorts active tenants into 90/60/30-day windows based on lease-end date. Flags any whose leases already expired (likely month-to-month or vacating but status wasn't updated). Sends the digest to the landlord/PM.
Why this matters
A 30-day notice is the legal floor for renewal/non-renewal in most states; many require 60. Catching renewals 90 days out gives you time to negotiate the new rate, draft the renewal addendum, or start marketing the unit if the tenant is moving on. Spreadsheet-based tracking rots; this is the daily nudge.
Setup
1. Google Sheet
Tab Tenants with this header row:
| tenant_name | unit | lease_start | lease_end | current_rent | status | notes |
|---|---|---|---|---|---|---|
- Dates:
YYYY-MM-DD statusvalues:active|renewed|month_to_month|vacating|vacant- Workflow only alerts on
status = activerows; update status to clear from the digest
2. Credential + contact + placeholders
Standard pattern (see lien-deadline-reminder/README.md for full setup). Replace in workflow.yaml:
- <<GOOGLE_WORKSPACE_CREDENTIAL>>
- <<TENANTS_SHEET_ID>>
- <<LANDLORD_PUBLISHER>>
3. Schedule
Daily 6:30 AM.
Liability note
This is a reminder, not an automated tenant-facing message. The landlord/PM reviews the digest and decides whether to send renewal offers, raise rent, or non-renew. No auto-send to tenants — that's a state-specific compliance concern (notice format, timing, retaliation laws) we deliberately don't touch.