Projects

Bookerty: Maps Overhaul

Rebuilt map search on PostGIS, with a Greek geocoding stack

What I did

This was a huge overhaul effort to improve Bookerty’s previous search UX in terms of the web map showing search results and instigating new searches. Bookerty is a hospitality startup similar to AirBnB.

There were several problems with the old stack, namely a cluttered map of simple pins, low visual distinction in results, disorientation during moving the map and bad refetch timing, a hand-kept search areas table, Google services as a primary (costly) resolver etc.

I started by creating a new geocoding stack for Bookerty based on OpenStreetMap, Nominatim and Photon. This helped drastically cut search costs down and enabled a controlled way to access places as polygon areas rather than just point coordinates.

The search modes were reduced to two, exact pagination was introduced, the map behaviour was significantly improved by removing manual pan searches. The destination engine was switched to the fresh custom one and a two-step geocoding search (name search + geofeature search) was orchestrated in the web app’s backend.

To retain as much utility as possible, weak match flagging was added and deferred suggestions by Google and a search in Bookerty’s listings were kept for cases where users look for contemporary places or businesses.

Testing had a lot to cover. A search-performance parity benchmark compared old and new search on scenarios such as Greece-wide undated and dated with a price range. Seeded fixtures for tricky areas like adjacent islands to prove polygon filtering works. Regression tests for known destinations of different types.

The cutover was carefully planned to be human reviewed by the Bookerty technical manager and to affect as little of current code as possible.

More optimizations included:

  • Buffers for special case regions with no available polygons
  • Same-place collapse in results
  • Coordinate randomization for listings
  • Postgres query optimizations

More like this

Contact

Need something like this?

Email me about a project like this