// reference build

Casement

Real estate & proptech

Capture the property. Publish from the kerb.

Casement is a native iPhone and Android app for listing agents. You walk a property, capture it room by room, dictate the notes that become the listing copy, and publish a draft before you leave the kerb — then run showings, geofenced open-house check-in and buyer leads out of the same app. It is built for the agent working alone in an empty house with one hand on a phone, not for a desk.

A BuildspaceLabs reference build. We designed Casement in-house to show how we approach native mobile — it is not a client engagement, and every name, record and figure inside these screens is fictional demo data.

  • 4K walkthrough capture
  • Voice-to-listing
  • Geofenced check-in
  • Instant lead push
Casement shown on three phones — Today, Room capture, 12 Alder Row, Today, rebuilt in Material 3 — on a real estate & proptech brand backdrop
// platforms

Two native designs, one shared core

Casement is designed twice — once in the iOS idiom and once in Material 3 — on top of a shared domain core, rather than one layout wrapped twice for both stores. The frameworks below are the stack each side is specced against.

iOS

Swift · SwiftUI2 screens in this set

Android

Kotlin · Jetpack Compose · Material 31 screen in this set
// screens

The screens

3 surfaces from the build — 2 in the iOS idiom and 1 redesigned in Material 3 on Android. Everything inside the frames is fictional demo data.

Casement — the Today screen, running on iOS
01iOS

Today

The 7am screen: hero capture card for the half-finished draft at 12 Alder Row, an overnight buyer lead, a "needs finishing" carousel of three drafts with progress rings, and the day's showings as a grouped inset list with a drive-time chip, a swiped row showing the Confirm / Reschedule / Navigate actions, the running Live Activity, and a three-tile stat strip.

Casement — the Room capture, 12 Alder Row screen, running on iOS
02iOS

Room capture, 12 Alder Row

The screen the agent stands in the room with: full-bleed viewfinder over the staged primary bedroom, horizon guide reading level, room progress rail, LiDAR measure overlay, capture cluster, and the dictation sheet at its medium detent carrying the live transcript, the draft listing copy, extracted feature chips and the upload queue.

Casement — the Today, rebuilt in Material 3 screen, running on Android
03Android

Today, rebuilt in Material 3

The same day, the same records and the same numbers as the iOS home screen, expressed in Android idioms: top app bar and supporting text, filled and elevated cards, outlined draft cards with linear progress, primary tabs, list items with leading time badges and trailing assist chips, tonal swipe actions, an extended FAB for capture, a snackbar for the pending uploads and a navigation bar with a pill indicator.

// why native

Why it has to be native

The case for building this twice rather than wrapping a web app. Each one is designed around an operating-system capability a browser either cannot reach or cannot be trusted to hold.

Dual capture pipeline

AVFoundation and CameraX drive per-room presets, HDR bracketing and 4K60 walkthrough video, with a live horizon guide fed by CoreMotion / SensorManager so every room shot lands square to the wall. The web camera API gives you a frame grab and nothing else.

In-place room measurement

ARKit RoomPlan on LiDAR iPhones and ARCore Depth on Android measure the room where the agent is standing (4.2 m × 3.6 m, 15.1 m²) and assemble a floor-plan scaffold. There is no browser equivalent to the depth sensor.

Speech recognition that works with no signal

SFSpeechRecognizer and Android SpeechRecognizer keep transcribing in a basement or a stone-walled cottage; the dictated note turns into draft listing copy on-device, offline.

Resumable multi-gigabyte uploads

URLSession background transfer and WorkManager with a foreground service push a capture set up over hours, honouring a Wi-Fi-only policy, a cellular budget cap and battery-aware scheduling. A backgrounded browser tab is suspended and loses the transfer.

Geofenced open-house check-in

CoreLocation region monitoring and the Android Geofencing API wake the app on arrival and open visitor check-in, with NFC tap and QR badge fallback and a signed on-device visitor log.

Time-sensitive delivery and a live showing

Time-sensitive APNs and high-priority FCM land a buyer lead through a Focus mode; an iOS Live Activity in the Dynamic Island and an Android ongoing notification hold the running showing timer; EventKit and CalendarProvider sync showings both ways into the agent's own calendar.

// stack

The stack it is designed for

The target architecture this build is specced against, chosen per constraint rather than per habit — the stack shifts with the problem.

  • Swift 6 and SwiftUI on iOS 18, with UIKit interop for the custom capture viewfinder and Live Activities via ActivityKit
  • Kotlin 2.2 and Jetpack Compose with Material 3 expressive on Android 15, edge-to-edge and predictive back
  • Kotlin Multiplatform shared layer for the domain model, sync engine, offline mutation queue and listing-copy assembly
  • AVFoundation + ARKit RoomPlan on iOS, CameraX + ARCore Depth on Android, for capture, levelling and in-place room measurement
  • SQLDelight offline-first local store with resumable transfer scheduling through BGTaskScheduler and WorkManager
  • Go services on Cloud Run behind Postgres + PostGIS for geofences and routing, object storage with signed URLs, FFmpeg transcode ladder for walkthrough video
  • RESO Web API connectors for two-way MLS and CRM listing sync, with a mapping layer per board
  • APNs and FCM for time-sensitive lead delivery, EventKit and CalendarProvider for two-way showings calendar sync
// next

Working on something shaped like this?

Casement is a reference build, so there is nothing to buy on this page. If your team has a problem that needs this kind of depth — offline for a full shift, real sensors, work that has to happen with the screen off — tell us about it and we will tell you honestly whether we are the right people to build it.