Audit
Use Manual Blocks and Discounts after Listings (step 13) and Bookings (step 14) inventory exists — month-end hygiene: Manual block hygiene. Requires Listings permission.
Open Manual Blocks tab for cross-portfolio unavailability review, then Discounts tab for discounted contract values. Pair month-end passes with Manual block hygiene and Dashboard — Vacant Units. Guide subsection map: Audit guide subsection index (tab sections + Related subsections). Habit-specific shortcuts live under Related below.
The Audit workspace (/audit, sidebar Tools → Audit) gives operators two portfolio-wide review surfaces:
- Manual Blocks — manual availability blocks (unavailabilities) that can quietly reduce occupancy and revenue without producing income.
- Discounts — every contract value with a discount applied, so teams can verify reasons, spot unusual patterns, and quantify revenue impact.
Manual blocks are created and edited from a unit’s Calendar in Listings via Add unavailability. Discounts are applied on booking Contract Values (Bookings — Discounts and payment adjustments) with permission bookings.add_discounts. Audit does not replace those day-to-day surfaces — it centralises cross-portfolio triage in one workspace. Audit is also not the in-sidebar Change history on Listings setup (listings-property-edit-change-history.png) or the booking Changelog on Contract Info → Check-in & Check-out (operator-initiated edits only — FAQ — Booking Changelog scope,; bookings-detail-contract-info-timeline.png), and it does not control which Finance → Transactions rows remain visible after Delete Booking — that ledger gate is separate from Cancel booking; see FAQ — Cancel Booking vs Delete Booking and Glossary — Archived booking ledger visibility. Month-end habit: Manual block hygiene.
Open Audit at platform.vivin.app/audit (defaults to Manual Blocks), platform.vivin.app/audit/manual-blocks, or platform.vivin.app/audit/discounts. Bookmarkable routes are in Deep Links — Audit.
Not sure which Tools item holds portfolio block and discount review? Ask AI Chat “Where do I open Audit to review manual blocks and discounts?” — then open Tools → Audit (ai-chat-product-context-audit-reply.png, ai-chat-product-context-audit-flow.mp4). Day-to-day edits stay on unit calendars and booking Contract Values; this workspace is for cross-portfolio hygiene.

Edit manual blocks from Listings unit calendars; reconcile occupancy with Sales Multicalendar and Bookings → Timeline. Month-end Discounts review can surface receivables that pair with payment overdue rows — row-click opens the booking for Handling a Late Payment — Step 1. When goodwill discounts cluster on one tenant category, add Finance — Tenant category filter or Tenants — Tenant category filter — see Glossary — Tenant category. During Manual block hygiene, poll AI usage API (landlord_chat) when AI Chat or Landlord MCP assists vacancy reconciliation — internal USD cost only
Who can use it
The Audit nav item and /audit routes use the same guard as Listings: your role needs Listings module permission. Without it, the sidebar entry is hidden and direct URLs show the standard permission state. Administrators adjust access in Users and roles.
Legacy Listings URLs that pointed at a manual-blocks tab now redirect to Audit (/audit/manual-blocks) so bookmarks keep working.
Layout
- Page header — Title Audit and a short subtitle about validating portfolio data to prevent errors and revenue loss.
- Tabs — Pill-style Manual Blocks and Discounts tabs. The URL updates to
/audit/manual-blocksor/audit/discountswhen selected. - Info banner — Collapsible guidance panel per tab (Why audit manual blocks? or Why audit discounts?). Expand it when onboarding new operators or running a seasonal hygiene pass.
Manual Blocks tab
Manual Blocks pairs with Listings — unit calendar for edits and Manual block hygiene when occupancy looks suppressed — reconcile with Sales — Multicalendar.
- Blocked nights chart + table — When your filters match at least one manual block, a Blocked nights per month bar chart appears in a fixed left column (~288px) beside the Manual Blocks table on the right. The chart is computed on the full filtered set server-side (not only the table rows already loaded), so you can spot seasonal hold patterns while scanning rows. On narrow viewports the table still scrolls horizontally inside its card; the chart stays readable in the left column when space allows.
- Manual Blocks table — Shared with the listings manual-blocks implementation: unified header and body in one table (search, date range, Created by filter, clickable column headers for server-side sort, infinite scroll, Export CSV or Excel, and — for users with Listings edit permission — row checkboxes, per-row Edit block (pencil) for operator-created manual holds, plus inline and bulk Delete).

