0saas

Job ticket 921069 · smb · quote desk · no subscription

Jobber's quotes live behind US$49 a month. The estimate was never the expensive part.

No free plan — a trial, then Core at US$49 a month with no commitment (the title sells the annual ladder from US$29). But turning job-site scribbles into an itemized quote a homeowner signs is note-reading and arithmetic a free-tier model does per job. Paste the notes; keep the quote as a file.

Jobber is a trademark of Jobber (Homedad Inc.). This is an independent, unaffiliated comparison built on Jobber's own published pricing page, linked below and re-read every thirty days.

The quote desk — rendered in this browser

Source: noneRendered: 0Uploaded to 0saas: nothing

Sample data is illustrative, not a claim about Jobber. Every Jobber figure on this page comes from the linked pricing page, read 2026-09-28.

The prompt pack

Two prompts, each mapped one-to-one onto a Jobber feature you are currently rationed on. Run them from this page with a free key, or copy them into any free chat model — the text is identical either way, and it is printed in full at the bottom of this section so it survives this site.

Loading the pack from tools.json… If this fails, the full prompt text is still readable below.

One-time unlocks only, never a subscription. If a price ever appears here it was read from Stripe in that request, not typed by hand. An unlock is client-side gating, not secure payment verification: it is stored in this browser and cannot prove payment to anyone else.

What Jobber's own pricing page says

Read from getjobber.com — pricing on 2026-09-28. Fields we could not read are marked unconfirmed rather than filled in with a plausible number.

What the plans gate, and what this desk hands over — verified 2026-09-28
The jobJobber's page (read 2026-09-28)What it costsThis page + a free-tier model
A standing free tierNot printed — trial, then paidUS$49/mo floor (Core, monthly)US$0 — write quotes without an account
Itemized quotesCore and upUS$49/mo (promo US$35 ×3)Line items from your pasted price list
Optional-line-item upsellsConnect's quote visualsUS$139/moGood-better-best tiers per run
Scheduling, payments, CRMThe platform itselfUS$49–599/moOut of scope — quotes, not operations

What this replaces, and what it does not

A displacement claim you cannot substantiate is a lie with good typography. This is the whole scope, including the parts where Jobber wins.

Quotes as files

An itemized sheet per job, exported as CSV or Markdown — send it however you already send quotes.

Your prices rule

Every line prices from the list you paste; the desk invents nothing and flags what your list doesn't cover.

Tiers that differ

Good-better-best vary in scope, and the footnote says when GOOD is honestly enough.

Not a field-service platform

No scheduling, no crew tracking, no client hub, no two-way SMS. Jobber still runs the operation.

Not payments

No deposits, no card capture, no invoice tracking. Get paid however you get paid.

No customer database

The desk reads the notes you paste for one job and forgets them; it is not a CRM.

The prompts, in full, as text

Copy these into any model. They are the product; the page around them is convenience. Each block is the exact system prompt the interactive runner sends, plus the user-message template.

Prompt 01 — 1. Estimate builder · jobber-estimate-builder v1.0.0 · best ally: Google Gemini API — Free usage tier · gemini-2.5-flash-lite

Replaces: The itemized quote Core gates at US$49/mo: pasted job notes and your price list become a line-item quote sheet with a re-added total and a submission note.

Why this model: Notes-to-line-items is precise extraction with exact arithmetic; a free Flash-lite at low temperature keeps quantities and prices intact and re-adds the total before stamping it. Fallback ally: Groq Cloud — free tier.

System prompt (1519 chars):

You sit at the quote desk: the reader pastes job-site notes and their price list, and you return an itemized quote sheet a homeowner can say yes to — labor and materials separated, quantities and unit prices explicit, the total re-added, and a two-sentence submission note. You never invent a price that is not in the pasted list, and a note you cannot price becomes a [NEEDS PRICING] line instead of a guess.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "headline": string (max 8 words),
  "subhead": string (max 20 words),
  "rows": [ { "label": string (the line item), "value": string (the finding, quote or number) } ],
  "stat": { "value": string (one count or price, digits), "label": string (max 12 words, what the number is) },
  "footnotes": [ string (one short footnote per assumption made) ]
}

Hard rules:
1. Return one row per line item: label is the item with quantity ('Demolition — 6 hrs'), value is the line total priced from the pasted list ('US$X · 6 × US$45/hr').
2. Group rows in this order: Labor, Materials, Disposal/Fees.
3. The stat is the quote total, re-added exactly from your rows — count twice before you finalize.
4. The subhead states the job in at most 12 words and the line count.
5. Footnotes carry every assumption: note ambiguity, [NEEDS PRICING] lines, validity window (default 30 days).
6. Use only the pasted price list; if notes mention work with no price, add a [NEEDS PRICING] row and say what's missing.

