Case Study

Kinnashy (كناشي)

A white-label commerce platform for digital-goods sellers in Mauritania, each seller gets their own branded storefront, installable app and fraud-checked payments, built around one conviction: don't compete with sellers, equip them.

ROLE
Founder, Product Designer & Builder
PLATFORM
Web · PWA (Next.js, multi-tenant)
STATUS
Live · multi-seller pilot
YEAR
2026
The Problem

Thousands of sellers. One WhatsApp inbox each. Zero infrastructure.

Mauritania's digital-goods market (game credits, Netflix, gift cards) runs almost entirely on WhatsApp. Sellers juggle payment screenshots, lose orders in chat threads, and have no stats, no stock system, no professional image. The existing platforms (Chenguity, Ech7anly) don't help them: they are marketplaces that say "come buy from us", competing with sellers instead of serving them. The name says the intent: a كنّاش is the paper notebook every merchant keeps. Kinnashy is that notebook, rebuilt as infrastructure.

Quote

Kinnashy doesn't sell cards.
Kinnashy equips the sellers.

The Solution

One platform, many brands: a shop under the seller's own name

I designed and built a multi-tenant platform where a seller gets a branded storefront (name, logo, colors), an installable PWA dashboard with push notifications, a pre-built catalog of 40 market products, and an OCR gate that screens payment screenshots before they ever reach him. Creating a new seller's shop takes three minutes: I do it live, in front of the prospect, during the sales meeting.

3-screen hero mockup: seller storefront (AR/RTL) · dashboard with order toast · admin "create seller" panel (Coming Soon)
Full white-label: each storefront carries the seller's brand, never mine
Payment verification: OCR on bank screenshots (6 local payment methods)
Instrumented per seller: funnels, order events and OCR verdicts in PostHog
The process
01

Field research & a three-competitor teardown

Before scaling anything, I sat with real sellers and audited the three players shaping user expectations: اشحنلي (mobile app, 40+ products, region-based variants), Ech7anly (Algeria, WooCommerce), and Chenguity (Bankily API, auto-delivery). The teardown set the bar: category navigation, variant packs, instant-delivery badges. And it exposed the gap none of them fills: sellers who want their own brand, not a marketplace's.

Competitive audit board / annotated app screenshots (Coming Soon)
02

From one shop to a platform: without breaking the first client

The MVP served a single seller. Going multi-tenant meant migrating every table to a seller scope, isolating dashboards, generating per-seller PWA manifests, and doing it non-destructively on a live database. The audit surfaced a real cross-tenant data leak in the order-polling API before any second seller ever logged in. White-label followed: brand name, color and logo become database fields, and a new branded shop spins up from an admin panel in three minutes.

Admin sellers panel + two storefronts side by side, different brands (Coming Soon)
03

Designing for sellers who aren't tech people

Watching a real seller create products revealed the truth: he named a product "Netflix — 1 month" then added a "3 months" variant under it, because the form's own placeholder taught him to. I rebuilt product creation as a category-driven wizard (subscriptions get duration presets, game credits get Player ID fields, gift cards get region labels), shipped a 40-product master catalog so sellers activate instead of create, and made every placeholder contextual.

Wizard step with category cards + master catalog modal (Coming Soon)
04

An OCR doorman for payment screenshots

Payments here are bank-app transfers proven by screenshot, and screenshots get faked or reused. I built a Google Vision gate that scores each upload on real local signals (bank names, MRU amounts, transaction IDs, timestamp freshness), rejects stale or duplicate proofs via text-hash matching, and shows the seller a verdict badge. The seller always keeps the final say: the gate filters noise, it never approves money.

Upload flow with rejection state + dashboard badge "capture verified" (Coming Soon)
Key Decisions
01

The platform never touches the money

Payments go straight to the seller's own bank account; Kinnashy only verifies. Centralizing funds would have meant becoming a regulated payment aggregator, a different business, a different license, and the exact thing a wary seller fears. Infrastructure, not fintech.

02

White-label from day one: "your clients stay yours"

A seller's deepest fear about platforms is losing his customers to them. Every storefront carries his brand; mine appears only as a discreet "powered by". The pitch that closes isn't a feature list: it's seeing your own name on a working app three minutes after asking.

03

The OCR gate is a doorman, not a judge

A rejected screenshot triggers retry-first UX; a bypass link only appears after the third failure, flagging the order for manual review. Blocking on machine uncertainty loses real sales; flagging turns fraud-filtering into seller time-saved.

04

Activate, don't create

Sellers make typos, miss icons, and structure products wrong, so the master catalog ships 40 pre-built products with icons, variants and required fields. The seller toggles and prices; he only builds from scratch for the rare product the catalog doesn't know.

05

One concept, one source of truth

The legacy "instant vs manual" product toggle contradicted the newer delivery-type field, letting sellers configure impossible products. I killed the toggle and derived everything from a single field. When two switches can disagree, one of them is a bug waiting for a user to find it.

AI-Augmented Workflow

This product was built solo with an AI-first process, strategy, code and analytics each with the right tool:

Product strategy & UX audits → Claude
Implementation → Claude Code, under a strict discipline: audit → scoped task → verified push (git proof required in every report)
Brand exploration → Figma (9 landing directions compared)
Fraud gate → Google Cloud Vision, rules tuned on real local bank screenshots
Measurement → PostHog (per-seller funnels, typed events)

That discipline caught what speed would have shipped: a cross-tenant leak, a silent service-worker build failure, and a database-reset prompt one keystroke away from wiping production.

Learnings

When a user "makes a mistake," the interface taught it to him.
A feature shipped 48 hours after a seller asks for it turns him into an ambassador.
Deciding what you won't build (touch money, sell products) is a product decision.
The demo that closes isn't a pitch: it's creating their shop in front of them.
After MVP, the bottleneck is never the code. It's how many sellers saw the demo.