When filters match blocks, the Blocked nights per month chart sits in the left column beside the table (server aggregate over the full filtered set):
Expanded Why audit manual blocks? checklist (same tab; banner open):

Toolbar and filters
Created by and date filters pair with Sales — Multicalendar export habits — see Glossary — Export and download issues when Export toasts an error.
| Control | Purpose |
|---|---|
| Search | Matches property name, unit name, or reason text (debounced). |
| Date range | Limits blocks whose start/end overlap the selected from–to window (calendar pill, same pattern as Sales multicalendar). |
| Created by | Multi-select of property managers who created the block. The menu stays open while you add another teammate. Applied server-side together with search and date range so the table total, chart, and Export all reflect the same filtered population. |
| Clear all | Appears when any filter is active; removes search, dates, and creator filters. |
| Export | Downloads the currently filtered rows as CSV or Excel (vivin-manual-blocks-YYYY-MM-DD.*). Disabled when the filtered list is empty. |
| Delete | Users with Listings edit permission see a checkbox column, a per-row trash icon, and Delete selected when rows are ticked. Confirmation states how many holds will be removed and that dates become available again. Large batches show a progress counter while deletes run; partial failures keep failed rows selected so you can retry. Booking and channel blocks are not deletable here — only operator-created manual holds. Read-only roles see the same table without delete controls. |
| Edit block | Users with Listings edit permission also see a per-row pencil (Edit block) on manual holds (not channel/integration rows). Opens Edit block — change Dates and/or Reason in place without delete-and-recreate. Date changes use the same overlap validations as creation; a reason-only save does not re-check dates. See Editing a manual block. |
| Column sort | Click Unit, Start, End, Nights, Reason, Created by, or Created headers to sort server-side (↕ / ↑ / ↓). Default is Created descending (newest first). Date and night columns default to descending on first click; Unit and Reason default to ascending. Changing sort resets infinite scroll to page 1; Export and the Blocked nights per month chart use the same sort and filters. |
Created by is a multi-select: open the control, tick one or more property managers, and remove individual selections with the chip × or use Clear all to reset every filter at once. The table total, Blocked nights per month chart, and Export all use the same server-side filter set. The menu stays open after each tick — see Created by stays open.


Created by stays open while you pick
Open Created by on Tools → Audit → Manual Blocks, then tick a teammate. A chip appears under the toolbar; the menu stays open so you can tick a second teammate. You do not need to open Created by again.
The menu lists property managers who can appear as the creator of a hold (display name, with email as a hint). Tick the first name, then a second name. Both stay checked in the open list. The table, Blocked nights per month chart, and Export show blocks created by any of the people you picked — not only holds that list both names. Dismiss the menu when the chips look right — same stay-open habit as Operations — Assignee.
Ticking names here only filters the list. It does not change who created a block.
Date range is a calendar pill, not this menu. Search is a text box. Use Clear all when you want to drop every filter at once.
Operations Tickets → Assignee and Check-in & Check-out → Responsible are different controls on a different module. They filter maintenance work or handover rows, not availability holds.
Open Export, then choose CSV or Excel (.xlsx). Downloads use dated filenames: vivin-manual-blocks-YYYY-MM-DD.csv or vivin-manual-blocks-YYYY-MM-DD.xlsx. If nothing matches the current filters, Export stays disabled.
When the export request fails, Vivin shows a toast instead of silently closing the menu — see Glossary — Export and download issues.

