Work / Techjar · 2024

Appetite

A London-first social app for saving, mapping and sharing places to eat. Past 10,000 downloads with 2,000+ people opening it daily.

Role
Software Engineer: backend, geospatial, mobile
Timeline
2023 to 2025
Platform
iOS & Android
Outcome
10,000+ downloads · 2,000+ daily active users
Appetite: Every restaurant you meant to try, on one map with your friends

The problem

Recommendations arrive as screenshots, saved Instagram posts and messages you never find again. Appetite’s bet was that the list is worthless without the map, and the map is worthless without your friends on it.

Which means the app needs every restaurant in London on day one, before it has a single user to contribute one.

Filling the map before the users arrived

The restaurant data comes from Google, and Google charges per request. The naive version of this product is one where the map gets more expensive to draw the more people use it, which is a business that gets worse as it succeeds.

So nothing is ever paid for twice. The app keeps a record of every part of the city it has already looked at, and a request for an area only pays for the parts genuinely unseen. The moment those come back they are free for everyone afterwards, including every future user who opens the same street.

Lookups and searches are answered from our own data first and only reach Google when local coverage is actually thin. The result is that the cost of covering London fell as the app grew instead of rising with it.

A map that stays fast in a dense city

Central London has thousands of restaurants in a few square miles, and no phone can draw thousands of pins. The grouping is done on the server before anything is sent, so the phone receives a handful of markers for the area you are actually looking at and panning across the city stays smooth on a mid-range Android.

Working out where a user is runs on open mapping data rather than a paid provider, which keeps a constant, unavoidable cost of the product at zero.

Social features that hold up

Follows, saves, friend requests and shared lists all fail the same way if you are careless: two taps in the same instant, two records written, a follower count that drifts and never comes back. Once those numbers are wrong they are wrong permanently, and people notice.

Those rules are enforced by the database rather than hoped for in the app, which is why the counts people see are the counts. Unfollowing and following again works; following twice is simply not possible.

Chat, typing indicators and notifications are live. Everything that can wait (push notifications, invite texts, verification emails, image processing) happens in the background, so a slow third party never leaves someone staring at a spinner.

Recommendations that learn

Discovery, search suggestions, similar restaurants and people to follow come from a recommendation service that is told what happened next: whether each suggestion was opened, saved or ignored. It is being corrected on its own results rather than left to guess.

The in-app assistant sits in the same place as the group chats. Ask it a question in plain language and it answers with real restaurants you can tap straight through to, and it runs in the background with a visible state, so a slow answer never takes the chat screen down with it.

Built to keep growing

As the product grew, sign-in and accounts were separated out so that part could be scaled and changed without touching everything else, and versioned on both sides, so shipping a new release never breaks the version still installed on someone’s phone.

What it came to

10k+
Downloads
2k+
Daily active users
London-wide
Full coverage before the first user
Paid once
Map data is never bought twice
  • Flutter
  • TypeScript
  • Node.js
  • PostgreSQL
  • PostGIS
  • Prisma
  • Redis
  • BullMQ
  • NATS
  • Kubernetes
  • Google Places API
  • Pusher

Open to senior engineering roles

Tell me what you are building.

Full-time roles, contract work, or a system that needs someone to own it. I read everything and reply within a few hours.

Start a conversation Download CV
Go to technical view