Skip to content

Matching by who covers the address, not by who is nearest to it

A two-sided marketplace for lawn care where providers draw the area they actually serve, so a job is offered to the people who'll genuinely travel to it.

Tendfield 14 Wolstan RoadIC
Hedge trimming14 Wolstan Road, Abbots Rise

Showing firms whose drawn area contains this address, not firms within a distance of it.

4 of 11 nearby firms cover this address

Best match
HG

Halloway Grounds Care

4.9(86)Next free Thu 24 Sep

Area contains 14 Wolstan Road

Hedge trim

£140 – £220

Call-out £20.00

FL

Fenwick Lawns

4.7(41)Next free Mon 21 Sep

Area contains 14 Wolstan Road

Hedge trim

£150 – £200

Call-out £15.00

MA

M. Adeyemi Hedges & Lawns

4.8(23)Next free Sat 19 Sep

Area contains 14 Wolstan Road

Hedge trim

£130 – £190

Call-out £0.00

TP

Tidy Plot Co.

4.5(58)Next free Wed 23 Sep

Area contains 14 Wolstan Road

Hedge trim

£140 – £210

Call-out £25.00

7 nearby firms don’t cover 14 Wolstan Road

Kestrel Turf CareOakhurst Garden ServicesBrindle & Sons GardeningRuddock GardensParkgate GroundsLinnet MowingTwo Rivers Landscapes
TANYARDMILL QUARTERABBOTS RISECRESSWELLOLD TOWNWHARF ENDNORTH FENLONGMEADRiver SallowToll bridgeFerry RoadWolstan Rd

Drawn coverage

Contains the address · 4Doesn’t cover it · 7No-go pocket
14 Wolstan Road, Abbots Rise, SallowmereNorth of the River Sallow · 11 firms have a yard nearby

How the work was scoped

Industry

Landscaping & Lawn Care

Duration

18 weeks

Cooperation model

Fixed price, phased

Services
Marketplace engineeringGeospatial matchingMessaging
Integrations
Google Maps PlatformFirebase AuthPush notificationsPayment gateway
Technologies
Next.jsTypeScriptGoogle Maps APIFirebaseTailwind CSS
Team
1 Project lead2 Full-stack engineers1 Product designer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

Introduction

What we were brought in to do

The platform connects householders with local mowers. We built the marketplace, the provider profiles, and the service-area model that decides who sees a job at all.

A marketplace connecting householders with local grounds-maintenance providers, where the previous matching had been a radius around each provider's home postcode. Providers ignored most of what they were offered and complained about the jobs they weren't. The engagement was scoped around fixing the matching model, with the interface to follow.

Full-Stack Engineering

Where the old way broke

Radius matching is the obvious answer and the wrong one. A provider will cross town along a main road and refuse a street two miles away over a river, so a circle drawn around a postcode offers jobs nobody takes and hides jobs people want.

A circle is a poor model of where a trade will work. Providers cross town along a main road and refuse a street two miles away over a river, or won't take work in a particular area for reasons they don't have to justify. The radius offered them jobs nobody took and hid jobs they wanted, and both failures showed up only as low engagement.

Providers define the area they actually serve, in place of a distance they'll travel. Matching asks whether a job's address falls inside a declared area, which is a question with a real answer.

01

Coverage, not radius

Providers declare where they work, and matching asks whether the address falls inside it.

Providers draw or select the areas they actually work in, because a radius says nothing about the river, the toll bridge or the neighborhood a trade won't take jobs in. Matching then asks a question with a real answer (does this address fall inside a declared area?) using a point-in-polygon test in place of a distance comparison.

What shipped
  • Providers declare real coverage areas
  • Point-in-polygon matching, no distance arithmetic
  • Rivers, bridges and no-go areas modeled honestly
Where we work

Halloway Grounds Care · the area you actually cover, drawn · jobs are offered only inside it

Unsaved · 1 vertex movedUndoSave area
Draw Move vertex Cut no-go Pan7 vertices · 1 no-go
TANYARDMILL QUARTERABBOTS RISECRESSWELLOLD TOWNWHARF ENDNORTH FENLONGMEADRiver SallowToll bridgeFerry RoadWolstan RdNorth Fen +189 homes
Area stops at the River Sallow. South bank not covered.

Drawn from where you go, not a distance from your yard: along Ferry Road, round the Hartside estate, up to the river.

Households inside your area

recounting as you drag
Abbots Rise1,412
Cresswell1,186
Old Town874
North Fen126315+189
In your area3,598 →3,787

Counted from the shape itself. No radius, no postcode list.

No-go pockets

1 cut out
Hartside estate, CresswellJobs inside it are never offered to youPrivate

When you save

The next householder search reads this shapeJobs posted in North Fen can be offered to youYour public page shows the new areaSave area
On screen

