ALL WORKS

Willi

An AI-powered Telegram Mini App for Bali rentals that turns messy chat listings into a searchable map. Built end to end by us.

Subject
  • AI
  • Mobile / Telegram
  • E-commerce
Completed
March 2024
Role
Development / Product Design / Identity / Strategy
Disciplines
  • Frontend
  • Backend
  • UX/UI Design
  • Brand Identity
  • Strategy

Our own product, end to end

Willi is our own product, not a commission, and we built all of it: strategy, design, frontend, backend, the database and the infrastructure it runs on.

In Bali, villas and rooms are rented through Telegram groups and private messages: photos in a thread, prices in any currency, nothing you can search. Willi reads those chats and turns them into one catalogue inside Telegram. At its peak it had 5,000 daily users and several thousand listings.

From a chat message to a listing

New messages from rental chats go through an AI pipeline. It first tells a listing from a request by someone looking for a place, or from noise, then pulls out the type, price, currency, rental period, bedrooms, amenities, dates and location — from Russian, English or a mix of both, including phrasing like “15 million for 5 months”.

The address is geocoded, prices are brought to one comparable format, the description is translated between Russian and English, and the photos are compressed and uploaded. A message in a chat becomes a card you can search and filter.

Duplicates for almost nothing

The same villa gets posted in a dozen chats by the owner and three agents. Willi recognises it by perceptual hashes of the photos, which still match after an image is re-saved or slightly changed, so duplicates are filtered out at almost no extra cost.

Search and matching on the map

Search runs on PostgreSQL with PostGIS: real distances from you to each place, a radius on the map, and ranking by how well a listing fits — budget across currencies and rental periods, type, bedrooms and bathrooms, amenities, verified owners, freshness and promotion. Exact matches come first, close alternatives after.

It works both ways. Someone looking for a place can post a request with a budget, dates and area, and a background queue sends matching listings through the bot, with a deep link straight to the card.

Inside Telegram, payments included

There is no sign-up: the backend verifies Telegram's signed initData and only then opens a session. Owners pay through Telegram invoices for extra listings and promotion, and every payment moves through explicit states, so a purchase is never applied twice or left out of sync.

Stack

Next.js · TypeScript · PostgreSQL · PostGIS · Prisma · Cloudflare Images · Sentry · Docker · Fly.io

NEXT PROJECTДВИЖ.LABA remote rehabilitation platform: booking, payments, video consultations, personal programmes and video reports for patients, specialists and admins. We built all of it.OPEN PROJECT

Yours next.

A rough idea, a half-finished brief or a problem you can't name yet is enough to start. Tell us what you're working on — we'll come back with questions, not a sales pitch.