Live Product

Running a rental operation on one system instead of five

An operator renting out a few hundred garages, parking spaces and storage units across several sites runs a business that is administratively heavier than it looks. Garage CRM is the internal platform that handles it: an enquiry arrives, it is qualified, the customer is waitlisted or offered a specific unit, the offer is accepted and signed online, and the rental then runs, with rent changes, keys, notice periods and correspondence all recorded against the same records.

Core Purpose Tech built it and runs it. The users are the small back-office team who operate the rentals day to day, plus the renters themselves, who complete their steps through single-use emailed links rather than an account they have to remember.

The change that matters most is not any single feature. An operation like this normally runs on what one administrator knows: which unit can be promised to whom, how a notice date is calculated, what a price-regulation letter has to say. Encoding those rules into the system made that knowledge available to everyone on the team, and made it something software can act on.

It is bilingual Danish and English, and shaped around Danish rental practice. It does not handle money: there is no invoicing and no payment tracking, and that is a decision rather than an omission.

Built, owned, and operated by Core Purpose TechEnquiry through waitlist, offer, contract and signature to a running rentalAvailability that cannot be double-bookedRental knowledge held in the system, not in one administrator's headAI restricted to suggestions a person confirmsNo invoicing or payment collection
Scroll to see how it works

The Problem

A few hundred units is enough to consume an administrator's week

None of the frictions in a rental operation are catastrophic on their own. Together they take most of one person's time and, more seriously, leave the business dependent on what that person remembers.

Enquiries arrive in a shared mailbox that also receives newsletters, invoices and sales spam. Someone reads each message, decides whether it is a real enquiry, and remembers to answer. First-response time drifts and nobody can see how many are waiting.

Availability and promises live in separate heads. A unit can be blocked for maintenance, reserved for someone who has been offered it, or occupied by a tenant whose notice has already been given. Tracked in a spreadsheet, that produces double-bookings and awkward phone calls.

Waitlists go stale, because people join a queue and lose interest months later. Every lease is the same document with different names, produced by hand and chased for a signature. And a rent change or a termination with a miscalculated date is a dispute waiting to happen.

  • Real enquiries buried in a general-purpose inbox
  • Double-bookings from availability tracked by hand
  • Queues that no longer reflect who is still interested
  • Repeated clerical work producing and chasing leases
  • Rent changes and notice dates carrying documentary risk
  • An operation that degrades when one administrator is away

The Solution

A system that encodes the rental rules a generic CRM does not

The case for building rather than buying was the domain: occupancy, queues, notice periods and Danish lease terms are the rules that create the work, and a general-purpose CRM encodes none of them.

Availability is modelled as two separate axes. A unit has an occupancy state derived from actual rentals and offers, and an operational condition the operator sets by hand, such as blocked or under maintenance. The system refuses a conflicting assignment rather than recording one, and an offer reserves its units the moment it is sent so a colleague cannot promise them twice.

The lease is rendered from an editable bilingual template, emailed as a link, and filed as a signed PDF with the signer's name, timestamp and IP address. Rent changes are a versioned history with effective dates and a notice letter, not an overwrite. Notice periods produce a calculated end date rather than an estimated one.

An offer can be made for a unit that is still occupied, provided the start date falls after the sitting tenant's end date. That is how a handover with no empty period gets arranged, and it is the kind of rule that only exists in a system built for this business.

  • Occupancy and physical condition as independent states, with conflicts refused
  • Units reserved at the moment an offer is sent
  • Bilingual lease rendered from a template and filed once signed
  • Versioned rent history with effective dates and notice letters
  • Future-dated offers against occupied units, for gap-free handovers

What Changed Structurally

One person's working knowledge became a process everyone can run

A rental operation of this size accumulates a large body of undocumented judgement. Which unit can be offered to whom and from when. How long a notice period runs and what date it produces. What a price-regulation letter must contain to be valid. What was promised to the person who called last month, and whether anyone followed up. Held in one head, all of it is both invisible and fragile.

Encoding those rules into the system changed who can do the work. The eligibility rules decide what may be offered, so a colleague does not need to know the exceptions. The end date is calculated from the notice period rather than worked out. The letters come from templates that already contain the correct Danish wording. What was promised to whom is a reserved unit with an expiry date, and what was said is on the customer's timeline. A new administrator works from the system instead of shadowing the incumbent, and a holiday stops being a risk.

That persistence is also the precondition for the AI being useful at all, and the order matters. The assistant can summarise a thread, extract an enquirer's details, draft a reply in the operator's voice and propose a next action because the correspondence, the units, the prices and the rules are all recorded. Where knowledge stays tacit there is nothing for a model to work from, and no way to check what it produced. The system was not made intelligent by adding AI; the AI became possible because the operation had been written down.

