Tbibiطبيبي
Book a pilot
Telemedicine built for Morocco

Healthcare that reaches the patient, not the waiting room.

Tbibi connects Moroccan patients to licensed doctors in minutes — by video, audio or chat, in Arabic, French and Darija. Built for a mid-range Android phone on a patchy connection, not for a fibre line in a European city.

Doctors verified against the ONM registry Built to the CNDP bar from day one Usable on 3G
Why now

Three problems that one product can fix.

Tbibi is not a video-call app with a Moroccan flag on it. Every decision below came out of how care is actually reached here.

01

Distance is the real waiting room

Specialists cluster in a handful of cities. For a routine follow-up, a patient can lose a day of travel and a day of wages — so the follow-up quietly stops happening, and a manageable chronic condition becomes an emergency.

02

The phone is the clinic

Patients arrive on mid-range Android handsets over variable 3G and 4G, and they live inside WhatsApp, not inboxes. A product that assumes stable bandwidth, iOS defaults and email confirmations has already lost most of the country.

03

Trust has to be visible

Nobody hands over a medical history — or a payment — to a stranger behind a screen. The licence check, the signed prescription and the audit trail are not compliance overhead. They are the reason a first consultation happens at all.

The core loop

Seven screens between a symptom and a prescription.

Tap a step — the phone follows. This is the MVP loop end to end, the one a real doctor and a real patient will run in the pilot.

Autoplaying — tap any step to take over
What ships in the MVP

Small surface. Nothing decorative.

Every item here exists because the pilot fails without it. Everything else — insurance integration, pharmacy delivery, AI triage, native apps — is deliberately out.

Arabic, French and Darija — RTL from the first commit

The interface mirrors properly in Arabic because the layout was built with logical properties, not retrofitted with a stylesheet hack. Doctors document in French, patients read in Arabic, and copy leans on Darija wherever plain language beats formal register.

A video ladder, not a video call

Self-hosted LiveKit with adaptive bitrate: HD when the network allows, audio-only when it does not, and a persistent chat thread underneath both. A dropped call never means a lost consultation or a lost fee.

WhatsApp first, SMS second

Confirmations, 24-hour and 15-minute reminders, cancellations — templated in three languages and sent where Moroccans actually read them.

Doctor verification with a human in the loop

Document upload, ONM registry check and admin review before a profile goes live. Manual at pilot scale, designed so it can be automated later.

E-prescriptions a pharmacist can verify

A signed PDF with a QR code resolving to a public verification page — no account, no app, just proof that the document in front of them is real.

A clinical record with a paper trail

Diagnoses, allergies, medications, history and labs — written by the doctor, read-only to the patient, and every single read written to an immutable audit log.

One account, the whole family

A parent adds a child with a birth certificate and switches between profiles. Clinical data hangs off the patient, never off the login.

Payments that fit the market

Clinic-billed by default, because that is how Moroccan clinics already work. CMI cards and mobile wallets slot in behind the same provider interface when the pilot asks for them.

For clinics and doctors

Your practice, plus a remote waiting room.

Tbibi does not ask a clinic to change how it bills, staffs or schedules. It adds consultations the clinic could not physically host, and it hands them back as structured notes.

  • Set weekly availability once; the slot engine handles conflicts, reschedules and the two-hour cancellation cut-off.
  • Consult from a desktop browser between in-person patients — no install, no plugin, no new hardware.
  • Write the note in French, issue the prescription, and both are delivered to the patient before they leave the call.
  • Sign in with email, password and a TOTP code. Role-based access, row-level authorisation on every read of patient data.
  • Billing stays where it is. The platform records the consultation; the clinic invoices as it always has.
tbibi.ma/portal/today
Wednesday 23 September 4 consultations
SB Sara B. · 14:30Type 2 follow-up · 2 new glucose logs Now
MK Mehdi K. · 15:45First consultation · intake form complete Upcoming
NF Nadia F. · 16:30Lab result awaiting your review Action
✓ Prescription issued — Sara B.PDF signed, QR TB-4F9K-22Q, delivered on WhatsApp
Trust & compliance

Health data is the highest sensitivity class.

We designed to the Moroccan regime rather than porting a European product and hoping. These are the frames the architecture answers to.

LAW 09-08 · CNDP

Personal data protection

Health data processing is declared to the CNDP, with explicit consent captured at registration, a documented retention policy, and a subject-access path that a patient can actually use.

DECREE 2-18-378

Telemedicine

Remote consultation, remote expertise and the identification duties that come with them shape the product: identity verification on both sides and a consultation record for every encounter.

LAW 131-13 · ONM

Medical practice

Only verified, registered practitioners can hold a consultation or sign a prescription, and the licence number appears on every document they issue.

RESIDENCY

Data stays where it can be defended

In-country or EU hosting with a clear residency story, self-hosted video so media never transits an unvetted third party, and no dependency that quietly ships identifiable health data abroad.

CRYPTOGRAPHY

Encrypted in transit and at rest

Identifiable clinical fields are encrypted at the column level and kept apart from operational data, with secrets in a managed secrets store and encrypted, tested backups.

ACCOUNTABILITY

An audit trail from the first migration

Every read and write of a clinical record is appended to an immutable log — who, what, when — because the log is worthless if it is added after the product ships.

Honest caveat: this is an engineering reading of the regime, not legal advice. Every position above is verified with Moroccan counsel and confirmed with the CNDP before a single real patient is onboarded — the open legal questions are tracked in the repository, not hidden in a pitch.

Under the hood

Boring technology, debuggable at 3 a.m.

One modular monolith with clear internal boundaries, one database, one deployment story. A two-person team can hold all of it in their head — which is the point.

Web · Next.js 15 PWA API · NestJS 11 + Prisma Data · PostgreSQL 16 Jobs · Redis + BullMQ Video · LiveKit, self-hosted Files · MinIO, S3-compatible Infra · Docker Compose + Caddy CI · GitHub Actions · lint, test, audit i18n · next-intl · en / fr / ar
Path to pilot

Twelve weeks to a real patient, a real doctor.

Vertical slices, not layers. Every week ends with something a doctor could put their hands on.

WEEKS 1–4 · SHIPPED

Foundations and booking

  • Monorepo, CI, domain model, audit log, PHI encryption
  • Phone + OTP registration, dependents, profiles, settings
  • Trilingual shell with RTL, installable PWA
  • Doctor profiles, availability engine, booking and reminders

WEEKS 5–7 · IN FLIGHT

Consultation and record

  • LiveKit room, pre-join checks, audio and chat fallback
  • Consultation notes, medical history, documents
  • Diagnosis, allergies, medications, family history
  • Patient glucose and lab logs with a doctor review queue

WEEKS 8–12 · NEXT

Prescriptions, admin, hardening

  • E-prescription PDFs with public QR verification
  • Education library and the admin panel
  • WhatsApp and SMS delivery adapters
  • Security pass, low-bandwidth polish, end-to-end tests, pilot cohort
Pilot cohort

A handful of doctors. A controlled group of patients.

We are looking for clinics in Casablanca and Rabat willing to run real consultations through Tbibi, tell us plainly what breaks, and shape what gets built next.