# The cheaper quote is cheaper the way a plane ticket is cheap

You can pay for a website and not own it. Like buying a house where the architect keeps the bricks.

*Figure: Two quotes stand as stacks of blocks. Quote B has four blocks: the site, hosting, a year of fixes and the code. Quote A has one block, with three faint red slots above it marked not stated, so it is as tall as B once the gaps are shown. The three missing blocks fall off and land at the feet of the person choosing, labelled lands on you.* The cheaper quote is often a shorter stack, and the missing blocks land on you after you sign.

You've got two quotes for the same website or app. One is more than twice the other. The expensive firm keeps calling - cheerful, patient, relentless - while the cheap one sits quietly in your inbox, radiating affordability.

Here's the uncomfortable part: both quotes might be honest. They're just pricing *different jobs*. One includes hosting, a year of fixes, and the actual code. The other includes none of that, and looks like a bargain because the missing parts are invisible until you've signed - and then they land on you, one at a time, like a series of small invoices shaped like surprises.


Two quotes for the same website or app can sit 2 times apart because they price different jobs. Which one is fair? Five checks put them on the same footing before you pay - and then the real gap shows. Sometimes it's much smaller than the sticker gap. Sometimes it points the other way entirely.

## Why I wrote this

I read 601,111 opening messages that people sent to ChatGPT, from a public research dataset, looking for the moment someone decides to pay for something. 615 of those messages were exactly that. When the person named what would decide it, price came first, in 48% of them. And among the people deciding whether to hire someone, one request kept coming back like a recurring dream: *here are two quotes, which one, and what should I offer?*

Three of those situations, paraphrased with the details changed:

- A shop owner has two quotes to build a business site. One is more than twice the other, and the pricier firm keeps calling for a decision.
- A founder asks what it should cost to have a developer build a website for a small business - a person trying to skip the "which one is lying to me" stage entirely. Respect.
- An operator weighs a vendor's fee against what they can spend, and wants to know what to counter with.

Here's the detail that got me: only 6% of those 615 people said what worried them. Nobody writes "I'm afraid the cheap one is cheap for a reason, and I'll find out which reason in month three." The worry shows up later, after the money is gone.

*Figure: A grey stream labelled 601,111 first messages pours into a gold pan and fills it. The pan rocks, and the grey washes over its rims and away, leaving a heap of 615 small dark nuggets, labelled 615 were a decision to pay. A few dozen of the nuggets turn red, labelled 6% said what worried them.* Out of 601,111 first messages, 615 were someone deciding to pay, and few of them said what worried them.

## The five checks

Think of each check as putting a missing block back on the shorter stack.

**1. Is it the same scope?** Ask each firm for a written list of what you get: pages, features, the systems it connects to, who writes the words, how many rounds of changes. Then ask both to price the same list. Whatever gap is left is the real one. This check does the most work - a 2x gap often collapses to almost nothing here, or flips.

**2. Is it broken into lines?** One number hides how it was built. Ask for line items with hours and a rate, or a price per piece. Also ask which kind of quote it is, because there are two kinds: a fixed price puts the risk of overruns on the builder; time and materials puts it on you, so it needs a ceiling. Time and materials *with no ceiling* isn't a pricing model, it's a subscription to your wallet.

**3. What isn't included?** The usual gaps are hosting, the domain, email, paid plugins or app store fees, content, photos, a support period after launch, and changes after sign-off. Ask each firm to list what it *won't* do - good firms can. A cheaper quote can quietly move these costs back onto you once the work has started and walking away has gotten expensive.

**4. Who will own the code?** In the US, custom software made by a contractor is a "work made for hire" only in narrow cases, and only with a signed written agreement that says so. Otherwise the person who wrote it is its author. You can pay for a website and not own it - like buying a house where the architect keeps the bricks. If you want to own it, the contract has to give it to you in writing.

**5. How do you pay?** Tie payments to things you can see working: a first version you can click through, then the launch, then the end of the support period, so each payment buys something you've checked. Be careful with a quote that wants most of the money before you've seen anything run. That's not a milestone, it's a leap of faith with an invoice attached.

*Figure: A balance scale holds two quotes as stacks of blocks. Quote A starts with one block and quote B with four, so B's side sits low and A looks cheaper. Five red blocks, numbered for the five checks, drop in one at a time: three land on A and two on B. The beam swings, goes level after check 4, and ends tipped slightly toward B, labelled the real gap.* Each check puts back a cost one quote left out. The tilt left after all five is the real gap. Which quote each check lands on is an example.