It also means the assistance improves as the process does. A correction an administrator makes to an AI-sourced value is captured as a signal and aggregated into a reviewed, human-approved improvement, rather than a rule quietly rewriting itself.

  • Eligibility, notice periods and lease wording encoded as rules rather than recalled
  • Promises visible as reserved units with expiry dates, not as remembered conversations
  • A new or covering administrator works from the system, not from the incumbent
  • AI can assist only because the knowledge was persisted first
  • Corrections feed back as reviewed improvements, never as silent rule changes

Key Flow

How an enquiry becomes a running rental, and then ends cleanly

Every step below is implemented. The customer-facing half happens through emailed links, so staff review rather than type.

Step 01

An enquiry arrives

A website form creates an enquiry directly. An email is collected by the mailbox connector, screened against spam rules and sender reputation, and read by a classifier: a confident rental enquiry becomes a record, a borderline one waits for a person.

Step 02

Staff pick it up

The administrator sees the enquiry on the dashboard, with a response-time report naming anything drifting past the 24-hour target. They read an AI summary if the thread is long, and reply, optionally from a draft they edit.

Step 03

The customer is placed

If the location is full, the enquiry joins that location's waitlist with a rank. If a unit is free, or a sitting tenant's end date is known, the administrator issues an offer for that specific unit. It reserves immediately and carries an expiry date.

Step 04

The customer completes it themselves

From one emailed link they confirm their details, register their car with a number-plate lookup, read the lease, type their name and accept. In a single transaction the rental is created, the unit becomes occupied, and the signed PDF is filed. If the document fails to render, the whole thing rolls back.

Step 05

The rental runs

Keys are handed out and recorded. A price change is registered with an effective date and applied when that date arrives. Occupancy and revenue are captured daily, so the reports have history rather than recollection.

Step 06

It ends cleanly

Either side gives notice, the end date is calculated from the notice period, and because it is known in advance the next tenant can be lined up from the waitlist. On the date the rental ends, the unit is released, and any outstanding keys surface as a warning rather than being silently ignored.

Artifact Preview

What the AI is allowed to do, and what it is not

The AI reads incoming mail, summarises threads, extracts details and proposes replies. It changes no business record on its own: every endpoint produces a suggestion and a person confirms it. This is that boundary written out.

AI authority in Garage CRM — excerptRedacted excerpt

AI step

What it may do

What happens when it is unsure

Never automatic

Is this a rental enquiry?

Create the enquiry record when confident

Queue the conversation for a human decision

Discarding a message as irrelevant

Reading a long thread

Show a summary above the conversation

Show the thread without a summary

Replacing or editing the original messages

Extracting enquirer details

Pre-fill a draft record for review

Leave the fields blank rather than guess

Writing to a saved customer record

Drafting a reply

Prepare a draft in the operator's own voice

Leave the reply to the administrator

Sending anything without a person pressing send

Suggesting the next action

Propose one action from current state

Offer nothing rather than something weak

Moving a rental, offer or waitlist entry along

Threshold values and prompt text are omitted; both are tuned in operation. The steps, the fallback behaviour, and the never-automatic column are how the system runs today.

Artifact Preview

The state model that makes double-booking impossible

Availability is the thing a spreadsheet gets wrong. Splitting it into two independent states, one derived and one set by hand, is what lets the system answer "can this be rented?" without a judgement call.

Unit availability states — excerptRedacted excerpt

Occupancy (derived)

Condition (set by staff)

Can it be offered?

Why

Available

Normal

Yes

Nothing holds it and nothing is wrong with it

Available

Blocked or under maintenance

No

Condition overrides availability; refused with a clear error

Reserved by an open offer

Normal

No

Already promised to a named customer until the offer expires

Occupied, notice given, end date known

Normal

Yes, for a later start date

The handover is arranged in advance, with no empty period

Occupied, no notice

Normal

No

There is no date to hand over on

The internal state names are simplified for reading. The two-axis split, the override order, and the future-dated exception are the implemented logic.

Proof Layer

What was built, and what it is tested against

This section reports properties of the system rather than improvement percentages. Each one can be checked against the running product.

Context

Operational domain
Garage, parking and storage rental across several locations, a few hundred units
Primary users
A small back-office team, plus renters acting through single-use emailed links

Scope

Workflow coverage
Enquiry, waitlist, offer, contract, signature, live rental, rent change, termination, with the eligibility, notice-period and lease rules encoded rather than applied from memory
Deliberate boundary
No invoicing, payment tracking or deposit settlement; the operator keeps that in their accounting system

