Skip to content

Job lifecycle

flowchart TD
LEAD[Lead arrives<br/>web form / WhatsApp / SMS] --> INTAKE[Intake: create job<br/>quote, vehicle, insurance flag]
INTAKE --> SCHED["Schedule + assign tech<br/>(a tech MUST be assigned first)"]
SCHED --> REM[Automated reminder texts]
REM --> WC{Mark work complete}
WC -->|Unpaid job| GATE[Payment preference gate<br/>required choice]
GATE -->|Zelle / Venmo| TXT1[Text with payment details<br/>from the entity settings]
GATE -->|Credit card| TXT2[Stripe payment link texted]
GATE -->|Cash| CASH[No text — tech collects]
TXT1 --> PAY[Record payment]
TXT2 --> PAY
CASH --> PAY
PAY --> WELL{"How did the job go?<br/>(required on record payment)"}
WELL -->|Thumbs up| DRIP[Review drip starts]
WELL -->|Thumbs down| SKIP[No review texts]
PAY --> DONE[Job completed]
DONE -.->|Customer reports an issue| WARR[Warranty claim]
WARR --> WVISIT[Schedule return visit<br/>unpaid, defaults to original tech]
WVISIT --> WRES[Mark resolved]
  • A technician must be assigned before a job can be scheduled, completed, or have a payment recorded.
  • Marking work complete on an unpaid job forces a payment-preference choice — Zelle, Venmo, credit card, or cash. The matching text fires automatically (Zelle/Venmo texts pull the entity’s payment details; credit card creates/re-sends a Stripe link; cash sends nothing). Completion itself is never blocked by a text failing.
  • Recording a cash payment immediately adds that cash to the tech’s balance (they’re holding our money). See tech pay.
  • “How did the job go?” on the record-payment dialog is required: 👍 starts the review drip; 👎 skips it quietly.
  • Receipts are on-request only — a paid job’s actions menu has Send receipt; nothing goes out automatically.
  • Customer names auto-normalize (“JOHN SMITH” → “John Smith”) everywhere, including texts — no need to fix capitalization by hand.

The Operations → Jobs board organizes every job into tabs: Needs scheduling, On hold, Scheduled, Work done, Paid, All jobs, plus an Insurance tab (see Insurance jobs below). A new lead lands in Needs scheduling with status pending schedule and sits there until booked. A job whose requested day is today or already past is flagged urgent on that tab, and also posts in the 7am Telegram digest.

  1. Open the job from Needs scheduling and click Schedule (from the actions menu, or as a row action on the board).
  2. Set the date, time window, and technician — a technician must be picked before the job can be scheduled at all. Their base pay is applied automatically once picked, fixed to their rate on file — it’s never typed in by hand.
  3. Pick the warehouse — required unless the job is Labor only (the customer already owns the glass). Choose one of the shop’s own warehouses, or “Other” and type the supplier’s name.
  4. Resolve any warning the form shows — see Checks at the schedule step.
  5. Submit. The job moves to Scheduled, the customer gets a time-confirmation text, and the technician gets one text with every job detail — address, time, vehicle, part number, and warehouse.

For jobs where the technician still needs to agree on a time, use Schedule w/ AI instead of the manual form — it texts your ranked list of techs in order and books the first accepted slot, following the same warehouse, deadline, and part checks as manual scheduling.

The schedule form can stop you, or ask you to confirm past a warning, in four cases — none appear unless the job actually triggers them:

  • Before-a-time deadline — the customer asked for the job done by a named hour. Booking a slot that finishes too late shows a warning with the latest safe arrival time. You can still book it, but must tick an override box and give a reason — that override is logged.
  • Part number vs. glass position mismatch — the part number on file names a different piece of glass than the “Glass position” field says (e.g. a windshield part on a job marked “door”). This blocks scheduling until you fix one of the two fields, or tick an override box with a required reason. Either way it’s logged.
  • OEM parts deposit — triggers only when the chosen warehouse is a dealer or an unlisted “Other” supplier, since OEM parts are non-refundable once ordered (see Deposits below for the amounts). Short on deposit needs an override checkbox and a reason.
  • Distance pay — this is the only place distance pay can be granted. A toggle asks whether this is expected to be a distance-pay job, and takes an amount capped at $50. If the technician already has another job that same day, the form challenges you to confirm it’s really needed before you can grant it.
  • Order the part — go to Operations → Parts to Order, or use Order part on the job. Enter the part’s real cost — optional at intake, but required here. If the warehouse is “Other,” also mark it prepaid once you’ve paid the supplier; an unpaid “Other” part sits on hold.
  • Reschedule or cancel, if plans changeReschedule keeps the job booked and re-checks every warning above against the new date/time. Cancel appointment returns the job to Needs scheduling, texts the customer, and asks whether a part needs to be returned.
  • Mark work complete — see Key rules above for the payment-preference gate. Payment options are Zelle, Credit card, Venmo, Cash, or Check; an already-paid job just sends a plain wrap-up text instead.
  • Record the payment — each payment recorded adds its own line, so a deposit plus a later balance both show (see Deposits). Cash goes onto the technician’s running balance right away.
  • The review request opens on its own the moment work is marked complete — see the review drip.

