Skip to content

Who it is for

Five kinds of estate. One system that counts beds.

Mini PMS is built for operators who take whole buildings on a head lease and sublet them in pieces. The pieces differ — a bunk in a labour camp, a partition in a shared flat, a whole villa to a contracting firm — but the arithmetic underneath is the same: what the building costs you, what the pieces earn, and which piece is empty tonight.

Find the one that looks like your estate. Each section names the problem in the words operators use for it, shows the mechanism that answers it, and ends with what the product does not do for that segment yet.

AvailableOccupiedReservedTurnover cleanOut of serviceMoney
10property types, including labour camp and staff accommodation
9space types — six of them count against your plan
3portals: resident, corporate client, landlord
46reports, built and running on your first day
254named permissions, so a camp boss sees no money

Where the weight sits

Every row is built. Not every row matters to you.

This is not a feature-availability grid — all fourteen capabilities are in the product for every customer. It is a map of which ones carry the operation for each shape of estate, which is the question you actually have when five segments are offered and only one is yours.

Capability weight by estate shape
Fourteen capabilities against five estate shapes, marked central, regular or occasional.
CapabilityLabour campsCo-livingCorporate housingVilla compoundsLandlord-owned stock
Bed-level inventoryRoom → partition → bedspace, three levels, nine space typesCentralCentralCentralCentralRegular
Pooled contract lines“20 beds in Camp A”, filled in later one arrival at a timeCentralOccasionalCentralRegularOccasional
Whole-unit letting beside bed lettingA villa to one company, the flat next door bed by bedRegularRegularRegularCentralCentral
The double-let guardA room and the beds inside it can never both be soldCentralCentralRegularCentralRegular
Document expiry ladder60 / 30 / 7 / 0 days, each rung firing onceCentralOccasionalRegularOccasionalOccasional
Gate passes and the visitor registerWho is inside right now, across every property at onceCentralOccasionalOccasionalRegularOccasional
Mess headcount reconciliationBeds occupied against covers the caterer billedCentralOccasionalOccasionalOccasionalOccasional
Housekeeping and the turnover cleanPassing the checklist is what returns a bed to availableRegularCentralRegularRegularRegular
Resident portalWhich bed is mine, when does my visa expire, fix my ACRegularCentralOccasionalRegularOccasional
Corporate client portalRoster, contracts, invoices with their lines, receiptsCentralOccasionalCentralRegularOccasional
Landlord portalHead-lease terms, the instalment schedule, cheques clearedOccasionalOccasionalOccasionalRegularCentral
Head-lease cost against sublease revenueThe two-sided lease, and the spread per propertyCentralCentralCentralCentralCentral
Post-dated cheque registerEleven states, a presentation calendar, a custody reportCentralRegularCentralCentralCentral
Meters costed to the propertyA reading becomes a utilities expense in the same momentCentralRegularRegularCentralRegular

Labour camps · Workforce and staff accommodation

In a labour camp, the paperwork is the operation.

Four hundred men, each with a passport, a visa, an Emirates ID and a labour card, each with its own date. The consequence of missing one is not a red cell on a report — it is a worker who cannot legally be on site, on the morning an inspector arrives. Mini PMS recognises nine kinds of occupant document and expects four of them from every occupant, so a document you never collected is drawn as a grey cell that says so, rather than as an absent row nothing will ever alert you about.

Every expiry is something the product acts on rather than reports. More than sixty days left is valid; sixty down to thirty is expiring; thirty down to zero is critical; past zero is expired. The ladder escalates on its own — the occupant and their employer contact at sixty days, a task for the HR coordinator at thirty, the property manager at seven, and on the day it lapses the person is marked not compliant. The rung reached is written on the document, so a visa sitting at forty-five days for a fortnight produces one warning and not fourteen.

Camp deals are never written bed by bed. A contractor signs for twenty beds in Camp A and the men are placed later, one arrival at a time. The pooled line counts its own placements, so the twenty-first is refused with a sentence saying how many the line is for, how many are already placed, and that raising it needs a variation. A bus of forty is placed in one request or none of them: if assignment 27 fails, nothing is written and the answer names the row and the reason.

And the camp boss runs the site without seeing the money. The Site Supervisor role holds 57 of the 254 permissions and none of them matches invoice, payment, cheque, deposit, expense, head-lease cost or rate — asserted by a test rather than promised in a manual. Where a cost figure is withheld the record says so, so the screen prints “hidden” rather than a dash that reads as “free”.

Issue a gate pass for a man whose visa has lapsed and the pass is created REFUSED, with the document named on it — not approved and flagged for somebody to notice.

Today1 Sep 2026

