A marketplace for interior pieces that lives inside Telegram: posting a listing, moderation, holds and publishing to the channel — without a jump to a browser.
Luxury interiors are sold on the photograph and the seller’s reputation, not on a price filter. Pieces lived in personal accounts and spreadsheets: a buyer could not compare two offers, and a seller could not tell what had been viewed.
What was needed was a shopfront with a large frame, a calm grid, and a category page that opens instantly — even with thousands of listings.
Categories, periods, materials and designers. Search understands morphology: “brass sconces” finds “sconce made of brass”.
Bulk listing upload, drafts, and view and enquiry statistics for each piece.
A queue with rejection reasons and an edit history: in the luxury trade the platform answers for listing quality, not the seller.
A buyer describes what they want in words — the request goes to the right sellers and the replies gather in one place.
The concept mockup of the shopfront — how the project looked on paper before the first build.
And these are screenshots of the running mini app. The whole path — from posting a listing to publishing it to the channel — happens inside Telegram, without a single jump to a browser.
Category and listing pages are generated ahead of time and reindexed on a “listing passed moderation” event. A category opens in a fraction of a second and does not depend on database load.
A seller uploads a 20-megapixel original and gets back three crops in AVIF and WebP with the proportions preserved. Mobile traffic for the catalogue dropped several times over and the frame stayed large.
A PostgreSQL full-text index with a dictionary and domain synonyms: two spellings of “art deco” lead to the same results, and designers’ names do not fall apart across grammatical cases.
A catalogue that opens faster than the buyer can change their mind.