Blocked nights per month
When your account has manual blocks that match the current filters, a Blocked nights per month bar chart appears in a left column next to the table. Each bar is the sum of calendar nights blocked in that month across the entire filtered set — not only the rows already loaded in the table.
Use the chart to spot months with unusually high hold volume before you scroll the full table. Narrowing Search, Date range, or Created by refreshes both the chart and the table from the server with the same query.
Hover a bar to read the exact night count for that month. The chart hides when no blocks match the active filters.
Manual Blocks table loading
Pagination and refresh pair with Glossary — Directory list refresh — Export still downloads the full filtered set without scrolling every page.
The Manual Blocks table is server-paged — it does not download your entire portfolio in one request.
| Phase | Behaviour |
|---|---|
| First paint | Up to 20 rows for the active Search, Date range, and Created by filters (newest created first). |
| Scroll | When you scroll near the bottom of the main workspace, the next page (20 rows) loads automatically. A short skeleton strip may appear under the table while fetching. |
| Filters | Changing search, dates, or creator chips resets the table and starts again from the first page. |
| Done | A footer line shows the server total (for example 42 manual blocks). When every matching row has been fetched, End of list appears beside the count. |
| Export | CSV / Excel downloads the full filtered set from the server — you do not need to scroll through every page first. |
The Blocked nights per month chart always reflects all blocks that match the current filters, even when the table has only loaded the first pages.
When the Manual Blocks chart or table needs a refresh, use Retry — or reload the page. Zero rows after a successful load means your filters matched nothing. See Glossary — Directory list refresh.

After you scroll through every page, the footer shows the server total and End of list (for example 42 manual blocks · End of list):
Column headers sort server-side across the full filtered set (not only the rows already loaded). The default is Created descending (newest first). Click a header again to reverse direction; click another column to change the primary sort. The same convention as Finance Transactions and Payouts infinite-scroll tables.

Table columns
| Column | Description |
|---|---|
| Unit | Property and unit labels (Property · Unit). |
| Start / End | Block boundaries (day-level). End is the last blocked night (to) — see End vs free-again day below. |
| Nights | Calendar nights between start and end (desktop/tablet). |
| Reason | Operator-entered description from Add unavailability. |
| Created by | Team member who created the block, when recorded. |
| Created | Timestamp when the block was added (widest breakpoints). |
End vs free-again day
When a hygiene pass compares Audit → Manual Blocks with Sales → Multicalendar or Bookings → Timeline, expect End and the Gantt hover tip to differ by one day on checkout-style holds.
On Manual Blocks, End formats the stored last blocked night. Hover tips on Sales → Multicalendar and Bookings → Timeline show the day the unit is free again (checkOutDate) — the same checkout convention the unit Calendar already used. Bar geometry still covers blocked nights only; the tip end is one day later when the block stores a checkout.
Example (Owner stay on AA-11-5D-B): Start 10 Aug 2026, End 19 Aug 2026 (9 nights) in Audit — the Multicalendar tip for the same bar ends on 20 Aug 2026 (free again).


FAQ: Why does a Multicalendar or Timeline block tooltip end one day after the last blocked night?. Glossary: Manual unavailability (manual block). The same last-night vs free-again split is what a booking site reads on listing JSON (to = last blocked night) — FAQ — Booking site first available day — what Uniplaces, Spotahome, Housing Anywhere, and Inlife catalogues read on full feeds — FAQ — Marketplace listing blocked through check-out night — and what a subscribed calendar reads as exclusive DTEND (free-again morning) — FAQ — iCal block ends one day after Audit End.
Click a row to open the unit listing sidebar in context (same sidebar used in Listings) so you can jump to the unit Calendar or adjust the block if your role includes edit permission.