9Compliant
7Expiring, on the ladder
0Expired
0 of 4Gate passes refused
Anika FernandesHousekeeping supervisor · C04-1
Rajesh KumarElectrician · A03-2
Bilal HaqueDriver · B01-4
Mohammed AshrafSteel fixer · A02-3
VSMohammed AshrafResidence visa · 201/2024/118392028 Dec 2026 — 118 days leftIn date
Following Mohammed Ashraf’s residence visa — pick any marker above to follow a different one.In date
  1. T−90The resident and the file owner3 here now

    A renewal notice goes out and the document acquires a date. Nothing else changes: the man works, the bed bills, the file is simply no longer quiet.

  2. T−60The camp coordinator2 here now

    A task is raised and the document joins the renewals board. It stops being a date in a folder and becomes somebody’s job, with a name against it.

  3. T−30The site supervisor, every morning2 here now

    Escalation. The supervisor is named in the daily digest until the document is replaced or the occupant is stood down. Silence is no longer an option anyone has.

  4. T−0The gate0 here now

    Not a message. The gate pass is refused, the allocation cannot be renewed and no exit permit will print. The ladder ends at a locked turnstile, which is the only rung anybody ever remembers.

GATE PASSGP-26-0311

Anika Fernandes

Housekeeping supervisor · Meraas Facilities

Jebel Ali Staff Village · C04-1 · AED 1,150/mo

Valid — every working document in date.

GATE PASSGP-26-0418

Rajesh Kumar

Electrician · Gulf Steel Contracting

Al Quoz Camp 1 · A03-2 · AED 750/mo

Valid — every working document in date.

GATE PASSGP-26-0502

Bilal Haque

Driver · Emirates Logistics

Al Quoz Camp 1 · B01-4 · AED 900/mo

Valid — every working document in date.

GATE PASSGP-26-0644

Mohammed Ashraf

Steel fixer · Gulf Steel Contracting

Al Quoz Camp 1 · A02-3 · AED 750/mo

Valid — every working document in date.

Four beds, AED 3,550 a month, contracted to three employers. Not one of those invoices pauses because a document did — the bed is still let, the head lease is still owed, and the only thing that stopped is the man. Which is why the ladder starts ninety days out and not on the morning it matters.

60 / 30 / 7 / 0days before expiry at which each rung of the ladder fires
06:10the nightly sweep, in each organisation’s own day
500placements in one all-or-nothing bulk assignment
5%gap against the caterer’s invoice that raises an alert
57 of 254permissions a Site Supervisor holds — none of them money
The camp’s day, on the clock
00:0004:0008:0012:0016:0020:0000:0002:00Rent invoices raised06:10Every document re-read07:30The night’s second money run●every hour — the escalation sweep works out which rung is due
Three jobs run at fixed times in your organisation’s own timezone, and the escalation sweep runs every hour. Two things on this list run on a button rather than a clock, and are named as such below — we would rather you knew than discovered it.

06:10 — the document sweep

Re-reads every document in every organisation, moves the ones that crossed a threshold, fires the rung they newly reached, and rolls the answer up onto the person. Once per organisation per its own local day, so a re-run cannot double up.

Every hour — the escalation sweep

Twelve situations hold 32 rungs between them; nine of the twelve are actually swept. Reaching a high rung spends the lower ones, so a situation left alone for a week produces one escalation, not three.

02:00 and 07:30 — the money runs

Rent invoices for the periods now due, one per customer per period per property. Re-running after a crash bills nobody twice; the run reports how many lines it skipped because they were already there.

Nightly — planned maintenance

Raises what is coming due fourteen days ahead. Fourteen standard camp plans ship and seed onto a property in one click — pest control monthly for a camp, a gas cylinder check a villa does not need.

On demand — the mess headcount

Expected covers derived from who actually had a bed that day, less opt-outs; the site enters what was served; the caterer’s bill is compared on count and on money separately. It runs from a button, not a schedule.

On demand — the housekeeping rota

Expands a schedule into dated task lists up to sixty days ahead, skipping beds out of service. Also a button rather than a scheduled job.

What a camp operator gets

Twenty beds in Camp A, without naming which twenty

A contract line is either a specific bed or a pooled promise scoped to a property, block or unit. The screen shows how many of the twenty are placed and how many are still to come.

You sell a headcount in September and place the men in October. The contract has to say that without pretending to name beds nobody has chosen.

The twenty-first placement is refused

A pooled line counts its own placements and caps them. The refusal names the line quantity, how many are placed, and that raising it needs a variation.

Over-allocating puts a man in a bed nothing is paying for. It looks like occupancy on the board and like a gap in the revenue at month end.

A busload placed in one go — or none of them

Up to 500 placements in a single request. If assignment 27 of 40 fails, nothing is written and the answer says which row failed and why.

Forty men off one bus with thirty-eight placed is worse than none placed, because nobody can tell which two have nowhere to sleep.

Grey cells for the documents you never got

The compliance matrix draws a cell for every expected document whether or not it is on file. A missing labour card reads: nothing on file, and nothing will alert you about it either.

A document with no expiry date can never fire an alert. That is the most dangerous category, and every other system renders it as an absent row.

A gate pass that is refused, and says why

Papers lapsed means the pass is created REFUSED with the reason written on it — “Visa, Labour card have expired” — and no movement can be recorded against it.

