Sufra
Restaurant reviews and discovery for Iraq and Kurdistan. In prelaunch.
Sufra is the company and the app Monty co-founded and runs as president. It helps people find sit-down restaurants worth going to, in English, Arabic, and Kurdish, with a mobile app, a restaurant dashboard, and a website all on one NestJS backend. After a beta with about 22 testers, Sufra is in prelaunch.
Starting with research
Before building anything, Monty ran a 286-person pain-point survey to make sure people actually wanted a review and discovery platform for sit-down restaurants. The answers set the user segments and personas, and the product came from there.
They wanted it. In one round of 231 responses, 73.2% said they wanted a better platform for restaurant reviews, and only 18.6% fully trusted the reviews they could find. Nearly 90% check star ratings at least sometimes, and more than 70% follow food bloggers. So reviews and creator content became the core of the app.
Reviews were all over the place: Instagram, social media, delivery apps. There was no single place people trusted. Most people who answered were 18 to 25, and Iraqi and Western food topped the list of cuisines they wanted.
Five people, one problem
From the answers came five personas. Laila, 17, is studying for her national exams and keeps going back to the same few places. Mohammed, 19, picks where to eat based on food influencers. Fatima, 21, mostly orders in and keeps a list of places that let her down. Ali, 28, is a pharmacist with a toddler who needs family-friendly spots on a budget. Mustafa, 37, owns a business and needs restaurants good enough for client lunches.
They all had the same problems: no time to research, too many choices, and reviews they couldn’t trust. Sufra answers with four-part reviews, price levels, tags, and recommendations that do the narrowing down for them.
Sizing up the market
Sufra’s closest competitors were Talabat, Yelp, and TripAdvisor. Talabat is a delivery app. Yelp isn’t in Iraq. TripAdvisor is built for travelers more than locals. None of them is a review-first platform made for Iraq.
So the plan was simple: build the biggest restaurant database possible, partner with restaurants, stay close to the community, and keep improving from user feedback.
Designing the app
Monty started with low-fidelity wireframes in Arabic, then designed the high-fidelity app in Figma with Sufra’s CTO, who built the front end in React Native with Expo and Redux. Home leads with creator review content and quick category filters, and every restaurant page has its menu, hours, and price level.
Reviews rate four things separately: food, cleanliness, ambiance, and service. The app uses the Google Places API for location search, and the backend’s map module finds every restaurant within a radius, closest first, and whether it’s open right now.
What Monty would do differently
Fully flesh out the user flows and the design before building. The team jumped the gun, then had to pause and rework screens that were already built.
Rebuilding the backend
Sufra’s first backend was Express with MariaDB, a separate Flask API for the recommendation code, and an internal admin tool behind a VPN. Managing Express in-house with custom design patterns got out of hand. A mini migration from JavaScript Express to TypeScript Express followed, and managing Node and TypeScript together at the time was a pain.
So Monty rebuilt it in NestJS. The out-of-the-box modularity is really nice, and Monty wanted its object-oriented features: dependency injection and a ton of validation. The DTO validators are really nice and secure, and so are the entity fields.
The hardest problem: what makes a restaurant popular
The hardest thing was a system design problem: how to actually use all the information Sufra collects. What makes a restaurant popular, and where should that math happen?
The first version kept live popularity scores in Redis for restaurants, food items, and reviews. Search would run its database query, group the results by type with a JavaScript reduce, look up each result’s score in Redis, then sort everything in the API. An hourly job copied the scores back into PostgreSQL. It worked, but every search made extra trips to Redis, and the scores lived in two places.
Now a Python service does the math on a schedule and writes one popularity table: likes, weighted food ratings, views, how ratings moved over the last seven days, and a final score and rank for every restaurant. The API joins that table and lets PostgreSQL sort it. One query, one source of truth.
Under the hood
One REST API runs everything: 67 endpoints across 22 modules and 31 tables, built with NestJS and PostgreSQL. Every restaurant name, description, address, and menu item is stored in English, Arabic, and Kurdish.
Recommendations work the same way as popularity. A second Python service runs on a cron job and builds a list for each user with collaborative filtering. Anyone without a list yet gets a hand-picked one instead.
Authentication is in-house with bcrypt, and Google and Sign in with Apple go through the same system. The API runs under PM2 behind NGINX on Ubuntu, with Redis in Docker. In production, PostgreSQL and Redis each get their own container.
The website and the dashboard
The website and the restaurant dashboard run on the same backend as the app, so restaurants, reviews, and recommendations stay in sync everywhere. Both are under construction right now. The dashboard is the business side of Sufra: free for restaurants today, and what Sufra upsells later.
Going to market
Sufra is fighting on two fronts: the app for diners, and the dashboard for restaurants. Restaurants get the dashboard for free. It’s the lead magnet, so restaurants absorb it into how they run, and later Sufra can upsell them.
Restaurants will hand out QR codes that send people to Sufra. That’s warm one-to-many marketing, because people already trust a QR code from the restaurant they’re sitting in. Setting up each dashboard is cold one-to-one outreach. On top of that come long-form blog posts and short-form TikTok content built from Sufra’s own data, for tourists and locals alike.
Where it’s headed
Sufra ran a beta with about 22 testers and is now in prelaunch, still building and testing. Restaurants come first: their free dashboards get set up one by one, then their QR codes bring diners in at the table. Blog and TikTok content keep people coming after that.
What Monty hopes Sufra becomes: the place people in Iraq and Kurdistan check before they go out to eat, with reviews they can actually trust, and the tool restaurants use to run their side of it.