Bulbul
A store platform for Arabic-speaking merchants, built Arabic-first rather than translated into Arabic afterwards.
Founder & Product Owner · 2025 – Present
bulbulio.com- live stores
- 40+live stores
- database tables
- 69database tables
- states in the order lifecycle
- 9states in the order lifecycle
- tiers of roles
- 2tiers of roles
The problem
A merchant who wants to sell online in Arabic has two poor options. Build on a platform designed in English and translated afterwards, where right-to-left is a setting rather than a starting point and checkout assumes a card. Or sell through Instagram and WhatsApp and lose the order when the conversation scrolls out of view.
What made it hard
Multi-tenancy is easy to describe and unforgiving to get wrong. Every merchant needs their own products, inventory, orders, domain and staff, and none of it may leak to anyone else. Meanwhile, the buyer never sees the platform. They see one shop.
Arabic-first is not a translation task. It means handling layout direction, number formatting, names and addresses, and a checkout that expects cash on delivery instead of treating it as an exception.
The decisions
Two tiers of roles, not one list
The platform has its own roles — visitor, registered user, admin, super admin. Each store has its own — owner, manager, viewer. Combining them into one list would put a store owner and a platform administrator under the same permission model, making it possible for one tenant to see another tenant's data.
Define order states before order features
Nine of them: pending, confirmed, preparing, delivering, delivered, failed delivery, cancelled, rejected, returned. Failed delivery and returned are in the model because they happen, and a platform that only models the happy path hands that mess straight back to the merchant.
WhatsApp as a channel, not a share button
Ordering runs through the conversation the buyer is already having. That is how these merchants already sell; the platform meets them there instead of asking them to change their process.
Review each store before it goes live
Applications move through under review, incomplete data required, and then rejected or accepted. This deliberately slows onboarding. A marketplace of abandoned, half-built shops is worth less than a smaller one where every shop works.
What changed
Bulbul is live with more than 40 stores. Merchants run products, inventory, orders, accounting and analytics from one dashboard, on their own domain, with product entry assisted by AI.
The database schema now has 69 tables across the storefront, merchant dashboard and platform itself.
What it taught him
Owning the product and writing the code is different from doing either alone. A feature he could specify in a paragraph sometimes took a week to build, and learning which paragraphs cost a week changed what went into the next one.
He leads a small team and writes most of the code himself. The part that does not scale is making the decisions, not writing the code.