Jobs and the record
A job, and everything that happened to it.
Customers, the photos they send before you drive out, who on your team may move a price, and a written record of every change anybody made to any of it.
Every command writes a row, whether it succeeded or failed.
Jobs
Everything hangs off the job
A customer, their address, and the work you are quoting them. Every design, every quote, every document and every comment lives on that one record rather than in four places that have to be kept in step.
Six states, in order
Draft, ready for review, proposal sent, approved, construction ready, archived. The status is what it is because of what happened, not because somebody remembered to update it.
Customers, not leads
A person, a phone number and the address the pool is going in. Enough to write the proposal and enough to find the job again.
Every design on the rack
Up to forty alternatives against one job, each with its own drawing and its own total. One is active, and the active one is what the quote and the documents read.
Your company, set once
Logo, colour, licence number, terms and tax rate. Every document you send carries them without you doing anything.
Quoting on day one
A new company starts with a working price book rather than an empty table, so the first job can be quoted the afternoon the account opens.
Nothing crosses companies
Every query is scoped to your organisation. There is no global view, and no screen that could accidentally show you somebody else’s job.
Intake
The site arrives before you do
The hour you spend driving out to photograph a back yard is an hour you are not selling. Send a link instead and let the customer do it from the phone that is already in their hand.
No account, no app. A link they open, a few photos, done. It works on the phone that took the pictures, including the HEIC files an iPhone actually produces.
Photos, sketches, the survey. A picture of the yard, a sketch on graph paper with the dimensions written on it, or the PDF survey from closing. All of it lands on the job.
The link is public, and treated that way. Uploads are size-capped before a byte of the body is read and rate-limited per address, because a public endpoint is one a stranger can find.
It becomes something you can trace. The images sit on the job as source material for the import, rather than in an email you have to go and find.
No account, no app. A link they open on the phone that took the photos.
Import
From a photograph to a measured project
Reading a picture is the part every competitor leaves alone. It runs here, and it is honest about what it still needs from you.
It works out what it is looking at
A yard photograph, a hand sketch and a surveyor’s drawing are three different problems, and the first step is deciding which one arrived.
It reads the numbers you wrote
Dimensions written on a graph-paper sketch come off the image as dimensions, not as a note somebody has to retype.
Then it gets precise
A second pass finds the grid, separates the ink from the paper and simplifies the traced outline into the corners you meant.
You approve it before it lands
Nothing is committed to the job until you have seen what it read and corrected it. Extraction proposes; you decide.
It still needs something of known size in the frame to set the scale. Without one, it will give you the shape and ask you for the dimension.
Team
Roles exist to protect one thing
Access control on a drawing tool is usually theatre. Here it guards the price book, which is the one object in the product where a wrong edit costs money on every quote that follows.
Owner, admin, member. Owners and admins keep the team and the book. Members quote from it, which is what most of a sales floor needs.
Nobody grants access above their own. An admin who could invite an owner has made themselves an owner with a second email address, and every other check becomes decoration.
There is always an owner. An organisation with no owner has nobody who can promote anybody: live data and no way back short of a database console. It refuses.
Refusals name the person. "Only an owner or an admin can change who is on the team" is something you can act on. An internal id is not, and never appears in front of anybody.
The record
What did this person actually do
Every action in the product goes through one place, and that place writes it down. Not a log file somebody has to go and read: a row on the job, whether the action succeeded or failed.
Every command, both ways
What was asked for, what came back, whether it worked and what the error was. A failed action is as much a part of the record as one that went through.
One path for everything
A toolbar button, a keyboard shortcut and a server action all run the same command. There is no second route that skips the write.
It tells you when it breaks
Errors are reported with the secrets stripped out, and the person on screen gets a short reference they can quote rather than a stack trace.
Quotes are reproducible
A quote stores the measurements, the selections and the price book version it was built from, so it can be rebuilt exactly months later.