Skip to content

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.created and deal.stage_changed to trigger downstream CRM or billing flows
  • Capital call eventscapital_call.created fires 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

http
Authorization: Bearer <api_key>
Content-Type: application/json

User 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

MethodPath
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

EventReceiversDescription
ai.usagecolectivaAI token usage report for metering
bank_package.generatedcamino, constanzaRito generated a bank financing package — Constanza pre-prepares fiscal structure for the loan; Camino logs the activity.
capital_call.bulk_createdcaminoA pro-rata capital call was issued to multiple investors simultaneously in Rito — Camino logs the batch for CRM activity.
capital_call.createdcolectiva[auto-derived] capital_call.created event
capital_call.payment_requestedcolectivaRito requested Colectiva to process a capital call payment from an LP — triggers the payment flow for the specified capital event.
cfdi.distribution_requestedconstanzaRito 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_requestedagoraRito requests Agora to draft an investment contract for an LP investor. Agora responds asynchronously with a contract URL via webhook.
deal.createdcamino, constanzaA new real estate deal was created in Rito — Camino CRM logs the activity; Constanza pre-registers fiscal structure for the deal.
deal.intelligence_generatedcaminoRito's proactive intelligence engine completed analysis on a deal — Camino CRM tags the deal with recommended strategy and asset class.
deal.stage_changedcolectivaA real estate deal has advanced to a new pipeline stage
deal.status_changedcaminoA 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.createdcolectivaA 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_requestedcolectivaRito requested Colectiva to process a distribution payment to an LP — triggers the payout flow.
investor.createdcaminoA new LP investor was created in Rito — Camino receives the contact for CRM sync.
investor.updatedcaminoAn LP investor record was updated in Rito — Camino syncs CRM fields.
k1.deliveredconstanzaA K-1 LP tax report was delivered to an investor in Rito — Constanza records the delivery for tax-compliance audit trail.
site_optimizer.scenario_selectedcaminoA Rito user selected a development scenario from the Site Optimizer — Camino records the investment intent for the fund/contact.
spv.creation_requestedconstanzaRito requests Constanza to create a fiscal SPV entity for a deal. Constanza responds asynchronously with the constanza_org_id via spv.created.

Events consumed

EventSendersDescription
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.createdagoraA legal contract was created in Agora — Rito registers it against the deal or investor record for contract lifecycle tracking.
contract.executedagoraA legal contract was fully executed (signed by all parties) in Agora — Rito marks the deal or investor contract as executed.
contract.expiredagoraA legal contract expired in Agora — Rito marks the contract as expired and may trigger follow-up actions.
contract.updatedagoraA 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.generatedconstanzaConstanza generated a journal entry (póliza) for a Rito deal event — Rito records the poliza reference on the deal for fiscal-accounting traceability.
schedule.cancelledmanchaA deal scheduling appointment was cancelled in Mancha — Rito removes or marks the schedule record as cancelled.
schedule.completedmanchaA deal scheduling appointment was completed in Mancha — Rito marks the schedule as completed and may trigger next-step actions in the deal pipeline.
schedule.createdmanchaA new deal scheduling appointment was created in Mancha — Rito registers it on the deal record for pipeline tracking.
schedule.updatedmanchaA deal scheduling appointment was updated in Mancha — Rito syncs the changed time or attendee details.
spv.createdconstanzaConstanza 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.activatedcamino, colectivaA subscription plan has been activated for a tenant — all apps that gate features behind the subscription tier update their local tier state.
subscription.cancelledcamino, colectivaA subscription has been cancelled — all apps that gate features behind the subscription tier update their local tier state to free/cancelled.
subscription.changedcaminoA subscription plan has been upgraded or downgraded — receiver apps update their tier gates and feature access accordingly.
subscription.past_duecaminoA 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_changed does not carry deal metadata beyond stage fields — fetch full deal detail via GET /api/deals/[id] if your handler needs property type, CapEx, or unit data.
  • AI usage fires ai.usage events 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.

Red Broom Software Ecosystem