Constraints

Authority requirement
No AI output changes a business record, and no message leaves without a person sending it
Correctness requirement
Conflicting assignments are refused, and each request either completes fully or rolls back

Artifacts Delivered

Product deliverables
Bilingual staff interface, emailed self-service flows, lease templates, ten scheduled background processes
Assurance deliverables
Around 1,490 backend and 870 frontend tests, a browser suite over the public signing flow, and a CI pipeline with API-contract and migration-safety checks

Outcome Signals

What the operator gets
One tracked path from first contact to signed tenant, availability that can be trusted, and a daily operations board naming what needs attention
What is provable afterwards
A versioned rent history, a signed contract snapshot with signer and timestamp, calculated notice dates, and an activity timeline behind all of it

Outcome signals are anonymized measurements from a defined pilot period. Ranges are used to preserve client confidentiality. The measurement period, baseline, and scope are stated in the classification and evidence note on this page.

How to read this case

Classification and evidence method

A product we build and run in production today, not a one-off engagement.

No controlled before-and-after study was run, so this case states no improvement percentages. What it reports instead is verifiable: what the system does, what it refuses to do, and what it does not cover. The verifiable facts are the system's own: around 1,490 backend and 870 frontend tests passing, ten scheduled background processes, and a set of operations the system refuses to perform. Whether the background processes run in a given environment is a deployment setting, not a product claim.

Case type
Live Product
Number basis
Not measured — capability stated instead

Published · Updated

Limits

What this system does not do

Stating the boundary matters here, because it decides whether the platform replaces one system or two.

It handles no money. Every rental's price, deposit and intended payment method are recorded, but no invoice is produced, no payment is tracked, and no deposit is settled. An operator adopting it keeps invoicing in their accounting system and reconciles by hand. The design for how billing would attach exists; the feature does not.

Signing is click-to-accept electronic acceptance, not a national eID such as MitID. That is adequate for these rental agreements, and the code is structured so a signature provider could be substituted, but none is integrated today.

Filling a vacancy from the waitlist is still a human decision. The system ranks the queue, asks whether people are still interested and lapses the ones who do not answer, but it does not work down the queue by itself when a unit frees up.

Renters have no portal. Every customer-facing step is a single-use emailed link, which removes account and password management at the cost of not offering an ongoing self-service view. And the platform runs for one operator today: the data model carries an operator identifier throughout and isolation tests exist, but selling it to multiple operators would make that isolation security-critical and is work not yet done.

  • No invoicing, payment tracking or deposit settlement
  • Click-to-accept signature rather than national eID
  • Waitlist promotion still initiated by a person
  • No renter login, and no multi-operator deployment yet

Outcome

The work that used to depend on someone remembering now has a place

Reading a shared mailbox, deciding what is an enquiry, producing the same lease with different names, chasing a signature, remembering that a price change takes effect next month, noticing that a rental ends in six weeks: each of these now has a state and, where it is safe, a scheduled process.

The coordination gain is specific. Units are reserved the moment an offer goes out, a blocked or taken unit cannot be assigned, and a notice date becomes visible early enough to line up the next tenant. Those are exactly the points where a spreadsheet-run operation produces double-bookings.

  • One tracked path from first contact to signed rental
  • Correspondence living on the customer record, not in one person's inbox
  • Occupancy and revenue measured daily rather than recalled
  • A documentary trail that holds up in a rental dispute

Leadership Angle

Operating a portfolio with fewer administrators than its size implies

The transferable part is not the garage domain. It is what it takes to move an operation off one person's memory and reduce the human cost per transaction without giving up accountability for any of it.

  • Undocumented judgement became rules the whole team can execute
  • AI earns its place by removing reading and typing, not by deciding
  • Persisting the process is what made the AI assistance possible, not the reverse
  • Self-service by emailed link avoids an account system nobody wanted to run
  • The evidence trail is a by-product of the design, not a reporting layer bolted on
Explore the Operational AI case: Operational AI
Related Operational Case
In-App AIWorkflow Automation

Operational AI

The same suggestion-not-decision boundary applied inside another live product we run, with model access governed through one central gateway.

Explore the Operational AI case

explore further

Related capabilities

  • Operational AI

    AI systems that integrate with existing platforms and workflows, with control, traceability, and operational reliability.

  • Integration Platforms

    Structured, reliable, and observable integration platforms that replace fragile point-to-point connections.

Further reading

Interested in how this approach could work for your organization?

Get in touch
core purpose. techTechnology consulting with purpose.