All apps

Houseshare

A landlord platform for shared households

Room-by-room letting, a rent ledger, and a portal for the people who live there.

A house let room by room to people who did not choose each other. One API serves two apps: a dense back office where the landlord does the bookkeeping, and a phone-first portal where a resident checks what they owe and whether anybody has looked at the boiler yet. Money that lands on the house is split before anyone is asked to pay it, and every refusal is a test.

The Houseshare sign-in: a blue panel carrying the name on the left, the email and password form on the right
The front door. Two apps sit behind it — the landlord’s back office and the tenant portal — and the same account opens the right one.
The Houseshare sign-in on a phone, the form filling the screen under the name
On a phone, which is where a tenant reports a broken boiler from.

Built for named people, not job titles.

Before anything was built, the people who would use it were written down by name. Each one gets a real account, and every screen is clicked through as each of them before it ships.

  • Amina

    Landlord

    Checks arrears before anything else. Two houses, and she knows which room is empty.

  • Bilal

    Landlord

    A second landlord on the same instance, so every ownership rule has someone to refuse.

  • Chidi

    Tenant

    Reports the boiler and wants to know a human saw it. Disputes the arithmetic when he pays late.

  • Dara

    Tenant

    Moved in halfway through a billing period, which is why her share of every bill is the interesting one.

One milestone at a time.

This is the plan the app was built from. Each milestone is written in plain words, together with the check that proves it works.

13 milestones, 13 built

  1. 1

    The portfolio

    built

    A landlord adds a house and the rooms in it, and sees only their own.

    How we check it

    1. Given 'amina' has no properties
    2. When 'amina' adds a house with three rooms
    3. Then the house appears on her portfolio with three vacant rooms
    4. When 'amina' adds a fourth room to it later
    5. Then the house is let by four rooms
    6. And 'bilal' cannot see it on his portfolio
    7. And 'bilal' is refused when he reaches for it directly
  2. 2

    A room is let

    built

    The landlord creates a tenancy for a room, and the room stops being empty.

    How we check it

    1. Given 'amina' has a house with a vacant room
    2. When 'amina' agrees a tenancy with 'chidi' for that room and activates it
    3. Then the room shows as occupied by 'chidi'
    4. And the tenancy carries the agreed rent, deposit and notice period
    5. And a second tenancy for the same room cannot be activated while one is active
  3. 3

    The rent ledger

    built

    Charges accrue, payments settle them oldest-first, and arrears fall out of the arithmetic.

    How we check it

    1. Given 'chidi' has an active tenancy with two unpaid monthly charges
    2. When 'amina' records a payment covering one month
    3. Then the older charge is settled and the newer one is still outstanding
    4. And 'chidi' shows as one month in arrears rather than two half-months
    5. When 'amina' records a payment larger than what is left owed
    6. Then the extra money is held as credit against the tenancy
  4. 4

    The tenant portal

    built

    A second frontend where a tenant sees their room, their tenancy and what they owe — and nothing else.

    How we check it

    1. Given 'chidi' and 'dara' hold tenancies on rooms in the same house
    2. When 'chidi' opens the portal
    3. Then he sees his own room, rent and balance
    4. And he can read the month behind what he is told he owes
    5. And he cannot see what 'dara' pays for her room
    6. And he is refused when he reaches for the landlord's arrears view directly
  5. 5

    The monthly rent run

    built

    Charges raise themselves on the due day, reminders go out by queue, and nobody chases by hand.

    How we check it

    1. Given 'chidi' has an active tenancy whose rent is due today
    2. When the monthly rent run executes
    3. Then a charge for this month exists against his tenancy
    4. And running it a second time does not create a second charge
    5. And the arrears sweep enqueues a reminder once the charge is overdue
    6. And 'chidi' receives that reminder by email
  6. 6

    Something is broken

    built

    A tenant reports a fault and watches the landlord's triage land on their screen without reloading.

    How we check it

    1. Given 'chidi' has an active tenancy in a house owned by 'amina'
    2. When 'chidi' reports a broken boiler as urgent
    3. Then it appears on the triage queue of 'amina'
    4. And it is invisible to 'bilal'
    5. And when 'amina' marks it seen, the open screen of 'chidi' updates without a reload
  7. 7

    Splitting the bills

    built

    One energy bill becomes a fair share on each resident's statement, with the arithmetic shown.

    How we check it

    1. Given a house owned by 'amina' has two occupied rooms and one empty room
    2. And 'dara' moved in halfway through the billing period
    3. When 'amina' enters a quarterly energy bill split per head
    4. Then 'chidi' is charged a full share and 'dara' a part share for her days
    5. And the empty room's share is carried by 'amina' rather than the residents
    6. And 'chidi' can see how the split was calculated without seeing what 'dara' pays in rent
  8. 8

    The deposit and the move-in check

    built

    Take the money, record the condition, and get both signatures while everybody is still friendly.

    How we check it

    1. Given 'amina' has activated a tenancy for 'chidi' and recorded his deposit
    2. When 'amina' completes a move-in inventory check for the room
    3. Then the tenancy shows the check as awaiting the signature of 'chidi'
    4. And once 'chidi' signs it from the portal, neither of them can edit it
    5. And the deposit is never applied to an outstanding rent charge
  9. 9

    The move-out

    built

    Notice, check, deductions, response, settlement — a durable process that survives the weeks it takes.

    How we check it

    1. Given 'chidi' has an active tenancy with a signed move-in check
    2. When 'chidi' gives notice and 'amina' completes the move-out check
    3. And 'amina' proposes a deduction naming the item it relates to
    4. Then 'chidi' sees the proposed deduction and the deadline to respond
    5. And when he accepts, the deposit is settled and the tenancy ends
    6. And the room returns to vacant while its ledger history stays readable
  10. 10

    Nothing expires quietly

    built

    Certificates and contracts with expiry dates, and something watching them so the landlord does not have to.

    How we check it

    1. Given 'amina' has uploaded a gas certificate expiring in thirty days
    2. When the nightly expiry sweep runs
    3. Then 'amina' receives a reminder naming the property and the date
    4. And 'chidi' can read that certificate for the house he lives in
    5. And 'chidi' cannot read the licence documents of 'amina'
    6. And uploading a newer certificate supersedes it without deleting the old one
  11. 11

    The house assistant

    built

    A landlord asks a question in words and gets an answer from their own data, under their own permissions.

    How we check it

    1. Given 'amina' has two houses with one room in arrears
    2. When 'amina' asks the assistant who is behind on rent
    3. Then the answer names that tenancy and the amount from the ledger
    4. And it cites the charges the figure came from
    5. And the same question asked by 'bilal' returns nothing about the houses of 'amina'
  12. 12

    Three languages, one right-to-left

    built

    English, German and Arabic across both apps — and the RTL pass that finds the real layout bugs.

    How we check it

    1. Given 'chidi' has set his language to Arabic
    2. When 'chidi' opens his statement in the portal
    3. Then the layout is mirrored and the money column stays aligned
    4. And the arrears reminder he receives by email is in Arabic
    5. And no screen in either app renders an untranslated string
  13. 13

    Tools and versions

    built

    The portfolio as MCP tools an outside agent can drive, and a function contract that changes safely.

    How we check it

    1. Given an outside client is connected over MCP as 'amina'
    2. When it asks for the vacant rooms in the portfolio of 'amina'
    3. Then it receives them from the same function the app calls
    4. And it is refused the portfolio of 'bilal'
    5. And changing a versioned contract is reported as breaking before it ships

Your business, on its own app.

Pikku Studio is free and runs on your computer. Start from the spreadsheets, folders and chats you already have.