A guard turning somebody away at six in the morning needs a sentence they can read out. An auditor asks for the record of the refusal.

Mess headcount against the caterer’s invoice

Expected covers from beds actually occupied, actual covers entered by the site, and the caterer’s bill compared on meal count and on money separately. A gap above 5% on either raises an alert.

A caterer billing 480 covers at a camp whose beds support 430 is money leaving every day, and the gap only exists if you keep both figures.

Import a contractor’s roster from a spreadsheet

A workbook in the product’s own format with a worked example row: names, nationalities, employee numbers and three documents with numbers and expiries. A dry run reports every problem without writing anything; the real import is all-or-nothing.

A company signs for forty beds and emails a list of forty men. A half-imported roster is worse than a rejected one, because nobody can tell which half arrived.

Headcount against the beds you are paid for

The people with a live bed allocation today, against the people recorded inside on a gate pass, per property. Flagged as more present, fewer, or matched — and the wording says a gate log rarely captures everybody.

An extra man sleeping in a bed nobody is paying for is invisible in every other report. It is deliberately a prompt to go and look, never a conclusion.

What this does not do for you yet

  • There is no bulk reminder and no one-click “request document” from the compliance matrix. Chasing a renewal happens outside the product today.
  • The compliance screen captures a document’s type, number, country and dates — not the scan. The separate document vault does store and virus-scan a passport scan, but the two records are not joined.
  • Barring somebody stops their gate pass and nothing else. There is no blacklist check in the allocation path, so a barred person can still be given a bed.
  • The nightly sweep computes and records; it does not itself send. Nothing is delivered anywhere until a mail relay or a messaging gateway is configured.
  • No QR code and no printed document for a gate pass. And a pass never expires on its own — it keeps its status past its validity window until somebody records a movement.
  • The mess headcount and the housekeeping rota run on demand. Neither has an entry in the job scheduler.

Co-living · Shared flats, partitions, bedspaces

A bed a resident left is a bed nobody can let.

Co-living lives and dies on the gap between one stay and the next. Everything else is arithmetic; that gap is the business.

Let a room whole this month and by the bed next month. Inventory nests three levels — room, partition, bedspace — and the database refuses the mistake that makes subdividing profitable and dangerous in the same breath: if a room is let whole its beds are blocked, and if any one bed is taken the room can no longer be let whole. The check walks the whole tree over any overlapping dates, future bookings included, and the refusal names the space in the way rather than reporting an error code.

Short stays overlap, and the boundary case is the one that costs you. One man moving out on the 31st and another moving in on the 31st is allowed; moving in on the 30th is refused. It is decided by a database index at the instant of writing rather than by reading first and deciding after — so of fifty agents racing for the last bed, exactly one succeeds and the other forty-nine are told who has it and from when.

Then the part that quietly costs the most. Completing a move-out ends the tenancy, puts the bed into turnover and raises the turnover clean in the same transaction. Passing every item on that six-item checklist is what returns the bed to available — fail one and it stays unlettable, because a room that is clean but whose light does not work is clean and still not lettable. Nothing else in the product releases a bed from turnover.

And the resident answers his own questions. The portal tells him which bed is his, in which unit and property, from and until when, and who his employer is; his documents with only the last four digits of each number, shaded amber inside thirty days and red once passed; and a maintenance request he can raise and then follow. Every bed and room also carries a QR code that opens a pre-filled report-a-problem form for that exact space, with no sign-in at all.

A four-bed room is four sellable things, not five. Counting the room as well puts stock in your denominator that nobody could ever fill.

Al Quoz Camp 1

Point at any bed.

384 beds across six blocks. Two corporate contracts hold 240 of them.

Counted by bed78.4%
Counted by room, the ordinary way100%

The gap is AED 61,500 a month of inventory the second number cannot see.

Available
52
Occupied
297
Reserved
19
Turnover clean
11
Out of service
5
Tonight’s revenue
AED 7,425
8space statuses, with 29 legal moves between them
6items on the turnover clean that releases a bed
150days of horizon on the bed map’s time scrubber
400 beds / 500 msbed-map render budget, measured in a real browser
4ways a part month can be priced — the line says which
What happens to a bed between two residents
OccupiedNotice periodTurnoverAvailableTurnover clean — 6 itemsraised automatically by the move-outall six passone item fails — the bed stays unlettable
Nothing in the product moved a bed out of turnover before the housekeeping module existed, which meant every bed a resident left was permanently unlettable. Passing the clean is now the only thing that releases it — and failing one item is a real outcome, not a warning.

What a co-living operator gets

Eight statuses, 29 legal moves, refusals written for a person

Under fit-out, available, reserved, occupied, notice period, turnover, out of service, blocked. The screen only ever offers moves the server will accept.

One table of legal moves is shared by the screen and the server, so a button is never offered that then fails — and the refusal is a sentence, not a code.

Scrub the map to next Tuesday