Editing a manual block
Edit block keeps the block identity — pair with Listings — Editing a manual unavailability block when you prefer the unit Calendar list, and with Manual block hygiene — Step 4 for month-end cleanup.
When a hold’s dates or reason are wrong, use Edit block instead of delete-and-recreate:
- Open Tools → Audit → Manual Blocks (optionally search by unit or reason).
- On a manual row, click the Edit block pencil (channel/integration rows hide this control).
- In Edit block, change Dates and/or Reason, confirm the helper under Dates (N nights · last night …), then Save changes. You can save a reason-only change.
The last night in the helper is the last occupied night — the date field uses the same checkout convention as elsewhere (the range end is the day the unit is free again). Overlap with bookings, other blocks, and preparation days is checked before a date save — the same rules as Add unavailability. A reason-only save does not re-check dates. The unit Calendar exposes the same modal via Edit block on the manual list row.


Typical workflows
Hygiene passes pair with Portfolio KPI review — Step 6 and Dashboard — Vacant Units after you clear holds that suppressed Today counts.
Hygiene pass before high season
- Open Tools → Audit (or
/audit). - Expand Why audit manual blocks? if your team needs the checklist.
- Sort by Created (newest first, default) or click End / Nights to surface long holds; narrow with a date range covering the upcoming season when needed.
- Scan Reason and End columns for vague text or blocks that should have ended.
- Open suspicious rows → unit sidebar → Calendar to edit or remove the hold.
Export for owner or ops review
- Apply filters (for example a date range or Created by).
- Click Export → CSV or Excel (see the toolbar screenshot for the menu).
- Share the file outside VIVIN for offline sign-off.
Exported rows include property and unit labels, block Start / End, computed Period and Nights, Reason, Created by, and Created timestamp — column headers follow your interface language.
After staff changes
Filter Created by to a departed operator’s account, then clear blocks they left with unclear reasons — see also Modules — Audit on the overview page and Glossary — Manual unavailability.
Discounts tab
Discounts pairs with Bookings — Discounts and payment adjustments and Finance — Contract Values — overdue receivables: Notifications — Payment overdue alerts.
The Discounts tab (/audit/discounts) lists every contract value on your account where a discount was applied. Use it for month-end revenue review, owner reporting, and spotting discounts without a reason, on the wrong payment type, or on already-ended bookings.

Expanded Why audit discounts? checklist (same tab; banner open):

KPI summary cards
Four compact cards summarise the currently filtered population (same query as the table and Export):
| Card | Meaning |
|---|---|
| Discounted items | Count of contract values with a discount in scope (selected date range, or all time when no range is set). |
| Total discounts | Sum of discount amounts (€) across those lines. |
| Avg discount rate | Total discounts as a share of gross (pre-discount) value on discounted lines. |
| Avg discount / item | Average discount € per discounted line. |
Toolbar and filters
| Control | Purpose |
|---|---|
| Search | Matches unit, property, or tenant name (debounced). |
| Date range | Optional window on the contract-value period / due context. No range = all discounts on the account (default). Clear the range with the × on the pill or Clear all. |
| Payment type | Pill filters: All, Rent, and enabled fee types (Admin fee, Exit fee, Cleaning fee, Others) — labels follow your fee settings. |
| Clear all | Appears when search, date range, or payment-type filter is active. |
| Export | Downloads the full filtered + sorted set as CSV or Excel (vivin-discounts-YYYY-MM-DD.*). Disabled when the filtered list is empty. |
| Column sort | Click Unit, Tenant, Item, Status, Period, Discount, or Net Amount for server-side sort. Default is Discount descending (largest reductions first). |

