Cross-loop dependencies
This file is the single source of truth for what flows between loops. Each loop's own spec references this file for its cross-loop section. When a dependency changes, update it here.
Dependency graph
| From → To | What flows | Quality criterion |
|---|---|---|
| operator-loop → renter-loop | Live, accurate, discoverable units | Unit published in source system appears in renter-facing index within minutes |
| operator-loop → renter-loop | New-unit events (triggers perfect-fit alert) | Event emitted within minutes of publication; consumed by renter-loop.matching.perfect-fit-alert |
| renter-loop → operator-loop | Diagnostic signals on unit-level conversion patterns and concierge-process friction attributable to supply (pricing, representation, availability, data) | Signals packaged with evidence and proposed action; resolved or declined with logged reason |
| renter-loop → operator-loop | Lease execution handoff package | Complete at handoff; operator can execute without follow-up questions |
| operator-loop → financial-loop | Signed leases with operator-side confirmation | Monthly confirmation closes within month-end cadence |
| renter-loop → financial-loop | Signed leases ready for invoicing | Zero signed-but-not-invoiced cases at month close |
| financial-loop → operator-loop / renter-loop | Invoicing, reconciliation | Complete and accurate monthly |
| platform-loop → operator-loop / renter-loop | Shipped infrastructure (conversation, unit index, multi-brand config) | Meets documented success criteria; original blocker confirmed resolved |
| operator-loop / renter-loop → platform-loop | Specs for blockers; ship validation | Specs complete; ship validations executed and closed |
| strategy-loop → all loops | Priorities, budget envelope | Communicated in time for each loop's planning cadence |
| all loops → strategy-loop | Operational input for strategy cycles | Timely and honest |
| fundraise-loop ↔ strategy-loop | Capital plan, business context | Coordinated; no surprises on either side |
The two most important cross-loop connections
Renter Loop ↔ Operator Loop diagnostic feedback
The single most important cross-loop connection in Rentiful. The Renter Loop sees, in real time, which units convert and which don't, and which matches succeed or fail. The Operator Loop is the only place that can act on what those signals say. If this connection is weak — signals not produced, signals not received, signals not acted on — the marketplace stops compounding and starts decaying.
Owners: Renter Manager (signal production) and Operator Manager (signal action). Cadence: continuous, reviewed at the weekly cross-loop sync.
Operator Loop → Renter Loop new-unit notification
The perfect-fit alert operation is only possible if the Renter Loop is told about new and updated units from the Operator Loop in near-real-time. This is a hard dependency, not a nice-to-have. A new unit that takes hours to become matchable is a missed concierge moment for the renters who would have wanted it most.
Owners: Platform Loop owns the event infrastructure; Operator Loop owns publication speed; Renter Loop owns consumption. Cadence: event-driven, measured by end-to-end latency from operator publication to renter alert.
Standing cross-loop cadences
- Weekly cross-loop sync. Loop owners review diagnostic signals, platform queue, and any blockers. Light-weight; focused on unblocking, not status.
- Monthly financial close. Operator Loop confirms signed leases; Financial Loop closes invoicing; Renter Loop reconciles attribution.
- Quarterly strategy cycle. Strategy Loop resets priorities and budget envelope based on operational input from all loops and capital position from Fundraise Loop.
Notes on using this file
A cross-loop dependency is an expectation that something will flow between two loops at a known quality. It is not a permission structure. Loop owners don't need to ask permission to consume a dependency; they need the upstream loop to deliver it. When a dependency fails, the question is always: what breaks in the consuming loop, and what needs to change upstream to unbreak it?
Changes to this file should be deliberate. Adding a dependency is adding a coupling between loops, and couplings have cost. The existing list is the minimum set required for the business to function.