Workspace
- type (8 workspace types)
- members{uid: role}
- subscription
- onboarding
- 1—n Property
- 1—n Tenant
- 1—n ActionCard
AI-assisted rental management for Belgian landlords: leases, receipts, maintenance requests, contractors and yield calculators.
A Belgian landlord gets work from everywhere: tenant e-mails, WhatsApp messages, bank transactions, lease deadlines, rent indexations and legal duties that differ by region. Finding out what needs doing is up to them. Proporio starts from the opposite principle: a landlord should never have to go looking for work.
Give landlords a single cockpit where spreadsheets, e-mails and paper letters used to coexist.
Every input — an e-mail, a message, a payment, a deadline — becomes an action card in a single feed, the Cockpit. A language model classifies the message, finds the property and lease involved and drafts the action; the landlord reviews, edits if needed and approves. The product is multi-workspace: landlords, tenants, contractors, building managers and agencies each have their own, and data moves between workspaces through projections, never through cross-workspace permissions.
Live since June 2026, in four languages, with 96 card scenarios, 17 effect executors, open banking reconciliation and an assistant with 63 tools. Belgian law is modelled: 14 lease types, regional rules and health-index rent indexation.
CTO
Users
Application
External services
An e-mail reaches the workspace address. SendGrid Inbound Parse forwards it to an HTTP function protected by a path secret and an address allowlist.
The message is stored; a Firestore trigger runs a two-level classification — domain, then subtype — through the OpenRouter gateway.
The sender is identified, the property and lease are found, and the scenario registry picks the best handling.
The summary is translated into four languages, a reply is drafted, and the card joins the Cockpit, pending or scheduled.
The landlord edits and approves. The executor registry applies each effect: reply, work order, payment reminder…
Every five minutes, scheduled drafts go out through SendGrid; every action leaves an audit trail.
The main entities, their key fields and their relations.
96 scenarios and 17 effect executors; a daily sweep surfaces upcoming deadlines.
Guided creation or AI import, health-index indexation, check-in inspection, termination.
Automatic match above 0.9 confidence; below that, a review card.
Repairs, maintenance, quotes and contractors.
Tenant (PWA), contractor, building manager with general meetings, agency with CRM and mandates.
63 tools; the ones that change data ask for explicit confirmation.
ProblemEvery function loaded the whole bundle, about 243 MiB of memory: more than 500 requests were killed by the 256 MiB limit.
FixA global 512 MiB memory floor, documented where the functions are exported.
ProblemGen2 triggers are delivered at least once: a repair request sometimes created two work orders.
FixCard ID derived from the event ID, and create() instead of set(): the second run fails cleanly.
ProblemIdempotency keys used the UTC day while the cron jobs run on Brussels time.
FixDates computed in Europe/Brussels with Intl.DateTimeFormat, tested across daylight-saving changes.
ProblemReloading a list overwrote a local change Firestore had not confirmed yet.
FixPending writes are tracked with a 30-second lifetime.
ProblemThe SendGrid address allowlist only logged unknown callers.
FixAfter six months of logs with no false positive, unknown callers are rejected (403).
Taken from the project’s source code and Git history on 8 October 2026. No usage or revenue figures are published.
Available for PHP / Laravel / WordPress / Silverstripe missions in Belgium and remote EU.