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:
- Store scraped regulatory data — Scraper output from all 400+ local authority sources has a structured home.
- Track compliance state per property — Licence status, expiry, and conditions are first-class data.
- Detect and record regulatory changes — The
regulatory_changestable is the trigger for all alerting. - Support application workflows — Agents and landlords can track where an application stands.
- 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.