User message template:

Build the quote sheet from these notes. Job notes: {{notes}} Price list (labor, materials, fees): {{prices}}

Variables:

  • {{notes}} — Job-site notes, as scribbled (max 2000 chars) sample data shipped with the tool
  • {{prices}} — Your price list (max 800 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "rows" ], "properties": { "kicker": { "type": "string" }, "headline": { "type": "string" }, "subhead": { "type": "string" }, "rows": { "type": "array", "minItems": 1, "maxItems": 40 }, "stat": { "type": "object" }, "footnotes": { "type": "array" } } }

Decoding: temperature 0.2 · max 1800 output tokens · responseMimeType application/json · budget ~450 in / ~800 out per job · cost per run: 1 request against Gemini's free daily messages; the relay floor needs no key at all.

Prompt 02 — 2. Good-better-best pass · jobber-options-pass v1.0.0 · best ally: Google Gemini API — Free usage tier · openai/gpt-oss-20b

Replaces: The 'optional line items' upsell layer Connect gates at US$139/mo: one job folded into three tiers, each priced from your list with an honest rationale.

Why this model: Folding one job into three coherent tiers is constrained composition over a fixed price list; a mid-size free instruct model keeps the tiers genuinely different instead of reselling the same scope three times. Fallback ally: Google Gemini API — Free usage tier.

System prompt (1510 chars):

You cut one job into good-better-best: the reader pastes the estimate sheet's scope and the price list, and you return three tiers a customer actually chooses between. GOOD fixes the problem, BETTER fixes the cause, BEST is what you would do on your own house. Every tier prices only from the pasted list, and each carries one honest line on who should buy it.

Return ONLY one JSON object. No markdown fences, no commentary, no preamble.

{
  "kicker": string (max 8 words),
  "headline": string (max 8 words),
  "subhead": string (max 20 words),
  "rows": [ { "label": string (the line item), "value": string (the finding, quote or number) } ],
  "stat": { "value": string (one count or price, digits), "label": string (max 12 words, what the number is) },
  "footnotes": [ string (one short footnote per assumption made) ]
}

Hard rules:
1. Return exactly three rows, in order: 'GOOD —', 'BETTER —', 'BEST —'.
2. Each row's value is the tier's scope in one sentence plus its re-added price in US dollars.
3. GOOD omits anything the customer can defer without risk; name what it defers.
4. BETTER and BEST must differ in scope, not in warranty language or adjectives.
5. The stat is the spread: BEST price minus GOOD price, labeled 'what the upgrade decision is worth'.
6. The footnote names the one tier most customers should buy, and why, in one clause — if GOOD is honestly enough, say so.
7. Price only from the pasted list; a tier that needs an unpriced item carries [NEEDS PRICING] instead of a number.

User message template:

Fold this job into good-better-best. Scope (from the estimate): {{scope}} Price list: {{prices}}

Variables:

  • {{scope}} — The job scope from your estimate (max 1500 chars) sample data shipped with the tool
  • {{prices}} — Your price list (max 800 chars) sample data shipped with the tool

Output schema (the answer must match this exactly):

{ "type": "object", "required": [ "rows" ], "properties": { "kicker": { "type": "string" }, "headline": { "type": "string" }, "subhead": { "type": "string" }, "rows": { "type": "array", "minItems": 1, "maxItems": 40 }, "stat": { "type": "object" }, "footnotes": { "type": "array" } } }

Decoding: temperature 0.3 · max 1400 output tokens · responseMimeType application/json · budget ~350 in / ~600 out per job · cost per run: 1 request against a free OpenRouter daily pool; the relay floor needs no key at all.

Questions worth asking before you cancel

Is the $29 figure real?

It is the page title's own headline — 'Plans Starting at $29/Month' — which is the annual-billing ladder. The per-tier annual cards did not print in our capture, so we quote the verified no-commitment figure (Core, US$49/mo) and mark the ladder unconfirmed. Read 2026-09-28.

Will the quote match how I price?

Only if your price list is complete: the desk refuses to invent a rate, so anything missing comes back as a [NEEDS PRICING] row for you to fill.

Can it handle change orders?

Paste the change as new notes and re-run; a second sheet with the same discipline is the change order. There is no versioning — the files are yours.

Where do my job notes go?

Nowhere. No account, no storage, no analytics beyond the site beacon. Paste, render, download, clear the tab.

Does it work without an API key?

Yes. Copy the printed prompt into any free chat model, paste the JSON answer into the relay box, and the desk renders it exactly the same way.

Nothing is loaded from X or LinkedIn until you click, and no share is counted, logged or reported back to us — the buttons are plain links to each network's own share page.

Next on the ledger