All Docs
FeaturesHMOwatchUpdated February 21, 2026

Introducing the HMO / Property Licensing Domain Model

Introducing the HMO / Property Licensing Domain Model

Version: 1.0.2
Severity: Critical
Category: Core Functionality


The Problem

HMOwatch's mission is to protect letting agents and landlords from compliance failures by continuously monitoring all 400+ UK local authority licensing sources. However, prior to v1.0.2, the underlying database schema had no representation of any HMO or property licensing concept. The data model was entirely generic — covering only users, organisations, and billing — with no tables for licences, schemes, properties, applications, conditions, fees, or regulatory changes.

This was a critical gap. Without a domain model, the platform had no way to store scraped data, no structure for tracking compliance state, and no foundation for generating real-time alerts.


What Was Built

v1.0.2 introduces the core HMO and property licensing domain model. This is a foundational schema change that every future product capability — alerts, dashboards, scraper pipelines, compliance reports — builds upon.

Domain Areas

Licensing Schemes

Represents the universe of local authority licensing schemes the platform monitors. Each scheme record captures:

  • Scheme type: Mandatory HMO, Selective, or Additional
  • Issuing local authority
  • Geographic scope
  • Active/inactive status
  • Scheme-level metadata for tracking changes over time

Properties

Property-level records that tie physical addresses to licensing obligations. Key attributes include:

  • Full address and local authority jurisdiction
  • Tenure type and occupancy characteristics
  • Linkage to applicable schemes

Licences

Individual licence records granted under a scheme for a property. Each record holds:

  • Licence type and reference number
  • Issue date, expiry date, and renewal date
  • Current status (active, expired, revoked, pending)
  • Issuing authority

Applications

Tracks the lifecycle of a licence application from submission through to decision:

  • Submission date and application type
  • Assigned scheme
  • Current stage (submitted, under review, approved, refused)

Licence Conditions

Conditions attached to individual licences, which can change over the lifetime of a licence. Stored as discrete records to enable:

  • Condition-level change detection
  • Compliance obligation tracking
  • Alert generation when conditions are added, removed, or amended

Fee Structures

Per-scheme fee records capturing what each local authority currently charges:

  • Application fees and renewal fees
  • Discounts and exemptions
  • Fee change history

Regulatory Changes

An event/audit table that records detected changes across any of the above entities. This is the core data structure behind the real-time alert system:

  • Change type (fee update, scheme activation, condition amendment, etc.)
  • Affected scheme or licence
  • Detected timestamp
  • Source reference

What This Enables

With the domain model in place, the platform can now:

  1. Store scraped regulatory data — Scraper output from all 400+ local authority sources has a structured home.
  2. Track compliance state per property — Licence status, expiry, and conditions are first-class data.
  3. Detect and record regulatory changes — The regulatory_changes table is the trigger for all alerting.
  4. Support application workflows — Agents and landlords can track where an application stands.
  5. Surface fee intelligence — Fee structures are queryable and auditable over time.

Migration Notes

This release introduces new tables and is not backwards-compatible with the v1.0.1 schema. Existing deployments must run the provided database migration before upgrading application code.

Note: No user-facing product features ship in this release. v1.0.2 is purely an infrastructure and data-model release. Feature development on top of this foundation will follow in subsequent versions.


Related