A slider from 30 days back to 120 days forward, with jumps for today, tomorrow, a week and a month. A line beneath counts what changed against today: arriving, freeing up, changing over.

A bed map of this instant answers a question nobody asks. “How many beds are free on the 3rd, and which ones” is the question.

Move a resident by dragging him — or by keyboard

Pick up an occupied bed and drop it on a free one. Every bed that can take him is highlighted and every bed that cannot is greyed with its reason. Select, press move, choose, Enter also works.

Re-bedding people is the most common thing that happens all week, and it must never leave somebody in two beds or in neither.

Refuses what it can see, warns about what it cannot decide

A taken bed, a room rather than a bed, out of service, under fit-out, blocked from above, another property — each gets its own sentence. Gender policy and an uncleaned bed warn without blocking.

A camp boss filling the last free bed at midnight should not be stopped by a bed that has not been swept. Watching a drag work and then snap back is how people stop trusting a screen.

Part months priced four ways, and the line says which

By the real days in the real month, by a flat thirty-day month, as a whole period anyway, or free — across seven billing cycles on either of two period anchors.

Every disputed invoice in this business is a part month. The line prints “11 of 28 days (2026-02-18 to 2026-02-28)” next to the amount, so the argument ends at the invoice.

Quotations that hold real beds and give them back on their own

A multi-line offer valid fourteen days by default, which can take specific beds off the market. A nightly job expires lapsed quotes and returns each bed to the state it was in before, not blindly to available.

A hold another agent can allocate over is not a hold, it is a note. And a bed held against a quote nobody is chasing is a bed you are not selling.

A QR code on every door

Each space gets a code that opens a pre-filled report-a-problem form for that exact bed or room, no sign-in needed. Print them three to a row at 50 mm for a whole property or one unit.

A resident with a broken air conditioner points a phone at the sticker and the fault arrives already tagged to the right bed, in the right unit, in the right property.

The resident’s portal

Which bed is his and until when, his documents with the last four digits and an expiry colour, a maintenance request he can raise and follow, the notice board, and a conversation with the site office.

The two questions a resident actually asks are “which bed am I in” and “when does my visa run out”. Answering them on his own phone stops both arriving at the office as a queue.

What this does not do for you yet

  • No photographs of a bed or a room. The table exists; there is no uploader and no gallery in the product.
  • The bed map is a grid, not a scaled floor plan. There is no drawing surface, no coordinates on a space, and no way to place beds onto an uploaded building plan.
  • A resident cannot pay from the portal. Invoices, balances and receipts are read-only — there is no pay-now, no payment initiation and no card redirect.
  • A resident cannot upload anything, so a renewed visa still reaches you by another route. There is no profile screen, no contact-detail editing and no lease download.
  • The map warns about gender policy and an uncleaned bed; it does not prevent either move.
  • Nothing updates live. If a colleague fills a bed while you are looking at the map, your screen does not change until you reload or move the scrubber.

Corporate housing · Companies who house their own staff

The company signs. The people rotate. The contract does not move.

A contracting firm signs for forty beds. Over the next twelve months a hundred and ten of its employees will pass through those beds, and not one of them is named on the agreement. Mini PMS keeps the two facts apart on purpose: billing follows the contract, compliance follows the occupant, and the join between them is a time-bounded allocation. Change who is in bed 4201 and nothing about the contract changes — no variation, no re-approval, no new invoice line.

The line itself can be a pooled promise rather than a list of beds. It counts its own placements and caps them, so twenty means twenty; and the contract has twelve states with each move costing its own permission, so the leasing agent who wrote the deal can submit it and cannot approve, activate, cancel or terminate it. Once live it is never edited — it is varied, and the variation records what the terms are now, what they would become, and the rent total before and after.

One invoice, itemised, not forty. The printable tax invoice carries the full compliant field set with a scannable code, and a corporate invoice gets an annexe grouping the detail by employee and by bed. A client with forty beds does not reconcile a single total — they reconcile employee by employee, and the annexe is what gets the invoice approved rather than returned.

Their own staff then answer their own questions. The corporate portal shows beds contracted, beds filled, beds paid for and empty, spend this month, what is outstanding, and how many of their people have a document expiring within thirty days — then the roster, the signed contracts, every invoice with its lines and every receipt. “We need more beds” does not send an email: it creates a lead in your pipeline, marked as coming from the portal, with their company already attached.

Twenty-seven field names may never appear in a portal answer — what a repair cost you, what you pay the landlord, your margin, their credit limit and risk band. They are not stripped out afterwards. The queries never ask for them.

CL-1042Pooled

20 beds

ASGC Group · SUB-2026-0117

Rate
AED 750/bed/mo
Term
1 Jan 2026 — 31 Dec 2026
Billed monthly
AED 15,000

That figure is the same at nought beds allocated and at twenty. A pooled line is billed on its quantity, so the invoice never waits for the site office to decide who sleeps where.

Allocated against this line0/20

20 still to place. Click a mint bed.

