Case study · Growth

FB Motors. One system, from ad to resale.

FB Motors buys used cars from private sellers in Belgium and resells them to a network of dealers in Europe, Asia and Africa. We built its entire chain: bringing enquiries in, setting the right buy-in price, calling every seller back, and tracing every resale back to the ad that produced it.

fb-motors.be

5.6× realised margin for every euro of advertising.−71% cost of acquisition per vehicle in three months.

May 2025 – July 2026. Realised margin = resale price minus purchase price and vehicle costs (transport, reconditioning, roadworthiness test, paperwork). Advertising and salaries are not deducted.

A margin won or lost on the buy-in price and on speed.

Sellers compare several offers and sell to whoever calls back first with a credible price. The margin per vehicle is tight: an offer a few hundred euros too high, or a call back the next day, and it is gone. So the system had to do three things: attract the right vehicles, value them accurately, and leave no enquiry waiting.

Vehicles bought: mostly diesel, from around 2015, with a median of 160,000 km.

Advertising that speaks to the seller, not the buyer.

The problem

By early 2026, the creatives had worn out: the same ads were bringing in fewer and fewer sellers, and the cost per vehicle bought was soaring.

What we built

All acquisition runs through Meta (Facebook and Instagram). The ads speak to owners of a vehicle that the mainstream market turns down or undervalues. We keep what tests new ideas separate from what runs the proven ones, and every creative is replaced as soon as its results wear off: detection is automatic. The multi-step form collects exactly what is needed to value the vehicle before the first call.

What changed

The ads now attract only sellers FB Motors can actually buy from, and a creative that is wearing out gets caught before it becomes expensive.

Meta learns from margin, not from the number of forms.

The problem

Most ad accounts send Meta a single signal: “a form was filled in”. So Meta looks for people who fill in forms, not sellers you actually do business with.

What we built

At FB Motors, every stage of the journey is sent back to Meta, and the last two carry a value in euros: the estimated margin at purchase, then the actual margin at resale. Every event is sent in real time, server-side, and attributed to the original ad.

Meta
  1. Enquiry received

    Signal
    a lead
    Value
    none
  2. Enquiry accepted

    Signal
    qualified opportunity (the team accepts it)
    Value
    none
  3. Enquiry rejected

    Signal
    unqualified opportunity (rules or refusal)
    Value
    none
  4. Vehicle bought

    Signal
    purchase
    Value
    the estimated margin at the time of purchase
  5. Vehicle resold

    Signal
    sale
    Value
    the actual margin collected

What changed

We know which creative produced which margin, not just which forms. Rejected enquiries also feed an exclusion audience, so we stop paying for the same profiles.

Few businesses send their real margin back to their ad platform: it means connecting advertising, CRM, purchase and resale in a single system. That is what Peregrine builds.

Rule out fast what will never close.

The problem

The vast majority of enquiries will never turn into a deal, and every pointless call eats into the team's time.

What we built

We first built a score out of 100, across five tiers. At FB Motors' real volumes it would not calibrate, so we replaced it with clear-cut elimination rules that automatically rule out off-target vehicles (mileage, engine, segment, asking price). What remains goes to the team, with a price indicator.

What changed

The team now only sees the enquiries that can lead somewhere.

A simpler model that the team understands and applies beats a sophisticated score that nobody uses.

A price calculated from the market, corrected by every resale.

The problem

Offer a few hundred euros too much and the margin is gone. Offer too little and the seller goes elsewhere.

What we built

Each enquiry is compared with listings on the Belgian market, from the most precise to the broadest: model, engine, gearbox, year, then adjusted for mileage. The system applies the depreciation learned from FB Motors' actual resales, and shows whether the seller's asking price is a good deal, fair or too high. When an enquiry is too high, a counter-offer is calculated. On every resale, the gap between the estimate and the price achieved is recorded, and the next estimate takes it into account. The final decision stays human.

How the offer is builtExample

Peugeot 308 · 2015 · 160,000 km · diesel

Belgian market price
Adjusted for mileage
Depreciation learned from resales
Offer

Hatched: what each step takes off.

What changed

Every offer starts from a calculation, and every resale makes the next one more accurate.

No enquiry sits idle.

The problem

Sellers sell to whoever calls back first. Before, too many enquiries went unanswered.

What we built

Every shortlisted enquiry lands on Telegram, with the vehicle, the asking price and the estimate. One click accepts or rejects it. Once accepted, it becomes an opportunity, automatically assigned to the least busy setter.

They call every seller back, check the vehicle's condition, confirm the price and book the inspection. They move every file forward through the pipeline and never let go of a seller who does not answer: call-backs are scheduled at 9 am and 6 pm, and the system follows them up automatically. The final price and the negotiation stay in FB Motors' hands.

New enquiryExample

Peugeot 308 · 2015 · 160,000 km · diesel

Asking price
Estimate

Good deal

What changed

Every file has an owner, a next step and a scheduled call-back. At the Agreed stage, the purchase and the stock entry are created automatically, and the purchase signal goes to Meta.

The fall, then the recovery.

In late 2025, the acquisition system was running well. In early 2026, the cost per vehicle bought shot up: the creatives had worn out and too many enquiries were going unanswered. We paused the campaigns, rebuilt the system, then relaunched. Within three months, the cost per vehicle had fallen by 71%.

Cost of acquisition per vehicle, index: March 2026 = 100. Lower is better.
  1. Worn-out creatives, enquiries left unanswered
  2. Pause and rebuild
  3. Relaunch
  • Oct 2025 24
  • Nov 2025 25
  • Dec 2025 21
  • Jan 2026 43
  • Feb 2026 47
  • Mar 2026 100
  • Apr 2026 Pause and rebuild
  • May 2026 34
  • Jun 2026 29

Index calculated from the month's ad spend divided by the vehicles bought that month. Lower is better. Campaigns suspended since July 2026, stock full.

What we take away

Margin has to flow back to the ads. Without it, you are optimising for forms.

Call-back speed matters as much as price. The system exists so that nobody waits.

Simple and running beats sophisticated and idle. The score gave way to rules the team applies.

Your business has its own margins. Let's redo the maths with your numbers.

Request a one-hour call