Use a hold when a lead can’t be booked today because you’re waiting on the customer — they need to check a schedule, approve a quote, or hear back from their insurer. A held job leaves the Needs scheduling tab but stays in the pipeline; nothing about the job is canceled by a hold alone.

Put a job on hold (works whether it’s unbooked or already Scheduled):

  1. Open the job’s actions menu → Put on scheduling hold. If the job was already Scheduled, this cancels that appointment first — same as a manual cancel, including the customer text and the parts-pickup question — then places the hold.
  2. Type a reason — required. The form suggests common ones, but free text works too. A hold with no reason isn’t allowed.

Take a job off hold:

  1. Open the job on the On hold tab, or from the job’s own page — it shows an “On hold” badge with the reason and how many days it’s been sitting.
  2. Take off hold — optionally note what the customer said (not required).
  3. Schedule the job — it returns to Needs scheduling right away. Booking it directly also clears the hold on its own.

A held job posts in every daily Telegram digest under “On hold” until it’s released, booked, or marked lost — so it’s never silently forgotten. Re-holding an already-held job just updates the reason and restarts the day count.

  • Flag is_insurance at intake (or later in the job’s Money section). On an insurance job the quote = the customer’s deductible — recorded through the normal payment flow.
  • The insurer’s payment is a separate fact, recorded via Record insurance payment in the job’s actions menu. It does not gate job completion.
  • The jobs board has an Insurance tab; its badge counts jobs still awaiting the carrier.
  • Note: ROAS revenue counts only the deductible on insurance jobs (by design, for now).
  • Carrier: Mercury Insurance — no recalibration by default. Mercury Insurance does not require recalibration. Unless the customer or the carrier explicitly tells us otherwise for that specific job, do not add recalibration to a Mercury Insurance job at intake, quoting, or scheduling. See ADAS calibration jobs below.

Collect a deposit before the job is worked (before ordering/paying for a part, or before dispatching for labor/inspection-only work) in these cases:

CaseDeposit
OEM glass job — always, no exceptions. These parts are non-refundable once ordered, so we can’t absorb a cancellation.Non-insurance: 50% of job total. Insurance: 100% of the deductible.
Labor-only job — see Job acceptance below.$150 flat.
Inspection-only job, or any job that’s still unclear/exploratory$150 flat.
Client feels “fishy” — gut call, e.g. hesitant to commit, inconsistent story, pressure to skip normal stepsSame as an OEM glass job: 50% of job total (non-insurance) or 100% of the deductible (insurance).

Tracking deposits in the dashboard: mark each deposit as its own payment on the job’s Money section — a job that collects a deposit and then a final payment will show two payments on the job page. Record each one at the time it’s actually collected; don’t wait and log them together after the fact.

Stripe payments no longer need to be marked paid by hand. The dashboard auto-records a Stripe payment as soon as Stripe receives it. This automatic tracking only applies to Stripe — Zelle, Venmo, and cash payments (deposits included) still need to be recorded manually, the same as before.

Tech payments and part payments are usually entered as an estimate first (a quoted part price, a planned labor amount). Once the real number is confirmed — the part’s actual price at the moment we pay for it, or the actual amount paid to a tech — always go back and adjust the recorded amount on the job to match. Profit, ROAS, and tech payouts are all calculated from these numbers, so a stale estimate throws all of it off.

Always verify the part’s real price at the moment we pay for it, not before:

  1. If the confirmed price is more than $20 higher than the quoted part cost, check an alternative provider before paying.
  2. If every provider is running higher, calculate the job’s profit: total quote − labor cost − part cost.
  3. If that profit comes out to roughly $150–$200 or lower, flag the job to David’s team and consider requoting the client.

For LA Auto Glass specifically, see the fuller supplier/warehouse-selection process in the BCB scheduling SOP.

Post-completion “customer reports an issue” flow, under Operations → Warranty. Use this when a customer reports a problem after the work is done — the glass leaks, whistles, or something feels wrong. The return visit is unpaid to the customer, and unless extra pay is added, unpaid to the tech too — it never touches the original job’s money.

  • The job must already be work-completed or completed. As soon as a claim is reported, open the job’s actions menu → Warranty / fix needed, and write down what the customer reported — before any further investigation. This is what flags the claim in the dashboard and lets the team track and follow up on it correctly; do not wait until the issue is diagnosed to log it.
  • The new claim then appears on Operations → Warranty as open, waiting to be booked.
  • Schedule visit — same date/time/window/technician fields as a normal job; it defaults to the original tech. One automatic, deliberately generic text goes to the customer once it’s booked — the word “warranty” never reaches the customer. If the tech needs extra pay for the visit, toggle it on and set an amount here.
  • Mark complete requires a 👍/👎 on how the visit went — this is informational only, it does not start a new review request.
  • Notes and Cancel are also available on the Warranty page, for editing the issue or dropping a claim entirely.
  • Warranty visits show on the Operations calendar in purple.
  • Warranty claims should be evaluated based on whether the reported issue is related to the installation or represents new damage occurring after the job. If the customer reports surface damage such as scratches after installation, document the customer’s photos and the original post-installation photos before determining whether a warranty visit is appropriate.
  • Do not automatically assume the glass or installation is defective based only on a customer’s description or photo. If the reported issue is unclear, have a technician inspect it when appropriate.
  • If a warranty cannot be extended because the new damage is outside the original warranty coverage, the limitation should be explained to the customer before scheduling any warranty work.