line_mode
POOLED
allocations moved
0
contract_lines rows changed
0
variations raised
0

Camp A · blocks A and B · 48 beds

FreeOn this lineHeld elsewhereOut of service
A-01
A-02
A-03
A-04
B-01
B-02
B-03
B-04

Point at any bed. Click a mint one to place a man against the line.

200GET /contract-lines/CL-1042/allocations → 0 rows
  1. Nothing has happened yet. Every allocation, refusal and swap below is written to the audit trail with the actor, the reason and the row it touched.
One agreement, eight occupants, three beds
Contract C-2026-0184 — 40 beds, pooled, twelve monthsAGREEMENTB-4201Ravi K.Suresh P.Anil M.B-4202Bilal H.Kamal R.B-4203Imran S.Deepak N.Farid A.JFMAMJJASOND
The band at the top is the contract; the lanes beneath are three of its forty beds over the same twelve months. Every gap between two stays is a bed that has to be found, cleaned and refilled — and none of it touches the agreement. Illustrative sample data.
12contract states, and only the legal moves are offered
5conditions checked before a contract may go live — reported at once
9sections in the corporate client’s portal
27field names a portal answer may never contain
44tests proving one client cannot reach another’s data

What a corporate housing operator gets

Named beds or a headcount — both are real contract lines

A line is either a specific bed or a pooled promise scoped to a property, block or unit, filled in later one arrival at a time.

Corporate camp deals are never written bed by bed, and a system that insists on it produces a contract full of beds nobody has chosen.

A contract cannot go live until it is actually ready

Five conditions, all failures reported together: at least one line, somebody has signed, the deposit has been invoiced in full, every named bed is lettable, and the activation stays inside your plan.

A contract that goes live without them bills a customer for a bed they were never given — and chasing a deposit after move-in is chasing a deposit that never arrives.

A signed contract is never edited — it is varied

Add a line, change a quantity, rate or discount, move the end date. The variation records the terms now and the terms proposed, plus the rent total before and after, and goes for approval.

Editing a live contract in place makes the invoice history stop matching the agreement that produced it, which is the argument you cannot win six months later.

An annexe grouped by employee and by bed

The tax invoice carries the compliant field set, a tax summary grouped by code, a scannable QR, and — for a corporate client — a per-employee, per-bed annexe behind the total.

A client with forty beds reconciles employee by employee. Exempt and zero-rated stay separate rows in the summary, because a tax return distinguishes them absolutely.

Every question carries who is asking

Before a portal request runs, the server looks up which single customer the account belongs to and puts that party into the query itself. An account with no party is refused outright rather than treated as “no filter”.

This is what lets two competing contractors sit on the same system. Asking for someone else’s invoice answers “no such invoice” — because “you may not see that” would already confirm it exists.

Staff notes stay staff-only

A thread can carry internal notes. The portal is served by a separate query that never asks for them, does not return the field saying one exists, and the database refuses to record an internal note written from outside your team.

“Chase their finance team, 40 days late” is a note your collections clerk needs and your customer must never read. Three independent layers, so nobody has to remember.

“We need more beds” becomes a real lead

How many beds, from when, and any notes — written into your pipeline as a lead marked as coming from the portal, with their company already attached, and they can see what stage it reached.

The request lands where your leasing team already works instead of in somebody’s inbox, and the client can see it was received without chasing.

A renewal is a new contract, not an edit

Renewing writes a fresh draft pointing at the original, copies every live line with an escalation applied in whole fils, starts the day after the old one ended, and marks the original renewed.

The year you charged AED 780 is still on record when you renew at AED 820. And nothing bills until the new draft is approved and activated — four clicks, not one.

What this does not do for you yet

  • A corporate client cannot manage their own sub-users. Every new client login is created by your staff from the operator side.
  • Portal users cannot upload anything, so a client cannot bulk-upload employee documents and a resident cannot send you a renewed visa.
  • No payment, no statement download and no “dispute a line” on an invoice from the portal — invoices, balances and receipts are read-only.
  • Nothing is emailed. There is no endpoint that sends an invoice, a statement or a chasing notice; documents are print-ready HTML rather than generated PDFs.
  • The chasing ladder works out which step is due for each overdue invoice and records it — it does not send it, and reports as much.
  • No reports or exports inside the portal, although the corporate portal role holds the export permission.

Villa compounds · Residential estates, mixed letting

Every villa is let. More than a third of the beds are empty.

This is the gap a unit-level property system cannot show you, because at unit level there is nothing to show. The villa is let. The report is green.

The same estate, counted two ways
COUNTED BY VILLA100%COUNTED BY BED62%40 villas · 200 lettable beds · 124 let · 76 empty — worked example, not customer data
Forty villas of five lettable beds. Eighteen are full, twelve hold two residents, ten hold one — so every villa has somebody in it and a unit-level count reads 40 of 40. Counted at the level you actually sell, 124 of 200 beds are let. The 76 empty beds between the two readings are the whole argument for this product. Worked example, not customer data.

