Paid jobs keep their saved work and customer-facing notes read-only. Customer and Findings appear as selectable text, not disabled editors. Unsettled approved work uses Revise approved work; new work after payment starts from New job. Per-job gross profit lives in the money rail, without repeating in each job footer.
Click any car on the board to open its hub. Everything about the visit lives here.
The header
Vehicle and customer info, the assigned tech, the scheduled time, and a contextual primary action that matches the stage. Click the customer's name for their file — phone, email, address, and any balances — in a sheet right here, with a jump to the full profile; Message still opens texting (check in, schedule, order parts, start repair, or new issue) — and Mark complete always shows once any job is ready to close out. The complete picker lists every open job: completing requires an assigned technician (the record of who did the work — assign one and the job unlocks), and a job the customer never approved can still be closed, but if it carries charges you must confirm the customer authorized the work — that confirmation is recorded on the job with your name and prints on the invoice as the approval record ("Approved: in person or by phone"). When completion finishes all open work, a checkbox controls the "car is ready" text — uncheck it to close things out silently (bookkeeping, or the customer is standing right there). The Schedule modal has the same silent option for booking, moving, or removing an appointment. The header only offers Schedule while no appointment exists — once the customer booked one (or you did), the scheduled time in the header carries a Change appointment link instead, opening the same modal seeded on the booked day and time. Customer texts follow the same truth: an approval confirmation quotes the booked time instead of promising a follow-up, and mobile-service visits always read as "we'll come to you," never as a drop-off. Mark as picked up says what it does before it does it: the car leaves the board but keeps its full history under the customer (new work brings it right back), and — when the invoice is paid — a checkbox controls the review-request text, so a silent close-out never surprises anyone. Unfinished work is handled honestly at pickup: a job still in repair blocks the close-out until the tech finishes or moves it back, and any other open job is marked deferred (they'll come back for it) so history stays true, the bill drops the undone work, and follow-ups can bring the customer back. Nothing is ever silently recorded as done.
The header's overflow menu (the three dots) also holds Print repair order: pick which jobs go on it — and check Without prices for the tech copy, the same RO with no money on it — and a print-ready RO opens right over the page: shop letterhead, RO number, vehicle and customer, each job's lines with part numbers (and prices, unless you turned them off — the preview's own Prices box flips it too), and signature lines for the customer and the tech. Print opens the document in its own window so long ROs paginate properly. It's the internal working copy for the counter or the tech's bench, separate from the quote the customer approves and the invoice they pay.

Issues
On web, click an editable job name or its pencil to rename it. Drag the name, header space, or grip to arrange your workspace; dragging does not open the editor. Click the grip to pick a position. You can drop over another card even when it is expanded. Fields, expanded notes, and dialogs remain editable without moving or closing the card. Keyboard users can use Space, arrow keys, then Space on the grip. The right rail follows your order within each section. This order stays in your browser for that user and visit; other staff, customer approvals, and invoice documents keep their own order. Newly added jobs appear at the end, and charges keep their separate section.
The vehicle header shows Awaiting approval when quoted work is on the sent estimate. Work on an unsent draft says Ready to send instead.
Each complaint or job is an issue with its own status, moving through: Opened, Diagnosing, Quoted, Awaiting approval, Approved, Parts ordered, In repair, Done. Deferred (declined) work keeps its own section so it can be revived later: Restore puts the job back on the vehicle's current visit (opening a new one if the last visit closed), and work the customer had already approved comes back approved, ready to schedule and bill. You can also just tell Shop Brain the returning appointment is for that work and it revives it for you. Each issue shows its source: customer-reported, routine service, or an OBD scan.
Jobs open right on the page — no separate screen, and the list is one flat list in the order jobs were added: nothing shuffles when a status changes. Each row says where it stands, and discounts show right where they act: inside an open job every line shows its list price, and the job's discount is its own row — Discount · 10% −$25.00, with an × to remove it — so the math is visible, and a part you add later joins the discount automatically. The collapsed row reads before-and-after (10% off, the old price struck through, then the real one). Discounts stack the way the industry expects: each job carries one discount of its own (its visible row), and a Whole ask, Labor, or Parts discount applies to the ask after job discounts, on the already-discounted remainder — a labor discount rides on top of a job's 10% instead of replacing it. The money rail's ladder shows the pre-discount subtotal and then one Discount row with every discount summed in dollars — job discounts and any ask-wide discount together, since the customer sees one number off; the editor still itemizes per target. Everything clickable in the rail says so at rest: discount rows carry Edit and open the discount editor, Shop supplies · Edit opens its editor, Tax · Details explains the rate and what it applies to, job rows carry a › and jump to the job, and the whole On the bill header opens the bill sheet. The job most in need of hands starts open; click any row to open it too, and everything you open stays open until you close it. Opening a job or charge editor near the bottom brings it into view. Already-visible cards stay still; very tall cards align at the top. The open card shows what the customer said, any OBD codes, and the tech's findings (editable in place), then the job's items as one table: every line is a row with its type (Part, Labor, Charge), quantity or hours, cost, price, and total, all editable in place. Charges keep their own taxable choice on the row.
Adding a job starts from one quiet line — + Add a job under the job list (the header's New job button opens the same thing) — and lands in a small window that leads with your canned jobs: one click adds Oil change or Brake pads exactly as you configured them, zero typing. Type instead and the menu filters live, with the typed name one Enter away from being a job. A small type selector — Service, Diagnosis (a symptom a tech looks at before pricing), or Charge (storage, sublet, disposal) — sits under the box with Service preselected, so the common path never asks you anything. Sourcing lives in ONE window and ONE cart. The search field above the jobs takes a part or an operation: Enter opens the window with Parts and Labor times tabs. Parts is live stock and wholesale pricing from your connected suppliers, searched right in the window — filters, store stock, one-click Add. Prefer PartsTech's own catalog? Open PartsTech sits in the footer: it opens PartsTech in its own window on the selected job's cart (it closes itself when you send the quote back) and the parts land on the job automatically. Labor times stays in the window: MOTOR book hours priced at your labor rate, with Add flipping to a green Added so you can stack several. Click the button with nothing typed and the window opens straight onto book times. The Adding to switcher sits right beside the Parts and Labor times tabs, above the results — pick the job there and every Add lands on it, while approved work uses Revise approved work so the original scope stays intact until a replacement is reviewed and applied. Labor times work even before PartsTech is connected. Next to the search sits the Cart — every part on the visit, with a count of what still needs ordering (it goes dark when approved work is waiting on parts). One click opens the review window: PartsTech-linked parts submit to your suppliers as one order, and parts sourced outside PartsTech are listed apart with their own Mark ordered. For a hand-typed line, click + Add line, choose Part or Labor, and type its description and values. Leaving those rows saves them; Enter saves and closes the entry row. Charge opens the preset form described below and saves only when you click Add. Tabbing between fields does not save early. Blank entries create nothing. Use × to discard an unsaved entry. If saving fails, the entry stays with a retry option. Sending or reviewing a quote waits for pending entries to save, so a new line is not left out. Part rows carry their part number and condition (new, used, rebuilt, reconditioned) right on the row. On an approved job, use Revise approved work to add, remove, or correct lines. The separate draft shows the price and balance change before applying it. Raising the approved price requires recorded authorization; the original quote and paid receipts are never overwritten. When a newly created job is still empty the top MOTOR match sits in the table as a suggested row (adding any line dismisses it) — click it and it becomes real labor at book hours times your rate. A canned job's part placeholders are unmistakable to-dos, not line items: the row says no part picked yet in orange with a Find part button that opens PartsTech pre-searched for it; once your pick lands on the job, remove the placeholder line. While any placeholder remains, the job's row says Pick the missing part and counts it ("1 to pick") in orange, open or collapsed, and that job is first in line to start open — an unpicked part can't hide behind "Ready for approval". Anything you can edit sits in a visible input box (locked lines have no boxes), the table lists parts first, then labor, then charges (rows never shuffle while you type), and every price edit updates the job total, the estimate, and any draft still open for review as you type.
The card footer is a quiet delete for the whole job (always behind a confirm — and when the job anchors a booked appointment, the confirm names the date and time, cancels the appointment with the delete, and offers to text the customer the cancellation, on by default), Order parts when there's something to buy, and the job total. The audit trail hides behind the card's time stamp — click "3h ago" and who-did-what unfolds right there. Profit lives in the money rail only. Approved jobs show their existing lines read-only; new lines go through the confirm described above. Full page still opens the classic issue workspace for media, AI diagnosis, and the deeper tools.
The full issue timeline remains the audit trail: each step — parts marked ordered, repair started, job completed, check-in, tech assignment, quote and invoice sends, payment — records who did it, shown right on the entry.
Editing names and charges on web
Click a job's name or pencil to rename it before approval. While typing, the header hides its status and timing so the title stays easy to read. Enter or Save keeps it; Escape or Cancel leaves the name alone. A failed save keeps your text for retry.
Click Edit on a charge to change its description, notes, fixed price or quantity × rate, cost, and tax setting. Your cost is internal; it never prints on the customer's invoice. Existing discounts stay attached when you edit the charge.
Add line → Charge opens the same Storage, Sublet, Disposal, and Other choices as Add job → Charge, inside the job. Storage accepts days and a daily rate; Sublet separates the customer's price from vendor cost. Click Add to save, or Cancel to leave it out. Finish or cancel the charge before sending or recording approval; leaving the form does not save it.
An approved charge's Revise form opens inside its card with the compact charge fields: description and invoice notes, then pricing, cost, and tax. Existing discounts stay available below; add a short reason for the change, review the updated amounts, then confirm. Cancel leaves the original charge alone. An increase still requires the customer's recorded authorization, and payments remain attached to the bill.
If the customer already has the quote, changing its job names or customer-facing charge details asks you to Void quote & edit first. Cancelling saves nothing. After confirming, edit and send the updated quote when ready; nothing is resent automatically. On a partly approved quote, existing approvals remain on the bill and only the unanswered choices close.
Approved, in-repair, and completed work uses Revise, including title or tax changes. The original approval remains on record, and changing a signed invoice requires a fresh signature. Paid receipts cannot be rewritten. Mobile keeps its existing revision screen and separate void-quote action; these inline controls are for the web workbench.
The money rail
The right column is the visit's bill, being built, and it reads as two zones — there's no overall stage bar, because a visit is often in estimate, invoice, and payment at the same time; each zone heading states its own document's status. Pending approval holds work that isn't on the bill yet — each job with its price, and the asking total with tax and fees included — with the Send for approval button right there. When a quote is already out and you add more work after, the zone says exactly where things stand: the sent jobs read Awaiting customer, the new ones read Not on the sent quote (the customer cannot approve those from the link they have), the total becomes Updated quote total (what the customer will see, not what they saw), and the button becomes Send updated quote — one tap replaces the old link with one quote covering everything, so the customer never juggles two links. Approve in shop stays one click away and applies only to the quote the customer has; View quote opens what they're looking at, and More holds the rare moves (resend the current quote as-is, void it). While the ask is out with nothing added after it, the zone shows the sent quote's own numbers — Quote total is exactly what the customer sees. The Discount and Shop supplies rows stay right there and edit the sent quote in place: a change in the customer's favor lands on their link immediately, and a change that would raise their price never lands silently — instead one confirm voids the current link and sends a fresh quote at the new price, so the customer is always told (line items and rates are always frozen once sent). The ladder always shows a quiet Discount · Add and Shop supplies · Add row even at zero, so the capability is never hidden — click either and it opens instantly on the numbers the ladder shows. Before anything is sent the zone projects the whole out-the-door number (subtotal, shop supplies, environmental fee, tax) using the same math the quote will run. On the bill holds approved work with the tax and fee ladder — including always-present Discount and Shop supplies rows with Add or Edit right on them. Once payments land the ladder finishes the arithmetic in order: everything above sums to Invoice total, Paid to date subtracts from it, and Balance due is what's left. Under Record payment sit the everyday moves: Resend invoice and View invoice. The header carries the invoice status and number, which opens the bill sheet for everything deeper (deposits, payments, refunds, void). Approve something and it moves from the first zone to the second on its own. Click any row to jump to that job's card.
Under the customer's numbers sits Expected profit (visible with money access): the gross total and margin on one line, with every job's profit right beneath it, always visible. Hover the total for the parts/labor/charges split, or a job's row for its billed-minus-costs math — the same numbers as the Financials job report.
New work on a car whose last visit is fully settled — every job done, invoice paid — starts a fresh visit automatically, whether it arrives by online booking or you add the job yourself. The finished jobs and their paid invoice move to the vehicle's history instead of mixing with the new work. If the last invoice isn't fully paid yet, new work keeps joining that same visit and, once approved, that same bill.
The actions
Each zone carries its own action, next to the money it acts on. The pending zone's button is Send for approval (or Approve in shop while an ask is out): it opens a small sheet right on the page — every priced job pre-checked with its total, the send channel attached to the button — and one tap sends the ask. The customer approves or declines each job from their link, and approved work lands on the bill automatically. Both send buttons say how they deliver right underneath: "sends by Email + SMS" with an inline picker when the customer has both, or the plain fact when they only have one. Adding work later is the same loop: price it, it appears in Pending approval, one tap asks. There is no separate quote to build, review, or rebuild. The sheet's quiet links cover the rest: Review before sending opens the full preview in a window right over the page (nothing navigates away), where discounts and the customer-facing copy live, and Approve in shop records a counter yes without sending anything; a sent ask keeps Resend, View current quote, and Void beneath its button. The bill zone's button follows the invoice — Send invoice, then Record payment, then Mark picked up — and stays quiet while an ask needs attention above it. Record payment is also always there on a draft bill: collecting at the counter never requires sending the invoice first. Everything else about the bill — resend, preview, discount, deposits, refunds — lives in one place: the bill sheet, opened from the invoice number in the zone header.
The rail is money only. Inspection lives in the header next to New job — the button carries its state (Start inspection, 4 of 12, sent, viewed) and is never locked behind check-in, so a walkaround before the car officially arrives is one tap. Under the job list, Maintenance opens its due list in place; parts moved up to the Cart beside the search field.
- The bill sheet (tap the Invoice receipt; a red dot means missing invoice info) sends the invoice, adds notes, requests a deposit, and records in-person payment with a method picker. A blocked send says why right under the button and opens the fix.
- On mobile, quiet rows under the jobs show each live quote with its own total and discount, and tap through to it; the bill keeps its own home in the payments section.
Notes
The vehicle carries two kinds of notes on their own row inside the work surface, right under the Add to bar — when notes exist you see them in full on the page, and tapping opens the editor in place. Tech notes are internal — torque specs, reminders, anything for your team — and never appear on anything the customer sees. Customer notes print on the quote and invoice as the note from the shop. Both are editable here and in the mobile app.
On web, suggested jobs from the customer's concerns appear below the job list. Click one to add it or dismiss it. When no suggestions remain, that section disappears.
Repair Buddy
Inside an issue, Repair Buddy is an OEM-grounded AI you can ask repair questions: procedures, specs, known issues for this exact vehicle. It is the research assistant sitting next to the diagnosis.
Deleting a vehicle, voiding quotes, and canceling approved work all confirm first and leave a trail. Nothing disappears silently.
Lines move like paper: drag a part or labor row by its type label to reorder it within the job, or drop it on another job's grid to move it there — both jobs' totals and discounts recompute on the spot. Parts sitting in a PartsTech cart stay on their job (the supplier order is tied to it); remove and re-add those instead.
Approvals and existing payments
Record approval records only the jobs selected in the review, at the displayed document version and total. Jobs still awaiting an answer keep their customer link. A stale review asks you to review again; it never automatically approves a replacement. Shop Brain can take you to this review, but does not record consent from chat alone.
The bill reads payments and invoice amounts together. If that verification fails, it says the balance is unavailable instead of showing zero paid. Existing deposits and refunds stay attached when approved work changes; paid receipts stay fixed. See Invoices for revisions and Getting paid for collection and refunds.
Returning to the web tab briefly keeps the confirmed figures visible while checking for updates. Collection still waits for verification. A slow check or failed connection is shown explicitly; an actual payment or revision is never hidden by this display behavior.
When adding a charge inline on web, use Add charge to save or the outlined Cancel beside it to leave without adding it.