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.
Enquiry received
- Signal
- a lead
- Value
- none
Enquiry accepted
- Signal
- qualified opportunity (the team accepts it)
- Value
- none
Enquiry rejected
- Signal
- unqualified opportunity (rules or refusal)
- Value
- none
Vehicle bought
- Signal
- purchase
- Value
- the estimated margin at the time of purchase
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.
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.
Peugeot 308 · 2015 · 160,000 km · diesel
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%.
- Worn-out creatives, enquiries left unanswered
- Pause and rebuild
- 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.