A compound is the hardest shape to run because it is two businesses at once. Some villas go whole to a contracting firm on an annual agreement; the ones next door are let bed by bed to individuals on monthly terms. The product handles both against the same physical asset and refuses to do both at once on the same square metre: let a room whole and every bed inside it is marked blocked; occupy one bed and the room stops being sellable whole. This is the classic way an aggregator sells the same floor area twice and finds out when two crews arrive.

One occupancy rule serves the tree, the map, the dashboard and the reports, and it shows its working: how many spaces are subdivided containers, how many are ancillary, how many are excluded, and how many are genuinely lettable. A four-bed room is four sellable things, not five. Marking a bed out of service is the one status that removes it from the denominator, so it needs a written reason and a separate permission from ordinary status changes — because a property at 70% becomes 100% by mothballing the empties, and the person whose commission is measured on occupancy should not be able to do it quietly.

Then the two-sided part. Your organisation holds the head lease and issues many subleases against the same asset, so profitability is a spread per property rather than a rent roll. The property P&L runs net revenue, the head-lease cost, the operating costs, fit-out amortisation, net margin, margin percentage and cost per bed. Meters make that figure honest: give a meter a tariff and a standing charge and a reading becomes a real utilities expense against the property in the same moment.

Building the estate is one screen. Describe the shape once — blocks, floors, units a floor, the rooms inside a unit and the beds inside those — watch the count update as you type, and press build; everything appears in a single transaction with nothing half-built ever possible. The plan check runs before anything is written and states the shortfall plainly, and the whole batch can be undone in one press for sixty minutes, refused once any space in it has been reserved or occupied.

Out of service is the one status that removes a bed from your occupancy denominator. That is why it costs its own permission and refuses to be set without a reason.

Al Quoz Industrial 3, DubaiLabour accommodation · 6 blocks

86%330 of 384 beds
AED 600per bed, per month
Head lease what the building costs youAED 149,000/mo

Head lease AED 115,000Security, cleaning, mess and unrecharged utilities AED 34,000

Subleases what your contracts earnAED 190,272/mo
Spread the number a rent roll cannot produce+AED 41,272/mo

AED 41,272 a month of spread at 86% occupancy. Break-even is 70.1%.

70.1%Occupancy needed to break even at this rate
+AED 107Spread per bed, per month — the unit that matters
21.7%Margin on the building, not on the rent roll
AED 672The next bed let, on the Individual residents line
Spread across the occupancy rangeEach kink is a contract line filling up. Past the last one you are selling at the headline rate, so the curve steepens.
Sublease lines on Al Quoz Camp 1, with the beds each holds at 86% occupancy
LineHeldCommittedRatePer month
Al Nakheel Contracting160160AED 540AED 86,400
Emirates Facilities Co9696AED 564AED 54,144
Individual residents74128 availableAED 672AED 49,728

Two corporate lines hold 256 of the 384 beds. The rest is sold one bed at a time, at a higher rate and with a month’s notice.

A corporate line is a pooled quantity, not a list of beds: the contract says “160 beds” and allocation decides which ones, later. When occupancy falls below the commitment the line is short — the marked figures above — and that is a conversation with the client, not a billing change.

4legal nesting shapes, at most three levels deep
3 + 4database triggers and constraints guarding the spaces table alone
60 minwindow to undo a whole bulk build in one press
12unit types across 10 property types
7occupancy and inventory reports

What a compound operator gets

A bed and the room around it can never both be let

Let Room 101 whole to a contractor and its four beds are blocked. Occupy one bed and the room can no longer be let whole. The check walks the whole tree, over any overlapping dates including future bookings.

Checked in the application so you get a readable refusal naming the space in the way, and again in the database so no import, no script and no emergency fix can get underneath it.

One occupancy number, and it shows its working

The tree, the map, the dashboard and the reports all compute occupancy from one rule, and publish the breakdown: containers, ancillary, excluded, genuinely lettable.

Two people arguing about “occupancy” usually mean two different numbers. Here the tile, the report and the board pack read the same formula.

Out of service needs a reason and its own authority

A space cannot be marked out of service without saying why — the database rejects the row otherwise — and it is a separate permission from ordinary status changes, one a leasing agent does not hold.

Three months later, “out of service” with no reason is a bed nobody dares re-let and nobody can explain.

Build the compound from a pattern, undoable for an hour

Describe the shape once and watch the count update as you type. Everything is created in one transaction. Pressing build twice returns the first batch rather than building it again.

Laying out a 480-bed estate by hand is a week of typing and a hundred small mistakes. The undo is refused once any space in the batch has been reserved or occupied.

Numbering that matches the building people walk into

Ground floor named your way, floors numbered from wherever you start, the 13th skipped when the building skips it, unit codes from a pattern, and a per-floor multiplier that prices the fifth floor at a premium in the same pass.

Door numbers are what people say out loud. Getting the 13th floor wrong once means every unit above it is mislabelled.

Meters that reach the profit figure

