A proposal for one module on/off system: each customer sets every module to off, drafts or live, and every action Clara takes has to pass a gate that checks that setting.
2026-09-28 · green-lit by Gera in chat, ~20:50 UTC · Phase 1 (Maintenance) started · the five questions went to Fede in Slack · drafted in session "module-switch"
Today "off" mostly just hides the page. About a dozen places each check the switch their own way, and some never check at all. Gatekeeper puts the switch in one place and lets the important actions happen only through gates that check it.
Approve below to start Phase 1: Maintenance, built end to end in small PRs. The details, the build order and five questions for Fede are in the sections underneath.
Build Phase 1?
Pick green light and the maintenance part gets built first, in small pieces, while Fede answers the five questions above.
On Sep 28 Clara created a maintenance work order in AppFolio at a customer building with Maintenance switched off. The code that created it checked a different switch, the building's rollout stage, which said "live". Two fixes shipped the same day (#13227, #13269), but the pattern will repeat until there's one system.
| Module | Setting | When off, Clara will | Owns these actions |
|---|---|---|---|
| Leasing | Live | — | Tour bookings, guest cards, prospect messages |
| Maintenance | Off | Transfer calls to the customer's call center, forward emails to the office | Work orders, vendor dispatch, repair updates |
| Renewals | Drafts | — | Renewal offers, lease updates in AppFolio |
| Collections | Off | Stay quiet and leave it for the team | Rent reminders, balance messages |
| Always on | Core | Can't be switched off | Emergencies, alerts to the customer's team, login codes |
One customer's settings, as an illustration. Each module is set for the whole company, and any building can override it.
Off The module does nothing. Clara follows the customer's fallback and never says a ticket was filed.
Drafts Clara prepares everything, and a person approves it before anything goes out. This is the "few days of review" step used when leasing launched.
Live Clara handles it on her own.
Always on A fixed label, not a setting. Emergencies and safety messages always get through.
Clara works out what the message is about, the code checks whether this customer turned that on, and if they didn't, the code does whatever the customer chose instead. A second check right before anything goes out catches anything the first one missed.
The only way to send, create a record, or write to AppFolio is through a gate, and each gate requires the action to say which module it belongs to. Most tools declare their module once, in one complete list of every action, so a new action can't be added without one. A plain "required field" isn't enough on its own: twice in this repo one was satisfied by passing a blank.
A fixed test runs on every PR and fails it if anything sends or writes while skipping a gate. The first piece already exists for text sends. The AI reviewer is only an extra pair of eyes and is never relied on.
| Piece | Status |
|---|---|
| One on/off switch per module per company, with building overrides | Live |
| Pages hide when a module is off | Live |
| Work orders refused at a building with Maintenance off (after a call; during a call or text) | Live · #13227, #13269 |
| Clara works out the topic of a maintenance text | Live |
| Sends marked "exempt, no module" (87 sends in 70 files, including Clara's normal replies) sorted into a short always-on list | Not started |
| No texts, emails or calls sent from a module that's off | In progress |
| Build check for text sends that skip the gate | In progress |
| Off / drafts / live settings | Not started |
| Fallback menu per customer | Not started |
| Shared gates with a required module label | Not started |
| AppFolio write gate | Not started |
| Build check covering every action | Not started |
Each phase ships as several small PRs, and each PR works on its own.
Recommended: yes.
Off means Clara stays out of it, drafts means a person checks her work first, live means she runs on her own.
Recommended: calls transfer to the team, emails forward to the team, texts get a short "your property team handles this" reply.
A resident never hits a dead end. Their request always ends up with a person on the customer's side.
Recommended: yes, no exceptions, as Fede proposed in Slack.
If a customer turned maintenance off, nothing we run puts a work order into their AppFolio, day or night.
Recommended: no. Off stops Clara and automation, not people.
A property manager can still create a work order themselves even though Clara won't.
Recommended: the topic of the conversation.
If the resident is asking about a repair, the Maintenance setting decides whether Clara answers.