← Back to Help Center

Track multiple jobs for one customer

Some businesses do the same customer's work more than once: a roof this year, storm repair the next, gutters the spring after. Jobs give each piece of work its own home under the customer, so the quotes, invoices, files, and appointments for the storm repair don't get mixed up with the gutter job.

What a job is

A customer is the person you work for. A job is one piece of work you do for them. Most of the time a customer has one job and you never think about it. But if you come back to the same customer for a second or third job, Jobs keep each one separate: its own quotes, its own invoices, its own photos and receipts, its own appointments.

The customer record stays put and holds the whole history. That means you keep the thing that matters most: a full picture of everyone you've worked for and everything you've done for them, without creating three copies of the same person.

Where you'll see it

WhereWhat you seeWhat you can do
A customer's page > Jobs tabEvery job you've done for this customer, newest firstStart a new job, open one to see its details
Jobs in the left menuAll jobs across your whole account, filterable by statusFind any job fast without opening the customer first
A job's own pageThat job's quotes, invoices, files, appointments, Walk & Talks, and a profit and loss stripAttach a quote or receipt, log an expense, set who's on it, record a site visit, move the job along
â„šī¸

Jobs only show up on templates where the workflow needs them, like roofing, HVAC, plumbing, electrical, landscaping, general contracting, painting, solar, real estate, photography, and freelance. On a plain sales pipeline you won't see Jobs at all, because there every customer is a single deal.

How a job moves along

A job walks the same path your work does: Lead (somebody asked), Quoting (you sent a price), Approved (they said yes), Scheduled (it's on the calendar), In progress (you're doing it), Completed (the work is done), Invoiced (you sent the bill), Paid (the money landed). Cancelled is there for the ones that fall through.

You don't have to use all of them. A $200 drain clear goes straight from Lead to In progress and nobody writes a quote. The badge at the top of the job's page is also the control: tap it and you get the moves that make sense from where the job is, worded as things you do ("Start work", "Mark completed") rather than a list of statuses.

💡

Most of it happens without you. Emailing a quote moves the job to Quoting. The customer signing it moves the job to Approved. Sending the invoice moves it to Invoiced, and marking it paid moves it to Paid. You'll mostly only ever touch "Start work" and "Mark completed" by hand.

Once a job is Paid it stays there. If the customer calls you back about the same roof, that's a new job under the same customer, which is exactly what keeps the history of each piece of work honest.

The Jobs list groups these into the questions you actually ask: Active (anything still live), Needs billing (finished but not invoiced), Awaiting payment (invoiced but not paid), and Paid. The customer's pipeline step still works the way it always has, independently.

Filing quotes, invoices, and receipts under a job

When you create a quote or invoice, pick the job on the form: there is a Job dropdown under the details, next to the address. Then the job's page shows only that job's paperwork, and the money shows up on that job's profit line. The storm-repair receipts stay with the storm-repair job.

Converting an accepted quote into an invoice keeps the job, so you only pick it once, at the quote.

âš ī¸

If a job's Billed total reads $0 when you know you have invoiced it, the invoice is not filed under the job. Open it and check the Job field. Anything raised before the picker existed stays on the customer rather than the job until you refile it.

Uploading a file like a signed estimate or a materials receipt works the same way. Nothing you filed before Jobs existed moves or breaks: older quotes and files simply stay on the customer, not under a job, until you choose to file them.

💡

Uploading receipts and photos to a job needs file attachments, which is on Business and Team. On Pro you can still create jobs and group quotes, invoices, and appointments under them.

See if a job actually made money

Every job's page has a profit and loss strip at the top. It's the number most tools make you export to a spreadsheet to find. RadiusOS does the math for you: what you billed, minus your cost of work, minus your expenses, equals your profit, with the margin percentage right next to it.

LineWhere it comes from
BilledThe total of every invoice filed under the job
Cost of workThe cost you set on your quote line items (what the materials and labor cost you, never shown to the customer)
ExpensesMoney out you log on the job: materials bought, a sub's bill, a permit, equipment rental
ProfitBilled minus cost of work minus expenses, with margin percentage

To log an expense, open the job and use the Expenses section: type what you paid for, the amount, and a category (materials, labor, subcontractor, permit, equipment, or other). The profit strip updates the moment you save. This is yours alone; customers never see your costs, expenses, or margin on a quote, invoice, or anywhere else.

When a customer approves a quote, RadiusOS makes the job for you if there isn't one yet, files the quote under it, and marks it Approved. The job's page then says the calendar is empty so the first visit gets booked. If the quote was already filed under a job, that job just moves to Approved; nothing is duplicated. Setups without Jobs (a plain sales pipeline) never get one.

When you mark a job completed, RadiusOS prepares the invoice for you from the quote your customer already approved, and puts it at the top of the job with a Send invoice button. It is a draft. Nothing goes out until you press the button, and "Check it first" opens it if you want to change anything. If the job has no approved quote, or two of them (a change order), nothing is drafted: better to leave it to you than to guess an amount.

The Jobs page also totals profit across every job, so you can see at a glance which work is paying and which is running thin. Move a job along right from its page as the work happens, set who's on it (a crew, lead, or sub), and every job keeps its own activity log: creation, status changes, and any notes you jot ('crew ran late', 'waiting on the part', 'customer approved the change order') stay with that job. You can also record a Walk & Talk right from the job to capture a site visit.

â„šī¸

Sample data comes pre-loaded with a few real-looking jobs for your trade, expenses and all, so you can see the profit and loss strip working before you log anything of your own.

💡

You can run all of this from Claude, ChatGPT, or Cursor. The MCP server ships list-jobs, get-job, create-job, update-job, add-job-expense, add-job-note, and link-to-job, so "what's the profit on my roof replacement job?" or "file that invoice under the storm-repair job" just works. See the AI assistant connection article.

Plans

PlanJobs
Free5 jobs open at a time, 5 expenses a month, full profit and loss on each
Pro ($19/mo)As many jobs and expenses as you like
Business ($39/mo)Everything in Pro, plus attach files and receipts to a job
Team ($69/mo)Same as Business

A note for therapists and other regulated work

âš ī¸

RadiusOS is not a HIPAA-compliant system and is not a place for clinical records. If you use Jobs to track a client's sessions for scheduling and billing, keep it to that: appointment times, superbills, invoices, and receipts. Anything clinical belongs in your EHR or another compliance-cleared system, not here.