Electricity, water, gas, internet and chiller, at property, unit or bed level. Consumption is worked out by the database, and with a tariff and standing charge it becomes a utilities expense against the property in the same moment.

Until a reading turns into money, the property’s profit figure is a fiction. A reading lower than the last is refused with an explanation unless you have told the meter where it rolls over.

Pricing a bed is a different permission from editing one

Guarded at four doors: creating a priced space, repricing one, a bulk build setting a rate across 400 beds, and an uploaded workbook with the rate column filled in.

A control with a side entrance is not a control. Without the fourth check, repricing a whole estate without the pricing permission would be a spreadsheet upload.

The spreadsheet round trip, with a dry run

Download a property’s inventory as a workbook, edit it, upload it back — the download is the upload format, with a second sheet listing every legal value. Validate first, writing nothing; commit second.

Real buildings are irregular: the mezzanine studio, the room somebody converted to a store. A partial import is worse than a rejected one.

What this does not do for you yet

  • No seasonal or date-ranged rates. A rate rule can vary by space type, gender policy, minimum term and a named space — it carries no date range, so a summer rate and a winter rate cannot both exist on one plan.
  • Blocks and floors can be created but not renamed or deleted. Units have the full set; blocks and floors do not.
  • Metered utilities become a cost to the property and are never recharged to an occupant or corporate client. The billable excess is reported; nothing turns it into an invoice line.
  • No multi-select bulk actions on inventory — you cannot set a status, a rate or a gender policy across a selection in one go.
  • The inventory importer reads .xlsx only. A .csv or a legacy .xls is refused with a message rather than converted.
  • There is no way to list every space across the whole estate in one call; spaces are always read a property at a time.

Landlord-owned stock · Buildings you operate for an owner

“Has my cheque cleared?” — answered without opening your book.

Most of the stock you run belongs to somebody else. The head lease is a first-class record in Mini PMS rather than a note on a property: the term, the annual rent, and the instalment schedule with what has been paid and when. That is the cost side of the two-sided lease, and it is what turns a rent roll into a margin.

In this market a year’s rent leaves as twelve pieces of paper, and the landlord’s standing question is whether the next one has cleared. The landlord portal answers it directly: the properties you hold from them, the head-lease term and annual rent, the instalment schedule, and the cheques you have written to them with bank, date, amount and whether each has cleared. Cheques written by your tenants are filtered out at the query — not hidden on the screen — so they can never appear there whatever anybody clicks.

Everything else stays on your side of the wall. Every portal request carries the one party the account is bound to, put into the database query itself; an account that cannot be matched to a party is refused outright rather than treated as “no filter”. Ask for a record belonging to somebody else and the answer is “no such thing”, never “you may not see that”, because the second sentence would already have confirmed the record exists. Twenty-seven field names are written down as never permitted in a portal answer, and a test sweeps every portal response against the list.

Access is given and taken away by your staff. A portal login is created, given one of four portal roles and attached to one landlord; the role and the party must agree, so a landlord role cannot be pointed at a company. One email address is one account, and a temporary password is shown once. Withdrawing access deactivates the account rather than deleting it, because deleting a user makes a year of messages and requests anonymous.

The landlord portal has two sections, and that is the honest size of it: an overview of what you hold from them, and the cheques you have written. There is no statement to download and no documents section.

C-2026-0184 · Gulf Contracting LLC

Al Quoz Camp 1 · 240 of 384 beds · 01 Jan – 31 Dec 2026 · AED 2,160,000 for the year, handed over as twelve cheques on the day of signing.

Register as atDay one — 28 Dec 2025

Day one — 28 Dec 2025 12 in the safe, 0 at the bank, 0 cleared.

Click any cheque, or use the arrow keys.
Emirates NBD · Al Quoz004417PayGulf Space Management LLCThe sum ofOne hundred and eighty thousand dirhams onlyAED180,000Gulf Contracting LLC01 Jan 2026
ReceivedINV-2026-0301
  1. Received and logged against the contract28 Dec 2025
Where it physically is
Safe A · Box 3 · Al Quoz office
Drawn on
Emirates NBD · A/C Gulf Contracting LLC · 0198765432
Against
C-2026-0184 line 1 — 240 pooled beds, Al Quoz Camp 1
Scan
Both faces on file

What is physically in the safe

SAFE-A · BOX 3 · AL QUOZ
In the safe, presentable
12chequesAED 2,160,000
Lodged at the bank
0chequesAED 0
Cleared to date
0chequesAED 0
Returned or superseded, held on file
0instrumentsAED 0

12 instruments issued against this contract, 12 accounted for, counted as at 28 Dec 2025. A returned cheque is still a piece of paper in a drawer — it is worth nothing and it is still yours to hold, which is why it is counted and not deleted. A schedule of due dates cannot answer this question at all.

Against these sit four outbound cheques to the landlord — AED 1,440,000 for the whole property, all 384 beds, written the same week. This one contract of 240 beds covers every dirham of it and AED 720,000 besides. That is the two-sided lease: one asset, two chequebooks, and a spread rather than a rent roll.