Once a claim is logged, the goal is to resolve it at the ops level whenever possible, without looping in leadership:

  1. Photos are the default evidence for every job. Techs send photos of the completed work, and customers are asked to send photos when they report an issue.
  2. Compare the two sets of photos with the assigned tech to determine whether the issue originated with the installation or occurred afterward.
  3. If the issue is on our end, the tech returns to resolve it under warranty, at the tech’s own cost — this is the standing agreement with our technicians and does not require sign-off from David’s team.
  4. Nico and Laura are empowered to make this call themselves — open the claim, review the photos with the tech, and dispatch the return visit without waiting for approval.

When to escalate: loop in the team only when a claim involves an added cost (materials, parts, a discount, or anything beyond the tech’s standard warranty coverage) or looks like more than a simple send-the-technician-back-to-fix-it visit. Route those to Celia rather than defaulting to David’s team.

Chip repairs should have the same $150+ profit goal with clear warranty information.

If the job does not meet that goal, aim to upsell a full windshield replacement, or choose not to take the job if it creates too much operational headache for the margin.

Do NOT book unclear or exploratory jobs.

If the customer cannot clearly explain what needs to be repaired, replaced, installed, or performed, CANCEL / DECLINE.

Examples of exploratory requests:

  • “Come take a look and see what you can do.”
  • “I’m not sure what’s wrong.”
  • “Maybe you can fix it.”
  • “I just want someone to look at it.”

Defined labor-only jobs ARE accepted.

Examples:

  • Customer already has the window regulator and needs installation.
  • Customer already has the windshield and needs installation.
  • Customer has the part and clearly knows what needs to be installed.

All labor-only jobs require a $150 deposit, regardless of:

  • vehicle age
  • job size
  • part cost
  • how simple the job appears

Key rule:

  • Defined labor-only job → BOOK + $150 deposit
  • Undefined / exploratory job → CANCEL / DECLINE

Recalibration requests after glass replacement

Section titled “Recalibration requests after glass replacement”

This applies when a customer requests recalibration after the glass has already been replaced and recalibration was not included in the original quote.

If the customer asks via text:

  • Always connect them with David’s team for review.
  • Do not automatically promise or approve recalibration.

If the customer asks during a phone call:

Ask whether any sensors or warning lights are currently showing.

If NO:

  • Explain that installations are calibration guaranteed.
  • Technicians verify cameras/sensors are working correctly after installation.
  • If a sensor turns on in the following weeks/months, recalibration is provided free of charge.
  • Sensors remain covered by the lifetime warranty.

If YES:

  • Request a photo of the warning/sensor message.
  • Contact the installation technician and ask whether it could be related to the installation.

If recalibration appears necessary:

  • Consult David’s team BEFORE agreeing to or scheduling recalibration.
  • Confirm whether the customer had a discounted / No-Calibration quote.
  • No-Calibration quotes are only used when explicitly communicated upfront as a lower-price option.
  • These quotes include no calibration and no sensor warranty.

If recalibration is approved:

  • Step 1: Glass installation by the installation technician.
  • Step 2: Calibration, if needed, scheduled 24–48 hours after installation and handled by a software engineer specializing in camera alignment.

ADAS calibration is handled separately from glass replacement.

Carrier-specific rules:

  • Mercury Insurance does not require recalibration. Do not include recalibration on a Mercury Insurance job by default — at intake, quoting, or scheduling. Only add it if the customer or the carrier explicitly says the job needs it.

Insurance jobs requiring calibration:

  • First appointment: glass replacement only.
  • Second appointment: ADAS calibration.

Customers should be informed that the job happens in two phases.

Jobs requiring both recalibration and glass replacement:

  • Coordinate the glass replacement first.
  • After the glass replacement is completed, coordinate the calibration appointment.

The ADAS calibration reference spreadsheet is the source of truth for calibration details.

BadgeMeaningWhere to act
Needs schedulingNo appointment booked yet.Jobs board → Needs scheduling
On holdWaiting on the customer — not being chased today.Jobs board → On hold
ScheduledAppointment booked, work not yet done.Jobs board → Scheduled
Work done — awaiting paymentJob finished, money still owed.Jobs board → that tab
Awaiting callWork just finished — first review call not logged yet.Reviews page
Open (warranty)Claim filed, visit not yet booked.Warranty page
Part vs. glass mismatchPart number and glass position disagree.Job’s Money section, or the schedule form
OEM depositNon-aftermarket part, deposit short.Job’s Money section