Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Data & Analytics

Messy Address Geocoder for Last-Mile Delivery Using Past Drop Points

A final year project that builds an address resolution service for couriers and delivery apps in cities without reliable postcodes. It parses free-text addresses with landmarks, links them to past successful delivery locations, and returns a coordinate with a confidence score, so riders stop calling customers for directions.

Difficulty

Advanced

Needs a team, real planning, and a supervisor who knows the area.
Effort

2 semesters · 3 to 4 students

Deliverables

6 to ship

3 optional extras

Suggested stack

PythonPostGISElasticsearch or OpenSearchH3FastAPIscikit-learnDocker
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • An address parser that splits free text into components (house, street, block or phase, area, landmark, city) for English and Roman Urdu or another local transliteration, evaluated on at least 500 hand-labelled addresses.
  • A gazetteer built from OpenStreetMap names plus a learned list of area and landmark aliases with spelling variants.
  • A drop-point clustering step that turns past successful delivery GPS points for the same customer or address into a stable location, removing outliers.
  • An address matching service that links a new address to known addresses and clusters, returning coordinates, a confidence score and the evidence used.
  • A REST API with batch geocoding, a review queue for low-confidence results, and a map review tool for operations staff.
  • An evaluation on a held-out month of deliveries comparing your coordinates with actual drop points, against a commercial geocoder and a gazetteer-only baseline.

If you have time left

  • A classifier that flags when a customer's pinned location disagrees with their typed address, as Swiggy has described doing for quick-commerce orders.
  • Delivery zone suggestions for new riders based on address density.
  • A privacy mode that stores only H3 cells instead of exact coordinates for customers who request it.

The problem couriers have with addresses

In much of South Asia, the Middle East and Africa, addresses are descriptions rather than codes: "House 12, Street 4, near Madina Masjid, behind the petrol pump, Block C". The same place is written ten ways by ten customers, in English, local script or transliteration. Postcodes, where they exist, cover large areas. General geocoders often return the centre of the neighbourhood, hundreds of metres away from the door.

The cost is visible every day: riders call customers for directions, failed first attempts, late deliveries and wasted fuel. Yet every courier holds a large, underused asset: GPS points from past successful deliveries, which show where each address actually is.

What already exists and the gap

  • Google Maps Geocoding API handles formal addresses well but is often imprecise for informal landmark-based ones and costs money per request at scale.
  • Plus Codes and what3words give precise location codes, but customers rarely know or use them.
  • Swiggy has written on its engineering blog about address correction for quick commerce, including a classifier that detects when a captured location is inaccurate by comparing it with the address text and past delivery locations.
  • Pelias and Nominatim are open-source geocoders built on open map data, which is often thin in informal areas.

The gap: large delivery companies build this internally; mid-sized couriers, pharmacy chains and food delivery startups do not have the team to do so. A service that learns from a company's own delivery history is the product. The core work is data engineering and entity resolution, not app screens.

What you build

Roles: API client (the courier's order system), operations reviewer (fixes low-confidence addresses on a map), admin.

Flows:

  1. Historical orders with addresses and drop GPS points are loaded and cleaned.
  2. Addresses are parsed and normalised; aliases are learned ("DHA Ph 6", "Defence Phase VI").
  3. Drop points for the same customer and address are clustered into a stable location.
  4. A new order's address is matched against known addresses and clusters; the service returns a coordinate, confidence and evidence.
  5. Low-confidence results go to reviewers; their fixes feed back into the gazetteer.

The technically interesting part

This is entity resolution with a spatial twist. Two address strings may refer to the same door or not; text similarity alone is misleading because "Street 4, Block C" exists in many neighbourhoods. You need blocking (by city and area, or by H3 cell of past drops), a comparison model that uses text, landmarks and spatial evidence, and a rule for when to trust history over text.

Drop-point clustering matters too: GPS is noisy near tall buildings, and riders sometimes mark delivered from the road. Use density-based clustering, remove outliers, and measure how many past points you need before the location is stable. Show your evaluators the confidence score is calibrated: 90% confidence should mean the answer is within your distance target about nine times in ten.

How to evaluate it

  • Distance error: median and 90th percentile distance from predicted coordinate to actual drop point on a held-out month.
  • Hit rate: share of addresses within 50 m and 100 m, versus a commercial geocoder and a gazetteer-only baseline.
  • Parser: component-level F1 on 500+ labelled addresses.
  • Calibration: reliability plot for the confidence score.
  • Performance: single and batch latency; throughput on 100,000 addresses.

Suggested plan

  1. Weeks 1 to 4: partner with a courier or delivery startup for anonymised historical data, or build a realistic dataset from OpenStreetMap plus simulated drops; label addresses.
  2. Weeks 5 to 9: parser, normalisation, gazetteer from OpenStreetMap.
  3. Weeks 10 to 14: drop-point clustering and alias learning.
  4. Weeks 15 to 20: matching model, confidence scoring, API.
  5. Weeks 21 to 24: review tool and feedback loop.
  6. Weeks 25 to 30: held-out evaluation, baselines, write-up.

Path to a product

The first customer is a mid-sized courier or a delivery startup with a few years of order history. Charge per geocoded address above a free volume, or an annual licence for self-hosting when data cannot leave the company. As the service improves across clients, offer an opt-in shared gazetteer of public place names (never customer data).

Scope warning

Do not build a rider app, order tracking or route optimisation. Do not share one client's customer addresses with another. Do not try to cover a whole country; one or two cities with good data is enough.

Learn what you need on Sefism

Get help with this idea

The first thing to settle is where the delivery history comes from; without it the idea changes shape. If you want a second opinion on scope, stack or how to evaluate it before you pitch it to your supervisor, a mentor can help you shape it. You still build it; the guidance is about making the plan realistic and the results defensible. New here? create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.