Halloway Grounds Care drags one vertex of the area they actually work, stopping at the river and cutting out a no-go estate, while the district list beside it recounts its households as they do.

09:14
@halloway-groundsShare
HGHalloway Grounds Care4.9(86)· Lawns, hedges, clearance
Abbots RiseCresswellOld Town+1
Next free Thu 24 SepAsk for a quote
Where we work · drawn by us

Prices, before you ask

set once per service
Call-out£20.00per visit
Labour£40.00per hour
Lawn mow, edges strimmed£28 – £45typical
Hedge trim£140 – £220typical
Green waste taken awayfrom £35per load
Autumn leaf clear£60 – £110typical

Latest reviews

All 86

Dev P. · Cresswell Lane9 Sep 2026

Came when they said, cut the beech hedge back hard and took every bit of it away. Price matched the page.

Hannah W. · Abbots Rise2 Sep 2026

Fortnightly mow since June. Messages always have the job on them, so I never have to explain the side gate again.

On screen

A provider's public page at their own handle: priced line by line before anyone asks, next free on Thursday, the area they drew, and the last two things householders said about them.

02

A profile at your own handle

Providers get a page worth sharing, so the marketplace works for them as a tool.

Each provider gets a page at their own handle with their work, coverage, pricing and reviews: something worth sending to a customer directly. That flips the relationship. The marketplace becomes a tool a trade uses, where it had been a directory they were buried thirtieth in, and that's what made providers keep their listings current without being chased.

What shipped
  • A shareable page at the provider's own handle
  • Worth sending to a customer directly, outside the marketplace
  • Providers maintain their own listings without chasing
03

Messaging with context

The job, address and quote sit beside the conversation, so nothing gets retyped into a text thread.

The job, its address, the photos and the quote sit beside the conversation, so nobody is scrolling back through messages to find a house number. Messages are tied to the job, which means the history stays with the work and survives both parties losing the thread.

What shipped
  • Job, address, photos and quote beside the conversation
  • Nothing re-typed from a listing into a message
  • History tied to the job itself
Tendfield 14 Wolstan RoadIC
HGHalloway Grounds Care@halloway-grounds · usually replies within 2 hoursProfile
TF-40817Hedge trim, front and sideQuote £180.00
14 Wolstan Road, Abbots Rise Weekday morning, 8:00 – 12:00
3 photos · posted Tue 15 Sep 2026, 19:42

Wednesday 16 September

Morning Imogen. I’ve looked at the photos: the side run is taller than the front, so I’ve allowed three hours and a load of green waste.
07:58
Quote £180.00 attached to TF-40817 · 08:02
That looks fine. Could you do a morning next week? The side gate will be unlocked.
08:40 · Read

Today

Thursday 24th, 8:30 works. Quote’s pinned above, nothing’s changed on it.
08:14
Reply about TF-40817Send
On screen

The hedge job travels with the conversation: its reference, address, preferred morning and the £180.00 quote pinned above the messages, with the job and its quote breakdown alongside.

Tendfield 14 Wolstan RoadIC

TF-40817 · Hedge trim, front and side

3 quotes for the same hedge
14 Wolstan Road, Abbots RiseOpen conversations

What firms covering Abbots Rise state for a hedge this size

Stated before contact · set once per service
typical £175£150£210Halloway £180Adeyemi £165Tidy Plot £240

Range across the 4 firms whose area contains the address. A quote above a firm’s own stated range is flagged, never quietly sent.

HGHalloway Grounds Care4.9(86)Free Thu 24 Sep
£180.00Pinned in chat
Call-out£20.00
Labour · 3 h × £40.00£120.00
Green waste, 1 load£40.00
Their stated hedge range£140 – £220

What it covers

Front and side cut Top levelled Clippings taken away
Inside their stated range and the area’s
AcceptMessage
MAM. Adeyemi Hedges & Lawns4.8(23)Free Sat 19 Sep
£165.00Received
Call-out£0.00
Labour · 3.5 h × £36.00£126.00
Green waste, 1 load£39.00
Their stated hedge range£130 – £190

What it covers

Front and side cut Top levelled Clippings taken away
Inside their stated range and the area’s
AcceptMessage
TPTidy Plot Co.4.5(58)Free Wed 23 Sep
£240.00Received
Call-out£25.00
Labour · 4 h × £42.50£170.00
Green waste, 1 load£45.00
Their stated hedge range£140 – £210

What it covers

Front and side cut Top levelled Clippings taken away Base weeded
Above Tidy Plot's own stated hedge range of £140 – £210
AcceptMessage
On screen

Three quotes for the same hedge, each broken into the work it covers and set against what firms covering the area charge, with the one above its provider's own stated range flagged.

04

Pricing up front