What crosses the wall, and what never does

Reaches the landlord

  • The properties you hold from them
  • The head-lease term and the annual rent
  • The instalment schedule — what has been paid, and when
  • The cheques you have written to them: bank, date, amount
  • Whether each of those cheques has cleared
  • A conversation thread tied to the record it is about

Never leaves your side

  • Cheques your tenants wrote — filtered at the query, not the screen
  • What you sublet the building for, and your margin on it
  • What any repair cost you
  • A customer’s credit limit, risk band or payment-behaviour score
  • Collection notes, and any internal note on a thread
  • Full passport, visa or ID numbers — screens show the last four digits
  • Anything belonging to another landlord, which answers “no such thing”
11cheque states, from received to recovered
2sections in the landlord portal — the honest number
21portal endpoints, every one behind the party gate
90 back / 180 forwarddays covered by the Cash Ribbon — head-lease instalments below the line
4portal roles, and the role must agree with the party

What an operator of landlord-owned stock gets

The head lease, and the instalments against it

The term, the annual rent and the instalment schedule with what has been paid and when — the cost side of the two-sided lease, held as a record rather than a note.

Profitability here is a spread per property, not a rent roll. Without the cost side, every margin figure in the product would be a guess.

Outbound cheques only, filtered at the query

The landlord’s cheque view asks the database for outbound instruments. Inbound cheques are excluded before the answer is assembled, not hidden after.

Giving a landlord the answer they want must never risk showing them your rent roll. A filter on the screen is one careless change away from not being a filter.

A month calendar, and a custody report

Each day’s cheques due for presentation, inbound against outbound, with the net. And a custody view grouping every cheque you believe you physically hold by where it says it is — naming the ones with no recorded location.

Before an audit somebody has to stand in front of the safe and count. Handing one to the bank runner is logged as a move of paper, not a change of status.

Banking a cheque and bouncing one are different permissions

Eleven states, and only the legal next moves are ever offered. Whoever can present a cheque cannot also record it bounced.

That is exactly the fraud the separation exists to stop, and it is enforced by the permission rather than by an instruction in a handbook.

A landlord’s bank details are their own permission

Ten specific readings are granted individually rather than swept up by a read-only role — among them a landlord’s full bank account and what you pay for a property.

A read-only role that reveals the account you pay a landlord’s rent into is not a read-only role.

A portal login is bound to exactly one party

Read from the database rather than from the browser’s token, and the request is refused outright if the link is missing or points at a deleted party.

An account that cannot be tied to a party has no rows it may see — and “none” must never be spelt as “unfiltered”, because in a query builder an unset filter means all.

Head leases are on the same expiry radar as everything else

Contracts, head leases, tenancy registrations, occupant documents, vendor trade licences and vendor insurances in one list sorted by days remaining, coloured by severity, over a 120-day horizon.

Nobody should have to remember to look in six places for the same class of problem — least of all for the lease under the building.

Twenty-seven field names a portal answer may never contain

What a repair cost you, what you pay the landlord, your margin, a customer’s credit limit, risk band and payment-behaviour score, collection notes, full passport numbers, bank details. They are not stripped out afterwards — the queries never ask for them.

Your landlord is looking at the same building you are, from the other side of a margin. One careless field on one screen tells them what you pay for the property. This makes that a build failure rather than a discovery.

What this does not do for you yet

  • The landlord portal has no statements, no documents section and no maintenance-responsibility items. The landlord portal role does not hold the document permission that both document routes require.
  • Clearing an outbound cheque does not settle a landlord or vendor payable. Outbound cheques are tracked, dated and counted in the cash forecast; the payables side was left out of this build.
  • Nothing is emailed to a landlord. Notices, statements and reminders are recorded rather than delivered until a mail relay is configured.
  • There is no operator-facing audit trail screen. Audit rows are written for every change and are readable through the platform console rather than in the operator app.
  • A landlord cannot upload anything, and there is no preference centre or quiet hours for a portal account.
  • Nothing on any portal screen updates by itself. Screens fetch when opened; there is no live push.

If none of the five is exactly you

The question is not what you call the building.

It is whether you take space on one agreement and sell it on many. If you do, the same five mechanisms apply whatever the sign at the gate says: inventory counted at the level you actually sell, a head lease on the cost side, a customer who is not the occupant, a document that expires, and a bed that must come back to available on its own.

Priced on the estate
Properties, users and beds — with eleven separate allowances behind those three headline numbers, and the counting rule for each one printed on the screen beside it.
Checked before you sign
The limit that will bite you first is visible on the pricing page rather than discovered on the night you are onboarding a camp.
Trial on the full feature set
Fourteen days with the Pro capability list, held to double the Base allowances — two properties, six users, 400 beds. No card at signup.
Negotiated when it has to be
Custom packages are built per customer against a numbered proposal showing what the standard package gives and what this one does. It starts with a conversation.