Rito (rito.redbroomsoftware.com)
Real estate private equity (REPE) platform — deal pipeline management, capital call orchestration, AI-assisted underwriting, and contract tracking for fund managers.
URL: https://rito.redbroomsoftware.comStatus: LIVE Tier: T2 (vertical SaaS primitive)
T1 apps are indispensable horizontal primitives. T2 apps are vertical SaaS or single-domain primitives — primitive-like in their domain but not universal dependencies.
What you can integrate
- Deal lifecycle events — receive
deal.createdanddeal.stage_changedto trigger downstream CRM or billing flows - Capital call events —
capital_call.createdfires when a fund manager issues a capital call to investors - AI document extraction — extract structured data from investment memos, appraisals, and title documents
- Contract management — list, create, and retrieve investment contracts per deal
- Subscription gating — Rito respects Camino subscription tiers; expired or past-due accounts lose access to advanced AI features
Authentication
Authorization: Bearer <api_key>
Content-Type: application/jsonUser identity flows through Camino SSO. Fund-level isolation is enforced via tenantIdPattern: rito_fund_{id} — every API call is scoped to the authenticated fund.
Endpoints
| Method | Path |
|---|---|
| GET | /api/activity |
| POST | /api/ai/bank-package/:dealId |
| GET, POST | /api/ai/copilot |
| POST | /api/ai/extract |
| GET | /api/ai/extract/:id |
| POST | /api/ai/extract/:id/apply |
| GET, POST | /api/ai/intelligence/:dealId |
| GET | /api/ai/jobs |
| POST, PATCH | /api/ai/site-optimizer |
| GET | /api/auth/me |
55 total — 2 admin/cron/internal (hidden) — +43 more primary endpoints not shown. Source: src/routes/api/**/+server.{ts,js} in the rito repo.
Events emitted
| Event | Receivers | Description |
|---|---|---|
ai.usage | colectiva | AI token usage report for metering |
bank_package.generated | camino, constanza | Rito generated a bank financing package — Constanza pre-prepares fiscal structure for the loan; Camino logs the activity. |
capital_call.bulk_created | camino | A pro-rata capital call was issued to multiple investors simultaneously in Rito — Camino logs the batch for CRM activity. |
capital_call.created | colectiva | [auto-derived] capital_call.created event |
capital_call.payment_requested | colectiva | Rito requested Colectiva to process a capital call payment from an LP — triggers the payment flow for the specified capital event. |
cfdi.distribution_requested | constanza | Rito requests Constanza to generate a CFDI for a distribution. Deal must already have a constanza_org_id. Constanza responds asynchronously with the stamped CFDI. |
contract.draft_requested | agora | Rito requests Agora to draft an investment contract for an LP investor. Agora responds asynchronously with a contract URL via webhook. |
deal.created | camino, constanza | A new real estate deal was created in Rito — Camino CRM logs the activity; Constanza pre-registers fiscal structure for the deal. |
deal.intelligence_generated | camino | Rito's proactive intelligence engine completed analysis on a deal — Camino CRM tags the deal with recommended strategy and asset class. |
deal.stage_changed | colectiva | A real estate deal has advanced to a new pipeline stage |
deal.status_changed | camino | A real estate deal's status transitioned to a new value in Rito — Camino mirrors for CRM pipeline. Distinct from deal.stage_changed (investor pipeline). |
distribution.created | colectiva | A distribution record was created in Rito — sent to Colectiva to initiate the payment to the LP wallet. The type field distinguishes capital_call vs distribution. |
distribution.payment_requested | colectiva | Rito requested Colectiva to process a distribution payment to an LP — triggers the payout flow. |
investor.created | camino | A new LP investor was created in Rito — Camino receives the contact for CRM sync. |
investor.updated | camino | An LP investor record was updated in Rito — Camino syncs CRM fields. |
k1.delivered | constanza | A K-1 LP tax report was delivered to an investor in Rito — Constanza records the delivery for tax-compliance audit trail. |
site_optimizer.scenario_selected | camino | A Rito user selected a development scenario from the Site Optimizer — Camino records the investment intent for the fund/contact. |
spv.creation_requested | constanza | Rito requests Constanza to create a fiscal SPV entity for a deal. Constanza responds asynchronously with the constanza_org_id via spv.created. |
Events consumed
| Event | Senders | Description |
|---|---|---|
capital_call.payment_failed | (none declared) | A capital call payment attempt failed in Colectiva — Rito marks the capital event with the failure reason so the fund manager can follow up with the LP. |
capital_call.payment_received | (none declared) | A capital call payment was successfully received and processed in Colectiva — Rito marks the capital event as completed, syncs investor totals, and seals the attestation. |
contact.updated | (none declared) | A CRM contact record was updated in Camino — receiver apps sync the changed fields to their local contact/investor/resident records. |
contract.created | agora | A legal contract was created in Agora — Rito registers it against the deal or investor record for contract lifecycle tracking. |
contract.executed | agora | A legal contract was fully executed (signed by all parties) in Agora — Rito marks the deal or investor contract as executed. |
contract.expired | agora | A legal contract expired in Agora — Rito marks the contract as expired and may trigger follow-up actions. |
contract.updated | agora | A legal contract was updated in Agora — Rito syncs the changed fields on the associated deal/investor record. |
distribution.failed | (none declared) | A distribution payment attempt failed in Colectiva — Rito marks the distribution as failed and notifies the fund manager. |
notification.sent | (none declared) | Camino dispatched a notification (email, WhatsApp, push) to a user — Rito records the delivery event on the investor or deal record for audit trail. |
poliza.generated | constanza | Constanza generated a journal entry (póliza) for a Rito deal event — Rito records the poliza reference on the deal for fiscal-accounting traceability. |
schedule.cancelled | mancha | A deal scheduling appointment was cancelled in Mancha — Rito removes or marks the schedule record as cancelled. |
schedule.completed | mancha | A deal scheduling appointment was completed in Mancha — Rito marks the schedule as completed and may trigger next-step actions in the deal pipeline. |
schedule.created | mancha | A new deal scheduling appointment was created in Mancha — Rito registers it on the deal record for pipeline tracking. |
schedule.updated | mancha | A deal scheduling appointment was updated in Mancha — Rito syncs the changed time or attendee details. |
spv.created | constanza | Constanza created a fiscal SPV entity for a Rito deal and is sending back the constanza_org_id so Rito can store it on the deal record. |
subscription.activated | camino, colectiva | A subscription plan has been activated for a tenant — all apps that gate features behind the subscription tier update their local tier state. |
subscription.cancelled | camino, colectiva | A subscription has been cancelled — all apps that gate features behind the subscription tier update their local tier state to free/cancelled. |
subscription.changed | camino | A subscription plan has been upgraded or downgraded — receiver apps update their tier gates and feature access accordingly. |
subscription.past_due | camino | A tenant's subscription entered past_due state after a failed renewal — Camino dunning flow pauses feature access without cancelling. Receiver apps mark memberships or subscriptions past_due until payment is received. |
tax.calculated | (none declared) | Constanza recalculated ISR/IVA for a deal — Rito stores the tax figures on the deal record for fund-level fiscal reporting. |
Webhook signature
Standard ecosystem HMAC-SHA256 over the raw body with a 5-minute timestamp window. See Webhooks.
OpenAPI
Coming in the OpenAPI generator phase — see /reference/openapi.
SDK
See /sdk/ for @r-bsoftware/ecosystem-sdk helpers.
Gotchas
- All data is scoped to the authenticated fund (
rito_fund_{id}). Cross-fund queries are not supported — if your integration needs multi-fund aggregation, do it at the Camino CRM layer. deal.stage_changeddoes not carry deal metadata beyond stage fields — fetch full deal detail viaGET /api/deals/[id]if your handler needs property type, CapEx, or unit data.- AI usage fires
ai.usageevents that feed into Colectiva for metering. If you are building an integration that calls/api/ai/*on behalf of clients, account for per-token billing.