The first question is always what it costs, so it's answered before the conversation starts.

Pricing is stated before the conversation begins (call-out fee, hourly rate, typical range for the job type), because "what does it cost?" is the first question every householder has, and hiding it produced a round of messages that ended in nothing. Providers set it once per service, and a job outside the stated range gets flagged before it's quoted.

What shipped
  • Call-out fee, rate and typical range shown before contact
  • Set once per service, never per inquiry
  • Quotes outside the stated range are flagged
Offer · TF-40817

Hedge trim, front and side · 14 Wolstan Road, Abbots Rise, Sallowmere · posted Tue 15 Sep 2026, 19:42

Sent to 4
Whose shape contains the address11 nearby shapes
River SallowToll bridgeFerry RoadWolstan RdHallowayFenwickAdeyemiTidy PlotKestrelOakhurstBrindleRuddockParkgateLinnetTwo Rivers
offer_to = shapes.contain(point(610, 250))Containment, not distance · the query search runs too

Nearby firms

11

Contain it

4

Near misses

2

Sent outside

0

Sent · 4

19:42 · the moment TF-40817 was posted
HGHalloway Grounds Care@halloway-groundsContains addressQuoted £180.00
FLFenwick Lawns@fenwick-lawnsContains addressOpened
MAM. Adeyemi Hedges & Lawns@adeyemi-hedgesContains addressQuoted £165.00
TPTidy Plot Co.@tidyplotContains addressQuoted £240.00

Near misses · not sent · 2

left unsent rather than wasted
KTKestrel Turf CareYard is close, but the area they drew stops at the River SallowNot sent
OGOakhurst Garden ServicesTwo streets away, but their area stops at Cresswell LaneNot sent

Same shapes as the search

no separate index
Imogen Clarke’s search at 19:38 listed Halloway, Fenwick, Adeyemi, Tidy Plot.The offer at 19:42 read the same coverage shapes, so it went to exactly those 4.4 = 4
05

One model, both sides

On screen

The offer going out only to the four providers whose shape contains the address, with two near misses named and left unsent, read from the same coverage shapes the householder's search used.

Search and matching read the same coverage shapes, so what a householder sees is what a provider offered.

Search and matching read the same coverage shapes, so what a householder sees in results is exactly what a provider offered. There's no separate search index to fall out of step with the source, and a coverage change takes effect on the next search, with no reindex to wait for.

What shipped
  • Search and matching read one set of coverage shapes
  • No separate index to drift from the source
  • Coverage edits take effect on the next search

