What an instant cash offer actually tells you about a used car's floor price
A flipper opens Algo, Carvana, CarMax, or Peddle, types in a VIN, answers three condition questions, and gets a dollar figure back thirty seconds later. Everyone treats that number as "what the car is worth." That reading is wrong in a specific and expensive way. The instant-offer number is not a value — it is a floor: the number the buy-side is willing to hand you today, assuming everything you told them is true. Reading it as anything else costs money.
The buy-side is not appraising the car
Instant-offer buyers make money on the spread between what they
pay a private seller and what they auction the car for a few weeks
later. Their offer has to bake in three things you will never see:
their expected wholesale exit price, the reconditioning cost they
plan to spend, and their margin. Carvana reportedly nets about
$2,253 gross per acquired car (see
docs/research/competitors.md §4.2, citing
curbsold.com) — that number does not come out of the
seller's pocket at closing; it comes out of the offer at
quote-time.
Practically, that means the instant-offer number is 15–25% below what the same car will retail for after light reconditioning and a two-to-four-week retail-listing window. That gap is where the buy-side's business lives. It is also where a flipper's business lives, on the other side of the trade: buy near the instant-offer floor from a private seller, retail near the ceiling.
Why Algo returns a range, not a single number
Algo (Auto Lenders) — the instant-offer buyer FlipScout is wired
to — returns quotes in the shape "Here's your estimated value*
$L – $H". Per our own research file
docs/research/competitors.md §4.3, one worked
example from their public flow returned "$2,000 – $4,500"
on a mid-condition older sedan. The range is doing real work — it
is the buyer telling you: at the low end of the condition
Q&A you answered, we'll pay $L; at the high end, $H. The
number you'll actually get at the lot is what an Algo human sees
on the inspection, and the ± band is your quantified risk
from the description.
This is why FlipScout's report stores the whole range —
floor.low and floor.high as two
numbers, and the floorSpread field is computed as
floor.high − price − fees. The high-end check tells
you "even in the best case Algo won't cover you"; the low-end
check tells you "even in the worst case Algo will cover you."
Two different questions, two different numbers.
A worked reading against a real Autotrader listing
Here is a real row from FlipScout's shipped
data/db.json after the 2026-09-11 Austin live scan.
No Algo pass has been run on this dataset yet — the paid
flipscout quote flow is opt-in per VIN because every
submission is a real lead — so we use the Algo example range
from competitors.md §4.3 above as a plausible
illustration. Substitute your own quote when you have one.
| Field | Value | Source |
|---|---|---|
| Year / model | 2017 Nissan Sentra SV | Autotrader by-owner, Austin |
| Mileage | 76,000 | Autotrader payload |
| Ask price | $6,500 | Autotrader payload |
| KBB Fair Purchase Price | $10,055 | Autotrader __NEXT_DATA__ pricingDetail |
| Illustrative Algo range | $2,000 – $4,500 | docs/research/competitors.md §4.3 |
TX fees (from estimateFees) | $571 total | src/score.js (6.25% + $40 + $125) |
Now the two floor checks:
- Low-side: $2,000 < $6,500 + $571. Massively negative — Algo's worst-case is $5,071 below what you'd pay to take title. If the car turns out to be at the bottom of the condition band, the flip is underwater.
- High-side: $4,500 < $6,500 + $571. Still negative by $2,571. Even Algo's best-case reading of this Sentra doesn't cover your basis at the seller's ask.
That is a walk. Not because the KBB spread looks bad (−35% vs KBB is a great-looking headline number) but because the floor tells you the exit-of-last-resort is nowhere near your entry. The KBB spread was a ceiling. The Algo spread was the floor. Only the floor answers "what happens if the retail plan falls apart."
What the number does not tell you
An instant-offer number is not a market value, not a KBB equivalent, and not a suggestion. It specifically does not tell you:
- What a retail buyer will pay you three weeks from now. That is the retail ceiling; it lives on KBB Fair Purchase Price and comparable listings, not on the buy-side quote.
- What the car is truly worth. There is no single number here; there is a range whose ends are determined by condition, region, and the buy-side's own inventory pressure that week.
- Whether the car has a title problem. Every instant-offer buyer asks about title status but takes your word for it at quote-time. If the car is salvage and you clicked "clean," the quote will look great and the phone-call inspection will kill it. See our red-flag ladder — the tell is in the seller's language, not the buyer's quote.
- How long the quote is good for. Peddle's public copy pegs offers at 7 days; Algo and Carvana are shorter-window in practice. A quote from Monday can be $300 different Friday.
How to use the number in an offer
Once you have a real floor, your offer to the seller has a real walk-away number. The rule of thumb we ship in the estimator is:
max offer = min(floor.low − fees − target profit, floor.high − fees)
On the Sentra above, with a target profit of $500, that becomes
min($2,000 − $571 − $500, $4,500 − $571) = $929. If
the seller won't take $900, this deal doesn't work at
instant-offer floors. What that doesn't mean is that the
car isn't a good flip — it means it isn't a good instant-offer
flip. Retailing it privately might work if you have four weeks
and space in the driveway. The floor number simply tells you
what happens if that plan falls through.
None of this is about picking a favourite buy-side platform. It is about reading the number they send you for what it actually is: a guaranteed-cash exit, capped by their margin, applied to their read of your description. Pair it with the retail ceiling and you have a real decision. Read it as anything else and you're guessing. See the pricing page for how the paid Algo pass fits into the CLI and the docs for the exact commands.