When the export request fails, Vivin shows a toast instead of silently closing the menu — see Glossary — Export and download issues.
Discounts table loading
Discounts pagination pairs with Bookings — Other filters → Discounts and Finance — Tenant category filter when goodwill reductions cluster on one segment.
The Discounts table is server-paged — it does not download your entire portfolio in one request.
| Phase | Behaviour |
|---|---|
| First paint | Up to 20 rows for the active filters (default sort: Discount descending). |
| Scroll | Near the bottom, the next page loads automatically (5 rows per follow-up). A Loading more… line may appear under the table. |
| Filters | Changing search, dates, or payment type resets pagination to page 1. |
| Done | Footer shows N of M discounted items; when every row is loaded, End of list appears under the table. |
| Export | CSV / Excel downloads the full filtered set from the server — you do not need to scroll through every page first. |
When the Discounts list needs a refresh, use Retry — or reload the page. Filtered empty states offer Clear all. An account with zero discounts shows No discounts applied after a successful load.
Table columns
| Column | Description |
|---|---|
| Unit | Unit label; property internal name as secondary line when different. |
| Tenant | Tenant name with avatar; booking status chip (Upcoming, Ongoing, Ended, Cancelled). |
| Item | Payment type (Rent, Admin fee, Cleaning fee, etc.). |
| Status | Contract-value status (same badges as Finance Contract Values). |
| Period | Scheduled period / due context for the line. |
| Amount | Gross (pre-discount) scheduled amount. |
| Discount | Discount € (amber) and % of gross when applicable. |
| Net Amount | Amount after discount — what allocations compare against. |
| Reason | Operator-entered discount reason (truncated in-cell; full text in Export). |
Click a row (when your role can open bookings) to open the booking detail sidebar on the Contract Values tab with the discounted line highlighted — same sidebar as Bookings. The teaching capture below opens Zsófia Veress on AA-11-5D - Studio 12 after searching that unit; the rent line shows 1 discount with Original €123 → €108.

Typical Discounts workflows
Month-end Discounts review pairs with Handling a Late Payment — Step 1 when receivables follow repricing, not pricing errors — see Glossary — Discount (booking).
Month-end discount review
- Open Tools → Audit → Discounts (or
/audit/discounts). - Expand Why audit discounts? if your team needs the checklist.
- Optionally set a date range for the closing month; leave it empty for all-time triage.
- Scan Reason for blank or vague entries; sort by Discount to surface the largest reductions.
- Click a row → booking sidebar → Contract Values to verify or adjust the line (requires
bookings.add_discounts).
Export for owner or finance review
- Apply filters (for example Rent only, or a date range).
- Click Export → CSV or Excel.
- Share the file outside VIVIN for offline sign-off. Exported columns include Booking ID first (Vivin booking UUID), then unit, property, tenant, payment type, period, amounts, discount, net, reason, and statuses.


