Product
Raise it from where the work is.
The person who finds the problem is on a ladder, not at a desk. They send what they see to the number they already have, and it lands where its join code binds it — the maintenance log or the inbox. Either way, a person confirms it before anything enters the record.
A message lands where the code binds it
A contact on a join code sends a note. Draft replies to say it arrived and where it went. This code is bound to the whole workspace, so the note and its photo are kept in the maintenance log as written; on a code bound to a project the note goes to the inbox for the decision maker to review and confirm.
Dale (gardener) · 08:42
Join codes, not phone books
A code binds a phone to a workspace, a project or one job. You create it in Settings and send the link or the QR; one tap opens the chat. Revoke it and the phone is out.
HLM2-K7PQDale (gardener) · Maintenance log
- Dale (gardener) …4471 · joined 3 Sep 2026
One tap opens WhatsApp pre-filled with this code — their first message enrolls their phone; after that they just text normally.
The same note, in the app
In the app the composer does the same job: write it as you would say it, and Draft structures it. Either way a person confirms before anything enters the record.
Draft AI tidies this into a draft change — a title, a cleaned description, a job match, and a rough time hint if you gave one. It never sets a price or makes a decision. You confirm next.
The rule
A message is never lost, and never enters the record until a person confirms it.
Draft structures what it is sent; it never prices, approves, attributes or predicts. An unmatched message waits in the inbox to be confirmed or discarded by a person.