## A prompt for your AI

People already paste quotes into an AI and ask which is better. That's asking it to judge the sticker. Ask it to run the checks instead:

> Here are two quotes for the same project. For each one, list: the deliverables, the line items with hours and rates, fixed price or time and materials, what is excluded, who owns the code, and the payment schedule. Mark anything a quote doesn't say as "not stated". Then show the costs only for the work both quotes cover, and list the questions I should send each firm before I choose.

"Not stated" is the useful part. The prices were never the interesting bit - the empty rows are. Two quotes that look 2x apart are often the same quote, one of them with half its clothes on.

*Figure: Two quote sheets drop their lines into a sorting rack with one column per quote and a row for each thing to compare: deliverables, line items, fixed or hourly, excluded, who owns the code, payments. Three cubbies stay empty and turn red, labelled not stated. Each empty cubby sends a red card into an envelope: two to ask firm A, one to ask firm B.* Ask the AI to sort both quotes into the same rows. The empty cubbies are the questions to send each firm.

## What I expect, and how I'll check

Will people holding two quotes find this page? I've sealed a prediction: in the 14 days to 2026-10-31, it will get more visits from AI agents and more ChatGPT referrals than the median post on this site, and at least one email will mention it. I count agents and referrals at the edge with my own counter, which keeps totals and no IP addresses. I'll post the result here either way - sealed predictions are the only honest kind, mostly because I can't cheat without everyone seeing the seal.

*Figure: Three empty glass tubes stand in a row, labelled agent visits, ChatGPT referrals and emails. A green line drops onto each: median post on the first two, at least 1 on emails. A card goes into an envelope and a green seal presses it shut, pinning the three lines in place. Under the envelope, 14 empty dots count the days to 2026-10-31. The tubes stay empty, because the results are not in yet.* The lines to beat were drawn and sealed before any visits came in. The tubes fill by 2026-10-31, and I'll post the result either way.

## How I counted (the honesty section)

The dataset is real conversations people chose to share with researchers in return for free access - not a sample of business owners, so take the shape of the findings as the signal, not the exact proportions. A keyword filter picked 10,845 candidates. A model labelled each one, after it found 6 of 7 spend decisions with no false alarms in 70 messages I'd labelled by hand. 615 is a floor: the filter misses phrasings it doesn't know. One person checked the labels: me. I'm reasonably careful, but I'm one person and I wrote this post, so consider me a witness with a stake in the case.

*Figure: On the left, 70 messages pour into a small pan with holes, 7 of them real decisions to pay. When it is shaken, all 63 others wash away and one of the 7 slips through a hole, labelled hand check of 70: 6 of 7 found, none false. On the right, the real run pours into a big pan with the same holes. 615 stay in the pan, labelled 615 is a floor, and some slip through and land in red heaps beneath it, labelled missed, not counted.* The filter loses decisions it doesn't recognise and, in the hand check, added no false ones. A pan that only leaks holds too few, so 615 is a floor.

If you're holding two quotes for a website or app right now, I'd like to see where they differ. Send them along with what you're trying to build. I'll tell you which rows come back "not stated" - and that's usually the whole answer.

## Where the facts come from

- **wildchat**: https://huggingface.co/datasets/allenai/WildChat-4.8M - WildChat-4.8M, Allen Institute for AI. Real conversations with ChatGPT, released for research under ODC-BY. Read 2026-10-17: 952,127 English first messages, 601,111 unique.
- **method**: https://www.nber.org/papers/w34255 - The study design follows OpenAI's own classification of ChatGPT use, which has a "Purchasable Products" category (Chatterji et al., "How People Use ChatGPT", NBER Working Paper 34255, 2025). The filter, labels and hand-checked sets are my own, run 2026-10-17 for about $2.
- **circ30**: https://www.copyright.gov/circs/circ30.pdf - U.S. Copyright Office, Circular 30, "Works Made for Hire": a commissioned work is made for hire only if it falls in one of nine categories and a signed written agreement says so.

---

Published 2026-10-17. Web page: https://www.mackenziebowes.com/posts/the-cheaper-quote-is-cheaper-the-way-a-plane-ticket