What we built together

  1. 01

    Made the service area a declared shape, replacing the radius around a home postcode

    Providers declare the areas they actually work in as shapes, and the shapes they drew during the first phase looked nothing like circles.

  2. 02

    Matched by containment: does this address fall in this provider's area?

    Matching is a containment test (does this address fall inside this provider's declared area?), which is a question with a real answer.

  3. 03

    Gave every provider a public profile at their own handle, so they can share it

    Every provider gets a public page at their own handle with work, coverage, pricing and reviews, so the listing is worth sending to a customer directly.

  4. 04

    Built messaging into the platform so a job conversation has the job attached

    Messaging was built in-platform reluctantly, after watching providers and householders lose job details in text threads they couldn't search.

  5. 05

    Kept pricing transparent up front, because the first question is always what it costs

    Pricing is stated before contact (call-out fee, rate, typical range), because "what does it cost?" is the first question and hiding it wastes a round of messages.

Operational results after launch

Coverage

Matching model

0

Jobs offered outside a provider's area

100%

Provider profiles shareable

None

Job context retyped into chat

Matching model and area levels are descriptions, not measurements. Jobs offered outside a provider's area is zero by construction: the query is a containment test. Profiles shareable and job context retyped are both capability claims about what the platform now does and no longer requires.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

Process

Phase by phase

  1. Phase 1: The Matching Question

    Coverage, Not Distance

    Replaced radius matching with declared coverage. A provider says where they work, and matching answers a containment question in place of a proximity guess.

    • Service Area Model
    • Containment Matching
    • Coverage Editor
  2. Phase 2: The Provider

    A Profile Worth Sharing

    Gave each provider a public page at their own handle, so the marketplace becomes something they send people to, where it used to be a directory they were buried in.

    • Provider Profiles
    • Handle Routing
    • Portfolio & Pricing
  3. Phase 3: The Conversation

    Messages With The Job Attached

    Built messaging into the platform so the job, the address and the quote sit beside the conversation, and nobody re-explains them in a text thread.

    • In-Platform Messaging
    • Job Context
    • Notifications
  4. Phase 4: The Householder

    Find, Compare, Ask

    Built the search side on the same coverage model, so the list a householder sees is providers who'll actually come.

    • Provider Search
    • Coverage Filtering
    • Pricing Surface
09:14
OffersHalloway Grounds Care4
Every offer is inside the area you drew4 districts · edit in Coverage
Hedge trim, front and sideTF-40817
14 Wolstan Road · Weekday morning
Inside · Abbots RiseQuoted £180.00
Lawn mow, fortnightlyTF-40822
Cresswell Lane · Any weekday
Inside · CresswellQuote
Autumn leaf clearTF-40830
Ferry Road · Saturday
Inside · Old TownQuote
Hedge and lawn tidyTF-40836
Abbots Rise · Before 2 Oct
Inside · Abbots RiseQuote
OffersJobsSearchMessagesProfile
On screen

A provider's offers on the phone: every job sits inside the area they drew, with the district named on each, and the hedge job already quoted at £180.00.

Ways of working

About our collaboration

Replacing radius matching with declared coverage was the decision the whole build turned on. It was made in week two, after sitting with three providers and asking which jobs they turn down. Everything else (profiles, messaging, search) reads the same coverage shapes.

Phased so the coverage model landed and was validated with providers before anything was built on it, because everything downstream (search, matching, the profile) reads it. Providers drew their real areas during the first phase, and the shapes they drew looked nothing like circles, which settled the design question before it could become an argument.

What we'd carry into the next one

  • Proximity is a proxy for willingness to travel, and a bad one. Roads and rivers beat circles.

    Distance stands in for willingness to travel and predicts it badly: a main road beats a mile, and a river beats both. A circle can't express any of it.

  • A marketplace profile worth sharing turns providers into a distribution channel.

    A profile worth sharing turns each provider into a distribution channel. That's the difference between a marketplace they use and a directory they're buried in.

  • Conversation without the job attached means the job gets re-explained every time.

    Without the job attached, every conversation begins with the householder re-explaining it, and that's the step that loses the ones who were nearly ready to book.

  • Both sides have to read the same matching model, or the marketplace shows people things that aren't true.

    Search and matching have to read one coverage model, or the platform shows a householder a provider who was never actually offering to come.

One address, two matching models

A circle guesses who will travel. A drawn area says so.

Pick an address, then step through who a job there is offered to: first by a radius round each firm’s yard, then by the shapes firms drew, then the offer itself, and finally with one corner of one shape dragged. Switch tabs, or use the arrow keys once one is focused.

Job address

A circle of 2 miles round each yard. Distance stands in for willingness to travel, so the offer reaches firms across the river and misses firms that come along the main road.

River Sallow

What the circle decides

  • Halloway Grounds CareOffered, and does work this street
  • Fenwick LawnsHidden: yard outside the circle, yet works this street
  • M. Adeyemi Hedges & LawnsOffered, and does work this street
  • Tidy Plot Co.Hidden: yard outside the circle, yet works this street
  • Kestrel Turf CareOffered, but wouldn't travel here
  • Oakhurst Garden ServicesOffered, but wouldn't travel here

Radius offers 4: 2 who would not come, and hides 2 who would.

The town, firms and shapes are invented; the 2 miles radius and the drag timing are illustrative. Every contains / does-not-contain answer is computed live with a point-in-polygon test.

Architecture

From a shape a provider drew to the offers a job produces

The coverage model landed and was validated with providers before anything was built on it, because everything downstream reads it: search, matching and the public profile.

  1. 01 · Source
    Coverage drawn by the providerProviders declare the areas they actually work as shapes, drawn from where they go, so rivers, bridges and no-go areas can be expressed.
  2. 02 · Trigger
    Job posted at an addressThe job carries its address, photos and quote context from the start, so none of it is retyped into a message later.
  3. 03 · Engine
    Point-in-polygon matchingMatching asks whether the address falls inside a declared area. A job offered outside a provider's area is impossible by construction: the query is the containment test.
  4. 04 · State
    One set of coverage shapesSearch and matching read the same shapes, with no separate index to fall out of step. A coverage edit takes effect on the next search, with no reindex to wait for.
  5. 05 · Delivery
    Offer, profile and job-attached messagesMessages are tied to the job, so the address, photos and quote sit beside the conversation and the history stays with the work.

Who a job can reach

Reach, addresses & context

No job lands outside the area a provider drew

Matching is a containment test against the shape the provider declared. A job over a river they won't cross is never offered to them, by construction.

An address goes only to firms whose area contains it

The offer is sent to the providers whose shape contains the address and to nobody else; near misses are left unsent. Search reads the same shapes, so no firm is listed that wasn't offering to come.

A quote never loses its job

Messages are tied to the job, so its address, photos and quote sit beside the conversation. Nothing is retyped from a listing, and the history stays with the work.

Matching jobs by distance when it should be by where people actually go? Scope your build in 3 minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.