Cross-check with Bookings and Finance filters
Portfolio triage on the Bookings list and Finance Other filters → Booking → Discounts (With / Without) uses the same underlying data. Add Finance → Other filters → Tenant → Tenant category or Tenants — Tenant category filter when goodwill discounts cluster on one segment — see Finance — Tenant category filter. Audit is the dedicated table + KPI + export view for discounted lines only.
Audit guide subsection index
Audit section cross-reference
Use the sections above for this module. Related pages are linked from Related below when present, or from Modules.
Related
Related below links this module to settings, concepts, workflows, and escalation paths.
Documentation map & escalation
- Modules hub — Hub pairing matrix across operator workspaces
- Deep Links — Audit — Bookmarkable URLs
- Glossary — Term definitions used across manual blocks and discount review
- Audit section cross-reference — Tab-to-module pairing table on this page
Upstream & downstream workflows
- Manual block hygiene (workflow) — Step-by-step Audit pass when vacancy or occupancy looks suppressed by stale holds (includes a calendar-edit walkthrough clip)
- Portfolio KPI review (workflow) — When Occupancy or RevPAR dips, cross-check manual blocks here before changing rates in Sales; Step 7 Finance reconciliation covers credit notes when duplicate receipts are already invoiced
- Notification triage — Clear booking- or availability-related alerts after you shorten or remove stale blocks
- Handling a Late Payment — Step 1 — Collections when Discounts review surfaces overdue receivables, not pricing errors
- Notifications — Payment overdue alerts — Operator Payments category rows during month-end Audit + Finance reconciliation
- Onboarding a New Property — Verify Listings and Sales after the property wizard before first manual blocks accumulate
- Cancelling a Booking — Release calendar holds after early termination when Audit still shows blocked unit rows
- Managing a Check-out & Deposit Refund — Deposit settlement after manual-block hygiene frees units for the next arrival
Deeper workflow reads
See Upstream & downstream workflows above for the same guides.
Settings that shape Audit
- Settings > Preferences — Preparation-day buffers (automatic) distinct from operator-created manual holds in Audit
- Settings > Preferences — In-app notifications — Account-wide booking and payment alert masters after clearing blocks that triggered availability notifications
- Settings > Tenant categories — Segment definitions when Discounts review shows goodwill patterns on one cohort — pair with Finance — Tenant category filter
- Settings > Interface Language — Your in-app notifications — Per-user opt-outs that complement account masters on
/notificationstriage - Settings > Emails — Communication schedule audit when manual blocks coincide with payment-reminder disputes
Deeper concept reads
- Booking lifecycle — Computed stay status when blocks masked occupancy signals
- Integrations & Distribution — Manual blocks propagate to every connected marketplace calendar
- Tenant MCP — Booking-scoped
get-listing-calendar,list-bookings-by-email, andnotify-landlordwhen tenants or external assistants surface blocked dates — see Manual block hygiene - Landlord MCP — Portfolio-wide
get-vacant-units-next-monthandget-booking-summarywhen occupancy signals suggest a hygiene pass before you change rates - Tenant Portal — Stale manual blocks can hide units tenants should see as bookable on direct portal or engine flows
- FAQ — Tenant contract signing blocked — No PDF yet, mandatory Your Details gates, category locks, or Lease purpose; portal signing vs paper upload on Contract Info
- Payment Allocation — Two-layer receipts, invoiced-floor rent edits, and credit note reject/revert warnings
Operator modules (pairing surfaces)
- Bookings — Discounts and payment adjustments — Apply or edit discounts on Contract Values; Audit Discounts tab lists every discounted line portfolio-wide
- Finance — Contract Values tab — Same line amounts, statuses, and net figures as the Audit Discounts table
- Finance — Tenant category filter — Portfolio In Debt triage by segment when Discounts clusters on one cohort
- Tenants — Tenant category filter — Profile-count cross-check before account-wide rate or portal changes after Discounts review
- Bookings — Tenant categories stays open — Mirror segment filter when Finance Overview still shows the old segment
- Finance module — Contract Values and debt KPIs after you release calendar holds
- Analytics module — Overview tab — Portfolio KPI bar grid when Audit clears blocks but occupancy still looks suppressed
- Listings — Viewing unit availability and unavailability — Create and edit blocks on a unit calendar
- Listings — Reviewing manual blocks across the portfolio — When to use Audit vs per-unit calendar
- Listings — Calendar tab — Where operators create blocks that surface in Audit
- Bookings — Timeline — Per-unit Gantt view after clearing suspicious holds from Audit
- Sales — Multicalendar — Per-unit availability after you clear or shorten a suspicious block from Audit
- Dashboard — Vacant Units — How holds affect vacant-unit signals
- Properties workspace — Legacy
/propertiesURLs during cross-portfolio block review
Operator habit hubs
Day-to-day operator habits (lockout catch-up, pending receipts, payment triage, handoffs, and related playbooks) live on the Common Workflows habit hub.
Deep-link anchors for habit hubs
Lockout catch-up after password recovery
Pending manual receipt approval
Reject/revert mistaken receipts
Check-out ledger cleanup before refund
Utility overage collections
Cancellation collections before void
Check-out collections before refund
Handling a Late Payment collections
Check-out vs cancellation
Deposit missing on Finance Deposits
Notification row-click navigation
Payment alert to receivables triage
Finance debt receivables triage
Finance Income status drill-down
Cash flow forecast drill-down
Confirmation alert triage
New inventory to first booking handoff
Property setup to first arrival handoff
Confirmation to check-in handoff
Check-in to check-out handoff
Check-out final utilities handoff
Same-day turnover coordination
WhatsApp per-booking messaging
Bot reasoning (audit)
ChatBot settings
Rent reduction after invoicing
Occupancy KPI to block hygiene handoff
Month-end invoicing (fixed date)
Bulk Hostkit invoicing
Partly collected security deposit
Portfolio segmentation by tenant category
Directory list refresh
When Manual Blocks or Discounts needs a refresh, use Retry — or reload the page. Zero rows after a successful load means your filters matched nothing — widen filters or clear search.
See FAQ — Directory list refresh and Glossary — Directory list refresh.
Key glossary terms
- Discount (booking) — Per-line and booking-scoped reductions;
bookings.add_discountspermission - Tenant category — Bookings, Finance, and Tenants segmentation when Discounts clusters on one cohort
- Same-day turnover — Back-to-back stays that need coordinated check-out/check-in after you free a unit from a hold
- Deposit dispute — Check-out deposit retention unrelated to manual blocks but often reviewed in the same month-end pass as Audit hygiene
- Glossary — End-of-Booking cost split — Charge Time → End of Booking splits daily overage across every occupied unit; still-staying roommates stay in the denominator
- Glossary — Change history — Operator-initiated edits on Listings setup and Bookings Changelog; create-time defaults excluded
- Glossary — Full term list
API & companion guides
- API Reference — iCal feeds — Partner calendar exports when manual blocks overlap channel availability
- API Reference — Listings & Availability — Partial
unavailabilitiespulls that should match manual blocks cleared here - API Reference — Full listing feeds — Partner catalogue exports when published units still look fully blocked after an Audit pass
- API Reference — Property & unit mapping —
externalIdkeys on units whoseunavailabilitiesdisagree with Sales or partial pulls - AI usage API —
landlord_chatledger when Manual block hygiene uses AI Chat or Landlord MCP
Module documentation hubs
- Audit module — Portfolio-wide Manual Blocks and Discounts contract-value review (this page)
- Utilities module — Bills Included ceiling model, Connections, AI bill upload, and tenant overage charges on payment plans (hub)
- Operations module — Maintenance tickets, cash flows, check-in/out coordination, Draft ticket queues, and linked cash flows (hub)
- Dashboard module — Post-login Today, Total debt, Vacant Units, and forecast KPI snapshot with bell notification triage (hub)
- Analytics module — Month-range portfolio KPI charts (Overview, Revenue, Occupancy, ADR, RevPAR, Maintenance) with rankings and heatmaps (hub)
- Listings module — Property wizard, Channels tab, Archived inventory, and unit management (hub)
- Properties workspace — Legacy
/propertiesURL redirects into Listings (hub) - Booking engine details — Rich marketplace payload editor via the Full integration pill (hub)
- Finance module — Portfolio ledgers (Overview, Income, Contract Values, Transactions, Payouts, Deposits) with payment approval and deposit settlement (hub)
- Tenants module — Tenant directory, profile sidebars, With Debt segmentation, and table expand for linked bookings (hub)
- Sales module — Portfolio availability, monthly rent editing, and channel manager connections (hub)
- Inbox module — Portfolio-wide WhatsApp workspace with Dashboard bell Inbox sub-tab deep links (hub)
- Notifications module — Full
/notificationshistory with search, filters, and row-click navigation (hub) - AI Chat module — AI Assistant using Landlord MCP tools for portfolio Q&A (hub)
- Account Settings — Workspace-wide financial policies, templates, integrations, and operational defaults (hub)
- API Reference hub — Partner HTTP contracts, Swagger onboarding, and partial vs full feeds (hub)