A confirmed visit is already somebody's job.
Confirming creates the work order in the same transaction — not in a worker that might get to it. The brief is a snapshot taken at that moment, so an edit made on Thursday never rewrites what the technician read on Wednesday morning.
JOB-0117
Wed 15 · 09:00
Technician brief
Service
Boiler service
Address
Lindenstr. 14, 10969
Access
Key at the bakery, ground floor
Equipment
Vaillant ecoTEC plus
Frozen at confirmation — later edits do not rewrite it
Lindenstraße 14, 10969 Berlin
Vaillant ecoTEC plus VC 146
SN 21-4471-88 · installed 2019
At this address
- 03/25Annual service, pressure topped up
- 11/24Expansion vessel replaced
- 02/24Fault F.22, system refilled
The gap between “booked” and “assigned” is where work goes missing.
In most stacks a confirmed appointment and the work it implies are two events, joined by a queue. Between them there is a window — as wide as a restart or a failure — in which a customer has been promised a visit that is nobody's responsibility.
Lavenity closes it by making both one fact. A confirmation writes the appointment and the job together, and a unique index, not a check in the code, is what makes a repeated confirmation return the job you already have.
What the technician leaves with, and what the customer gets
A brief that cannot drift
Service, address, access, equipment and every qualification answer, frozen at confirmation. Alongside it, the notes your dispatcher writes in their own words.
JOB-0117
Wed 15 · 09:00
Technician brief
Service
Boiler service
Address
Lindenstr. 14, 10969
Access
Key at the bakery, ground floor
Equipment
Vaillant ecoTEC plus
Frozen at confirmation — later edits do not rewrite it
A confirmation that cannot quietly not arrive
Outbound confirmations are durable runs with attempts and a visible state. A failed send is a state you can see and retry, not a message that silently never happened.
- Visit confirmed, Wed 09:00EmailDelivered
- Visit confirmed, Wed 09:00WhatsAppAttempt 2
- Reminder, 24 h beforeEmailScheduled
Survives a restart. Retries until it lands.
Numbered out loud
JOB-0117 — because people say the number to each other on the phone.
Cancels without collateral
Cancelling a visit withdraws work nobody started and leaves work already underway alone.
Linked both ways
The job knows its request and appointment; the customer's confirmation links back to both.
An event to build on
Every created job publishes a domain event — the seam future connectors read.
From confirmed to completed
The work order is the object the rest of the business talks about — dispatch, the van, the invoice — so it is created the moment the promise is made.
- 01
Confirmation creates the job
One transaction writes the appointment, the work order and the brief. A second confirmation returns the same job rather than a second one.
- 02
Dispatch and status
Created, dispatched, in progress, completed, cancelled — a short lifecycle, kept short on purpose so it stays honest.
- 03
The result feeds the funnel
Completed jobs are the last stage of the report, which is what makes enquiry volume mean something.
This is a work order, not an ERP.
The job carries what someone needs to do the visit and what the business needs to count it. Stock, payroll and invoicing belong to the systems you already run — which is why every job publishes an event instead of trying to become one of them.
The brief it started with
A snapshot of the request as it stood when the visit was promised.
A confirmation that landed
Delivery state per channel, with retries and a visible failure if it did not.
A place in the funnel
The last stage of the report that turns conversations into countable work.
Send people out with the whole story
Every confirmed visit arrives as a job with the address, the access, the machine and the answers.