Everything said about collections across two Slack threads, four months of WhatsApp voice memos, five ADRs and eight documents — reconciled against what is actually running in production. With a map of how the pieces connect and lo-fi sketches of every surface.
Read this first: the premise has moved
The plan was "three phases, a lot of work." The code says something else. Collections has been live in production since 28 July — a Colorado statute ruleset with per-rule citations, a two-stage compliance harness on every message, and a human approval gate enforced by the type system. Twelve Camellia residents sit in composed-but-unsent cadences right now.
Nobody has been texted. Not one resident. The blocker was never engineering.
Decided · 19 Aug · Gera
First real send → hand-pick one resident and watch it end to end
The $70k question → show every account, default-filtered to 31+ days
Demand builder → pull it into Phase 1
Quiet hours → the resident's clock, not the property's
AI disclosure → keep reactive honesty (answer if asked, don't volunteer)
Counsel → proceed on accepted risk, payment plans carved out separately
Where we actually are
~13klines of collections code shipped
0residents ever contacted
12open cadences, all one Denver property
$70,100hidden from /collections — 59 of 84 accounts
5 hrsJoanna spends monthly on 10-day demands
19defective demands across 12 units — measured, not estimated
48.6%of served demands end in rental assistance
1.3%of tracked units were ever evicted
Already shipped
Where
Colorado statute ruleset — every rule carries its own C.R.S. citation
Temporal dun cadence — 21/28/31d, 20-rung gate stack, emergency brake
collectionsChaseWorkflow
The map — how it all funnels
Four bands, left to right: what comes in, what turns it into state, what a person looks at, and who acts. Routing is orthogonal so no two paths cross. Colour marks the phase that builds it.
What the map is really saying
The ledger is not the source of truth for collections — the inbox is. AppFolio gives you a balance and nothing else. Whether someone applied for assistance, got approved, went to the lawyer, or got evicted lives only in the Camellia email. That is why Phase 1 is an ingestion project, not a UI project.
The two red edges are the current defects. A resident reply is supposed to stop the cadence and cannot when it arrives by email. And a bounced demand loops all the way back to the start — 19 times across 12 units.
Everything converges on two screens./collections for "what is going on across the portfolio," tenant detail for "what is going on with this person." The other three are actions, not places you browse.
The Delinquency Lifecycle
The graph Fede asked for — every state a resident can occupy, and every way out.
It's kind of like a graph, where the nodes branch off, and then it might go back in time, or if it's canceled you get reset.
Fede, 19 Aug
Click any state to see what it means, what is true when a resident is in it, and what we are allowed to do. It is not a pipeline — Colorado law puts a near-universal reverse edge on it: a tenant may pay in full and stop everything right up to judgment, and the court must vacate a judgment already entered.
Three properties the data structure has to have
Two independent axes, already shipped.CollectionsStatus is derived — what the system observed. CollectionsStage is operator-set — what a human declared. Deliberately not collapsed.
The middle three are a branch, not a ladder. An account reaches a payment plan or assistance or goes to the firm.
Every node needs a reverse edge — and "assistance approved" is a second stop-the-world edge that kills the eviction branch specifically.
What actually happens — measured
We swept the property's own mailbox: 15,112 messages, Jan 2024 → Aug 2026, and reconstructed the real journey of every unit that entered collections. 76 units, 1,294 dated events, 55 distinct states. The stage enum has seven.
The finding that reorders the roadmap
Of the 37 units that reached a demand: 48.6% ended in rental assistance, 37.8% paid, and 2.7% were evicted. Assistance is not a side branch off the graph — it is the modal outcome of serving a demand, and it is 3× the demand volume in the mailbox (471 messages vs 162).
Eviction is the rare terminal state. We had been designing the eviction path as the spine and the assistance path as a detour. It is the other way round.
The funnel
Stage
Units
Share
Balance flagged
68
89.5%
Demand prepared or submitted
31
40.8%
Demand served
28
36.8%
the physical, legal act
Filed with the court
17
22.4%
Trial held
4
5.3%
Writ issued or at the sheriff
5
6.6%
Evicted
1
1.3%
one unit, in 32 months
How long each step really takes
n = units where the transition was observed to complete, out of 76. One measurement per unit, first occurrence of each state. Dates come from email, so hover any n to see what that row excludes.
Transition
Started
n
Median
Range
Balance flagged → demand served
68
23
157 days
0–764
Demand submitted to the firm → served
31
14
59 days
0–349
Demand served → any resolution
28
21
68 days
0–378
Assistance applied → approved
24
17
76 days
0–932
Assistance approved → paid
18
13
2 days
0–88
Read these medians with the gap between "started" and "n" in mind
Row 1 is the funnel, not missing data. 45 of the 68 flagged units never got a demand — because they paid. So 157 days describes the units that escalated, not a typical resident.
Rows 4 and 5 are censored, and the medians are optimistic. Seven assistance applications never reached approval, and we separately counted nine "stalled" events. The 76-day median is the median of the ones that worked; the painful cases are excluded by construction. Same for the five approvals with no recorded payment.
Row 2 is a visibility gap. Service is a physical act — someone walking to a door — and it does not reliably produce an email. 17 of 31 showing no service event more likely means we cannot see it than that it did not happen.
All dates are email timestamps, so they record when we learned of an event, not when it occurred. A unit that went through two demand cycles contributes one measurement, not two.
The last row is still the one to design around. Approval is slow and uncertain; payment after approval is nearly instant. So the moment that matters operationally — the one that must stop a chase, a demand and a filing — is approval, not receipt of funds.
The reverse edges are real, and they fire from the deepest states
94 recorded backward transitions. This is not an edge case to accommodate; it is a third of everything that happens.
Reversing event
Instances
Deepest state it reversed from
Paid in full
23
writ at the sheriff
Stop-process requested
20
writ at the sheriff
Assistance paid
19
after eviction (2 instances)
Assistance approved
17
writ at the sheriff (4 instances)
Case dismissed
7
trial
Demand cancelled
5
served
The most valuable automation is not the dunning text
“Stop-process requested” appears 20 times — the message that says cancel the eviction, assistance is coming. Four of those arrive after a writ is already at the sheriff. Today nothing in the product can hear one, because the collections case table is empty and the signals that would carry it are written to a log nobody reads.
Catching a stop request and making it actually stop the process is worth more than any message we could send.
The operational tax
109 failure events — 8.4% of all recorded collections activity.
Failure
Events
Units
Duplicate work
30
20
the same task done twice
Defective demands
19
12
we thought this was 4
NSF / returned payments
21
13
Assistance stalled
9
6
application went quiet
Firm request unanswered
9
6
counsel asked, nobody replied
Thread dropped
7
6
Deadline missed
4
4
The defective-demand count is nearly five times what we believed. It also explains most of the duplicate work: a bounced demand has to be re-served from scratch, and the re-doing shows up as its own events on the same unit.
States nobody had listed
The seven-value stage enum is missing most of what actually occurs. Among the 55 observed states, these carry real volume and have no representation today:
stop_process_requested 20
demand_defective 19
payment_returned_nsf 21
duplicate_work 30
assistance_docs_requested 45
assistance_stalled 9
stipulation_agreed 6
prevailing_party_fee 8
Method: read ~/code/tmp/collections-corpus/journeys.md for the per-unit timelines and TAXONOMY.md for the tag rules. 91.8% of collections mail is classified by subject template and sender domain alone, at 96.8% measured precision over 309 hand-verified messages.
The three phases
Progress is tracked separately →Collections — Phase Tracker. Every item below appears there as a checkbox with an evidence column for the PR or Slack post. This page is the reasoning; that page is the state.
Phase 1 · Track
PHASE 1
Track — make the pipeline visible
no resident is contacted
Kenya stops emailing the site team to ask what's happening, and Joanna stops filling a legal form with a pen. Nothing in this phase sends a message, so nothing in it needs a lawyer or a carrier. Assistance leads — it is the modal outcome of a demand and 3× the mail volume, so it gets built first, not last.
Assistance trackingThe main line: 471 messages, 48.6% of served demands end here. TWO programs — Brothers Redevelopment (TRUA/RUMA) and CED Project (CERA, $10k cap, 90-day check expiry). Approval is the moment that must stop everything; payment follows in a median of 2 days.
Stop-process detection20 recorded "cancel the eviction, assistance is coming" messages, 4 of them after a writ was at the sheriff. Nothing today can hear one. Highest value per line of code in the whole module.
Lawyer email ingestionTschetter Sulzer, on BOTH domains — thslawfirm.com (older) and tsm.law (newer) plus their Zendesk. Key on Client 54784 + case/ticket number, never on a name.
Auto-reply guardThe Zendesk demand-processing leg is being deleted as bulk mail — including the April **Defective Demand | Unable to File**. The allowlist has one domain in it.
Signals → stageThe extractor already emits delinquency and eviction_legal and literally nobody reads them. Wire them to the state machine.
Demand builderDate math first, then the AcroForm fill. Pulled up from Phase 3 by decision 3.
/collections rollupAdd portfolio totals, a pipeline strip and a needs-you queue to the page that already exists.
Two blocking bugsThe zero-balance ratchet, and AppFolio's discarded PaymentPlan column.
The collections page
It already exists. What changes is that it grows a top section — because today it answers "who owes money" and Kenya's actual question is "what's happening and what needs me."
/collectionssame shape as the renewals board
Aging cards — click to filter, the way month cards work on renewals
0–30 days
$28,390
41 accounts
31–60
$5,184
9 accounts
61–90
$3,135
5 accounts
91+ days
$690
2 accounts
One table, three tabs — the renewals vocabulary, in collections terms
Requires action (6)
In progress (41)
Resolved (12)
Total owed $70,100 · collectible $41,900
Unit
Past due
1–30
31–60
61–90
91+
Pays
Stage
What's waiting
202
4,180
1,395
1,395
1,390
—
MO
assistance
TRUA says no application — site says yes
114
2,940
980
980
980
—
MO
assistance
Approval promised, nothing heard
517
5,610
1,870
1,870
1,870
—
MO
demand
Ready for the firm — send?
612
1,205
1,205
—
—
—
online
—
Asked for a payment plan
Showing 25 of 84 · show all 84 ($70,100)
Deliberately the same shape as the renewals board — aging cards where renewals has month cards, then one table with three tabs. Fede's point: a PM who has learned one operations page should not have to learn a second. Renewals uses Settled · Upcoming · Requires action; the collections equivalents are Resolved · In progress · Requires action.
One thing to decide: renewals defaults to Settled — Sean's reasoning was "the first thing you see is everything that's been accomplished." Collections may want to default to Requires action instead, because Kenya's actual question is "what needs me." Consistency argues one way, the job argues the other.
Tenant detail — the collections panel
Row click already goes here; the drawer was deliberately deleted on 31 July. This is the section that gets added.
/tenants/[id]chronology exists · graph strip and inbox rows are new
Unit 202 · lease thru 2027-03 Flagged for evictionAssistance appliedSpanish
$4,180
past due · 71 days
Where they are
Current → Late → Past due → Assistance applied → Demand served 8/12 → At firm → Filed
↑ returns to Current by paying in full, any time before judgment
Chronology — three sources, one spine
demand 8/12 · Served, posted after 2 attempts · PVD 8/22 — 10 full days ✓
assistance 8/09 · TRUA application submitted — from inbox
clara 8/03 · Reminder sent (es) · $4,180 · approved by Gera
reply 8/03 · "voy a aplicar para ayuda" → cadence paused
lawyer 7/28 · TSM: file opened — from inbox
The assistance and lawyer rows are the entire Phase 1 build, seen from the tenant's side. Today those two facts exist only as unread email.
The demand builder
Internal, never resident-facing. Fills the Tschetter Sulzer form from the ledger so Joanna signs instead of transcribing.
demand buildernew · fixes the April bounce
Denver Demand for Compliance or Possession TSM form 02ABD rev 4/24/24
Auto-filled from ledger
The date math — the whole reason this exists
Attempt 1 8/10 4:15pm
Attempt 2 8/11 9:02am
Posted 8/12
→ Clock starts 8/13. Pay-or-vacate = Aug 22 — 10 full days ✓
April 2026: served 4/13, PVD 4/22 = 9 days. Four bounced. Re-served from scratch.
Elements — fails loud if any is blank
Grounds: nonpayment
Amount: rent only
Premises
Language: es ✓
Mediation-rights statement ✓
Denver rights notice ✓
Government assistance affidavit — required before it reaches the firm
Did the tenant disclose SSI / SSDI / Colorado Works in response to a written inquiry? not yet askedsend inquiry
Never signs
Never serves
Never emails a tenant
That affidavit row is a build item nobody wrote down. One lawful answer on the form is "the tenant did not disclose in response to a written inquiry from the landlord" — so sending and recording that inquiry becomes a required node upstream of every demand.
Phase 2 · Talk
PHASE 2
Talk — turn on the resident conversation
first real send happens here
The twelve queued cadences start going out, one hand-picked resident first. The hard part isn't sending — it's handling what comes back.
The first sendOne hand-picked resident, watched end to end: smallest balance, online payer, no dispute history. Decision 1.
Reply classificationNine intents. The biggest unbuilt piece in the whole module — it's what turns a dunning bot into a collections coordinator.
Email must stop a dunThe reply gate is phone-keyed; email conversations aren't. Today an emailed hardship doesn't stop anything.
Language preferenceNot a nicety — in Colorado the demand must be in the tenant's known primary language, which makes it a statutory element.
Escalation upwardOwner and regional-manager alerts: "eviction danger," "decision needed," with a recommendation attached.
Quiet hours on the resident's clockDecision 4. Needs an area-code resolver and an amendment to ADR-0125.
What comes back — the three hard stops
Three of the nine reply intents carry rules we currently violate. These are not tone preferences; they're the difference between a collections coordinator and a liability.
reply classifiernew · the biggest gap
Inbound
"perdí mi trabajo, puedo pagar el 15?"
Classified
hardship
promise-to-pay 8/15
language: es
What happens
STOP the cadence — never negotiate. Clara acknowledges, does not offer terms.
Record the promise date · check on 8/16 whether it landed
Escalate to the PM with context, in one message, not a queue item
The other eight
paying today
already paid
payment failed
wrong amount
disputes balance → never argue · pause everything
maintenance complaint → withholding is a statutory defense
wants a plan → surface, don't offer
legal question → human, immediately
"Disputes balance" is the one with live risk: nothing pauses the cadence today, so a resident who says "that number is wrong" keeps getting dunned with the number they disputed.
The approval queue
/reviewbuilt · this is the only thing that can text a resident
Unit 612 · past due $1,205 · touch 1 of 3 · SMS · en
written 9:04am
The text, exactly as it will be sent
Hi ——, this is Camellia Apartments. Our records show a past-due balance of $1,205 on your account. If you've already paid, thank you — please disregard. Otherwise you can pay through your resident portal: —— . Questions? Just reply and we'll help. Reply STOP to opt out.
Checked live at approval, not at compose
balance still $1,205 ✓
not exiting ✓
no opt-out ✓
8am–9pm ✓
Approve & send
Reject
No edit affordance · no bulk approve · expires in 48h
Deliberate design, worth not undoing: there's no "approve all" button. A button that approves forty at once is the automation flag again wearing a different hat. And the facts are re-read at the moment you click — if they paid at noon, a 10am approval is refused rather than sent.
Phase 3 · Do the paperwork
PHASE 3
Do the paperwork — Clara as a coworker
per-property · needs counsel
The repetitive human work disappears. Joanna signs instead of filling; Clara handles the assistance packet she does every week; payment plans become policy-bound rather than a manager's judgment call.
Magic-link signatureExpiring link, no login, one tap to sign and one to approve. Then two levels beyond: auto-sign with a stored signature, and auto-print to the office printer.
Assistance packetThe same form + tenant ledger + I-9, every week, forever. Clara fills, Joanna signs, we submit, Clara answers the program's follow-up questions.
Payment plansPolicy-bound, with PMS write-back so AppFolio stops contradicting Clara. The one capability that genuinely needs a lawyer first.
Owner reportingDelinquency trend and recovery rate — the case study Sean wants.
Joanna's signature surface
From my phone, I just… there's no login, there's no scroll down, it's just like, sign here, done.Fede, 19 Aug
Camellia Apartments
1 of 3 waiting
10-day demand · Unit 202
Rent only — $4,180 Pay-or-vacate: Aug 22 Language: Spanish ✓ Denver rights notice ✓
[ PDF preview ]
Sign & approve
Something's wrong
Expires in 23h
Fede's escalation ladder: (1) she taps to sign; (2) we sign with her stored signature and just tell her it's ready; (3) it prints itself in the office, so she walks in to five completed documents. He was most excited about (3) — "now you're talking my language." The legal floor stays either way: an AI cannot sign, and a signed page on a printer isn't legit until a human posts it on the door.
The assistance packet
It's this form, the tenant ledger, and the I-9 — it's always the same. They fill it out every week. It's a pain in the ass.Fede, 11 Aug
assistance packet · unit 202new
TRUA application auto-filled
Tenant ledger from AppFolio
I-9 auto-filled
Lease copy on file
Waiting on
Joanna's signature — magic link sent 9:12am
After submission
Program emails a follow-up question → Clara answers from the packet
Can't answer → asks Joanna once, saves it, never asks again
Approved → stage advances → eviction branch stops
This is the clearest "Clara is a coworker, not a dashboard" story in the whole product — a weekly, repetitive, form-shaped task that disappears entirely, and the resident gets a faster answer as a side effect.
Why payment plans are last
Every source lands the same way. Offering terms is negotiating a debt — the behaviour debt-collector rules are written about, and the least defensible place to be wrong about first-party status. Worse, accepting a partial payment after a demand is served creates an implied-waiver defense that can void the notice the office spent ten days building. Fede put it last deliberately: "the most complicated, but we will need it eventually." Clara may surface a plan from a pre-approved menu for a human to offer. She may never negotiate one.
Things worth knowing before you build
Don't present the readiness deck
It's the most quotable collections doc we have and it's stale. Five of its six critical findings are fixed. Its headline framing — "distance to live: 1 line" — describes a constant that no longer exists. Same for the "compliance harness gates nothing" slide: gates 1d and 4b wired it in the next day.
A paid-off balance can never return to $0
refuseZeroRegression in pms/writers/guards.ts refuses a zero write over a positive last-known unless hasPaidEvidence — and nothing in production ever passes that flag. Born from a real incident, over-corrected into a one-way ratchet. /collections reads that row. Fix before anyone demos the page.
The Colorado rules that shape the product, not just the copy
A text is never service. §13-40-108 lists exactly three methods and none is electronic. Clara must never call anything she sends a notice, a demand, or the start of a clock.
Late fees can't drive an eviction, can't be recouped from a rent payment (rent is paid first), can't post before day 7, and cap at the greater of $50 or 5%.
The right to cure outlives the notice window. "Too late to pay" is false on day 11, day 30, and the morning of trial — the most consequential false statement available to the agent.
Accepting a partial payment after serving a demand creates an implied-waiver defense. This is why payment plans stay human.
Two service attempts on separate days before posting. Service state is its own sub-machine.
Strict compliance, not substantial. The cheapest defect voids the demand as thoroughly as the gravest.
Glossary
Collections has its own vocabulary, most of it borrowed from Colorado landlord-tenant law and from the two agencies we deal with. This is everything that appears on this page or in the corpus, in plain English.
Money and the ledger
Arrears
Rent that is owed and unpaid. "In arrears" = behind. Interchangeable with past due; arrears is the accounting word, past due is the operational one.
Delinquency
The state of being behind on rent. A "delinquency report" is the list of who owes what. Our internal threads call it deliq update — often misspelled, and the misspellings are load-bearing for parsing.
Aging / aging buckets
Splitting a balance by how old each piece is — 0–30, 31–60, 61–90, 91+ days. A $4,000 balance that is all 0–30 days is a different problem from one spread across 90+. This is the standard way owners read delinquency.
Ledger
The per-resident account statement: every charge and every payment, in order. The firm asks for it with every filing. It is the source of the number in any demand.
Folio
AppFolio, in speech. "It's on the folio" = it's in the PMS. (Whisper renders it "a folio" or "that folly" in our transcripts.)
PMS · Property Management System
The system of record for units, leases, ledgers and payments. Camellia's is AppFolio. It holds the money and almost nothing else — assistance status, lawyer status and eviction outcomes live only in email.
Rent roll
The snapshot of every unit: who lives there, what they pay, what they owe.
Grace period
Days after rent is due before a late fee may be charged. Colorado: 7 calendar days, and no fee may exist before day 7.
Late fee
The penalty for paying late. Colorado caps it at the greater of $50 or 5% of past-due rent, it must be disclosed in the lease, and you can never evict over one.
NSF · Non-Sufficient Funds
A payment that bounced. 21 events across 13 units in our data. An NSF turns a paid account back into a delinquent one, silently.
Certified funds
Money that cannot bounce — cashier's cheque or money order. A resident flagged Certified Funds Only has lost the right to pay by ordinary cheque or portal, usually after bounces.
Money order
Prepaid paper payment, bought at a store. Common among unbanked residents — a large share at Camellia. Takes about a week to reach the bank, which is why "you're late" messages misfire on money-order payers.
Partial payment
Paying some but not all. Normal here, not an anomaly — but accepting one after serving a demand can waive the demand, which is why we never negotiate.
PTP · Promise To Pay
A resident committing to a date. The office tracks these by hand today. 90 recorded instances across 40 units.
Payment plan
A structured catch-up schedule — e.g. $300 every Monday. Property-specific policy; the one capability that most needs a lawyer before we automate it.
Concession
A discount or credit given to a resident. Shows on the ledger as a negative line and can make a balance look wrong if credits are ignored.
Disposition letter · S/D transfer (security deposit)
The move-out accounting: what the security deposit covered and what is still owed. "S/D" = security deposit.
Chasing the money
Dunning / a dun
Contacting someone to collect a debt they already owe. A "dun" is one such message. Distinct from a reminder, which goes out before or just after the due date — the two carry very different legal weight, and conflating them is how a decision scoped to reminders gets applied to collections by accident.
Collections
The whole process of recovering unpaid rent, from first reminder through eviction. Also, confusingly, "in collections" as a PMS flag meaning the account was handed to a collection agency — a different and narrower thing.
Cadence
The schedule of outreach — ours is 21 / 28 / 31 days. Each message in it is a touch.
Chase
Our word for one run of the cadence against one resident.
First-party vs third-party
A creditor collecting its own debt is first-party and largely exempt from federal debt-collection law. A hired collector is third-party and heavily regulated. Which one PropFlow is, through a three-layer owner → manager → vendor chain, is the open legal question.
The legal path
Demand · Demand for Compliance or Possession
Also called the 10-day demand. The written notice giving a resident 10 days to pay or move out. Required before any eviction filing in Colorado. A physical document, served by a human.
PVD · Pay-Or-Vacate Date
The deadline printed on the demand. Must be 10 full days from the day after service. Getting it wrong by one day voids the demand — this caused 19 defective demands in our data.
Service
Legally delivering the demand. Colorado allows exactly three ways: hand it to the resident, leave it with a household member 15+, or post it conspicuously — and posting is only lawful after two failed personal attempts on separate days. Email and text are never service.
Defective demand
A demand the firm refuses to file on because something on it is wrong — usually the date. Everything restarts, including re-service.
Cure
Fixing the problem — here, paying what's owed. The right to cure in Colorado runs all the way to judgment: a resident can pay in full the morning of trial and the case must be dismissed.
Notice to Quit
A harsher notice giving no chance to fix anything — for repeat or serious violations. Not used for ordinary nonpayment.
FED · Forcible Entry and Detainer
The legal name for an eviction case in Colorado. You'll see it on court paperwork.
Summons and Complaint
The documents that actually start the court case, filed after the demand expires uncured.
Answer
The resident's written response contesting the case (form JDF 103). An answer means a trial gets set and the firm needs the lease, ledger and demand immediately.
JDF forms
Colorado's numbered court forms. JDF 101 = the complaint that starts an eviction, JDF 103 = the resident's answer.
Stipulation
A written deal filed with the court — typically "resident stays and pays on this schedule." 6 units in our data.
Judgment
The court's ruling. Default judgment means the resident didn't show up. You'll see the code D-J-POSS — default judgment for possession.
Writ of Restitution
The court order letting a sheriff physically remove someone. Cannot issue for 48 hours after judgment, cannot be executed for 10 days — 30 days if the resident receives SSI, SSDI or Colorado Works.
Lockout
The sheriff actually performing the eviction.
Prevailing party fee
Legal costs the court awards to whoever won. Can only be charged to the resident if the lease says so.
Mandatory mediation
Colorado requires mediation before filing if the resident receives SSI, SSDI or Colorado Works cash assistance. This is why the demand packet includes a government-assistance affidavit — and why we have to ask, in writing, and record the answer.
Assistance programs
Rental assistance
Government or charitable money that pays a resident's back rent directly to the landlord. The single most common way a demand resolves here — 48.6% of served demands. Approval stops an eviction.
TRUA · Temporary Rental & Utility Assistance
Denver's program, administered by Brothers Redevelopment. Covers up to about 6 months of arrears. Needs the ledger, a W-9 and payee details.
CERA · Colorado Emergency Rental Assistance
Run by the CED Project — Community Economic Defense Project. Caps at $10,000; its cheques expire 90 days from issue. Requires a non-eviction agreement for the covered months.
ERAP · Emergency Rental Assistance Program
The federal-era name; still appears in resident emails.
Commitment letter
The program's written promise to pay, issued before the money arrives. Usually accompanied by a request to halt the eviction — this is what a stop-process request looks like in the wild.
SSI / SSDI / Colorado Works
The three benefit programs that trigger mandatory mediation and the 30-day writ delay. SSI = Supplemental Security Income; SSDI = Social Security Disability Insurance; Colorado Works = the state's cash assistance.
Section 8 / housing authority
Federal rental subsidy. If a resident is on it, the housing authority must be notified at the same time as the rent demand, or the case gets dismissed with fees against us.
Who's who
TSM / Tschetter Sulzer Muccio
The eviction law firm. Our client ID with them is 54784. Two email domains over time: thslawfirm.com (older) and tsm.law (newer), plus a Zendesk for demand intake.
REC number
The firm's internal case/record number, 5–6 digits. This — not a name and not a court docket — is the reliable identifier for a case.
Docket
The court's own case number, formatted like 25C73531. Appears in only 3 of 15,112 emails, so it's not usable as a key.
Manhattan Venture LLC
The landlord entity that appears as plaintiff on Camellia's court filings.
Compliance
FDCPA · Reg F · Fair Debt Collection Practices Act · Regulation F
Federal debt-collection rules. They cap contact frequency and forbid certain language. Whether they bind us depends on the first-party question above; we honour the conduct limits either way.
TCPA · Telephone Consumer Protection Act
The federal texting and calling law. Sets quiet hours of 8am–9pm in the recipient's local time and requires honouring opt-outs across channels. Records kept 4 years.
10DLC · A2P · 10-Digit Long Code · Application-to-Person
Carrier registration for business texting. Each use case is registered separately — rent-related messaging needs its own campaign, and ours currently does not have one.
Warranty of habitability
The landlord's duty to keep the unit liveable. A resident withholding rent over unmade repairs has a statutory defense — which is why a maintenance complaint inside a collections thread must stop the process, not be answered around.
Retaliation
Punishing a resident for asserting their rights. Damages are the greater of three months' rent or 3× actual, plus fees — but only where a habitability breach is also proven.
LEP · Limited English Proficiency
In Colorado a demand must be in the resident's known primary language, so language preference is a legal element of a valid notice, not a courtesy.
Our own words
Status vs Stage
Two deliberately separate axes. Status is derived — what the system observed. Stage is operator-set — what a human declared happened outside PropFlow. Never collapse them.
Signal
A structured fact extracted from an email and attached to a tenant for display. By ADR-0097 a signal may never create a record — only advance something that already exists.
Dun review
A composed but unsent collections message sitting on /review waiting for a human to approve it. 77 of them exist; none has ever been sent.
Chase receipt
The durable record that a cadence ended, and why, so the daily walker doesn't immediately re-enrol the same person.
Stop-process request
Our name for the message — usually from an assistance caseworker — saying "cancel the eviction, funding is coming." 20 recorded instances, 4 after a writ was already at the sheriff.
Where this came from
Slack — both linked threads in full, plus every collections mention in #transcripts, #agent-smith and #alerts from April to today (~25 searches).
WhatsApp — 8,245 messages across the founder DMs and both group chats, with 295 voice memos transcribed and read. The domain-expert playbook (30 July) and Fede's operational memos (11 Aug, 18 Aug, 19 Aug) are the densest sources.
ADRs — 0112 (the shipped lane, 45KB, 4 addenda), 0117 (the pilot program), 0125 (the approval gate), 0097 (signals never create records), 0122, 0126.
Published artifacts — collections-pilot-brief, colorado-collections-law, collections-readiness-deck, collections-policy-ui, rent-reminder-decisions, architecture-source-of-truth.
Planning docs — the 653-line counsel brief, the A2P packet, the balance-fix handoff (§3.1 carries the six answered decisions and the 8-stage target workflow), the go-live packets.
Code — the collections module, compliance ruleset, Temporal workflows, signal extractor, review queue and DynamoDB schema, read against origin/main.
Drive — the Clara-generated Denver 10-day demand specimen (24 July), which supplied the exact statutory spine above.
Wireframes use fabricated resident data. Dollar figures in the counters and aging tables are the real measured Camellia numbers.