Skip to content
Mozn Jamousمزن جاموس
Back to workعودة إلى الأعمال

Mobile · AI · Graduation projectجوال · ذكاء اصطناعي · مشروع تخرّج

BloomBelly: three AI models behind one app.BloomBelly: ثلاثة نماذج ذكاء اصطناعي خلف تطبيقٍ واحد.

An Arabic health companion for pregnant women and new mothers. I drew every screen in Figma before writing any Flutter, in Arabic, with four user roles and full RTL. Behind it sit three specialized AI models that a Flask service routes between.رفيق صحّي عربي للحوامل والأمّهات الجُدد. رسمتُ كل شاشة في Figma قبل أن أكتب أي Flutter، بالعربية، بأربعة أدوار للمستخدمين ودعمٍ كامل لليمين لليسار. وخلفه ثلاثة نماذج ذكاء اصطناعي متخصّصة توجّه بينها خدمة Flask.

Yearالسنة
2025
Roleالدور
Engineer + designerمهندسة + مصمّمة
Stackالتقنيات
FigmaFlutterDartPythonFlaskSupabaseGoogle GeminiLoRARandom ForestIEEE 830
Builtمبنيّ
A working bilingual app rather than a prototypeتطبيق ثنائي اللغة يعمل، لا نموذجاً أولياً
3 models3 نماذج
Vision, chat and nutrition under one interfaceرؤية ومحادثة وتغذية تحت واجهة واحدة
Arabic-firstعربي أولاً
Designed in RTL before any Flutter code existedصُمّم بالعربية قبل وجود أي كود Flutter
Refusesيرفض
Sends you to a doctor instead of guessingيحيلك إلى طبيبة بدل أن يخمّن

§ Overviewنظرة عامة

What it is, and what I owned.ما هو، وما الذي تولّيته.

It carries three capabilities: a chatbot, a medical-image helper and a nutrition guide. This was my graduation project at ASPU, where the requirement was a working product rather than a slide deck.يحمل ثلاث قدرات: روبوت محادثة، ومساعداً للصور الطبية، ودليل تغذية. وكان مشروع تخرّجي في ASPU، والمطلوب فيه منتجٌ يعمل لا عرض شرائح.

Roleالدور
Designed and built it on my ownصمّمته وبنيته وحدي
Timelineالإطار الزمني
Graduation project · 2025مشروع تخرّج · 2025
Platformالمنصّة
Flutter · iOS + Android
Usersالمستخدمون
Arabic-speaking mothersأمّهات ناطقات بالعربية
Scopeالنطاق
Research, Figma, Flutter, AIبحث، وFigma، وFlutter، وذكاء اصطناعي
User rolesأدوار المستخدمين
Four, designed separatelyأربعة، صُمّمت منفصلة

§ Problemالمشكلة

Arabic maternal health, in a market built in English.صحّة أمومة بالعربية، في سوقٍ مبنيّ بالإنجليزية.

If you're pregnant in the Arab world, there's a wide gap between the question you can type in Arabic and an answer you can trust. Digital health runs on English. The Arabic resources that do exist tend to be static articles, or general chatbots that will happily invent medical advice. In maternal care that's worse than getting no answer at all.إن كنتِ حاملاً في العالم العربي فهناك فجوة واسعة بين السؤال الذي تستطيعين كتابته بالعربية وجوابٍ تثقين به. الصحة الرقمية تعمل بالإنجليزية. والموارد العربية الموجودة إمّا مقالات ثابتة أو روبوتات عامة لا تتردّد في اختراع نصيحة طبية. وهذا في رعاية الأمومة أسوأ من ألّا تحصلي على جواب أصلاً.

I picked an ambitious brief on purpose: a real Arabic health app for mothers in Damascus. That made the language problem a design problem first and an engineering problem second.اخترتُ مطلباً طموحاً عن قصد: تطبيق صحّة عربي حقيقي لأمّهات دمشق. وهذا جعل مشكلة اللغة مشكلةَ تصميمٍ أولاً ومشكلةَ هندسةٍ ثانياً.

§ Researchالبحث

Mapping the journeys before designing the screens.رسم الرحلات قبل تصميم الشاشات.

Before any UI I mapped four user journeys in Figma and spent time on where the existing Arabic health tools fall apart. Two findings shaped everything after that.قبل أي واجهة رسمتُ أربع رحلات مستخدم في Figma، وأمضيتُ وقتاً على المواضع التي تتفكّك فيها أدوات الصحة العربية الموجودة. اكتشافان شكّلا كل ما جاء بعد ذلك.

Arabic has registers. Medical information needs the precision of Modern Standard Arabic. A woman asking about her own pregnancy needs warmth. The same app has to manage both.للعربية مستويات. المعلومة الطبية تحتاج دقّة الفصحى. والمرأة التي تسأل عن حملها تحتاج دفئاً. والتطبيق نفسه عليه أن يتولّى الاثنين.

A wrong answer here is a safety problem. A chatbot that invents a dosage is a liability, so the product had to be built to recognize the edge of what it knows and say so.الجواب الخاطئ هنا مشكلة سلامة. الروبوت الذي يخترع جرعة مسؤوليةٌ خطيرة، فكان على المنتج أن يُبنى بحيث يعرف حدّ ما يعرفه ويقوله.

The use-case map of the first-time-mother services, written in Arabic.مخطط حالات الاستخدام لخدمات الأم لأول مرة، مكتوباً بالعربية.

§ Users & personasالمستخدمون والـ Personas

Who I designed for.لمن صمّمتُ.

From those four journeys I worked out who was actually behind them: a short story each, what they wanted, and the thing that was frustrating them.من تلك الرحلات الأربع استخرجتُ مَن يقف خلفها فعلاً: قصة قصيرة لكل واحدة، وما تريده، والشيء الذي كان يُحبطها.

Lina, pregnant for the first timeلينا، حامل لأوّل مرّة

Primary user · 28 · Damascusالمستخدمة الأساسية · 28 · دمشق

“I want to ask about my pregnancy in Arabic and actually trust what comes back, instead of choosing between a stiff article and a chatbot that might be wrong.أريد أن أسأل عن حملي بالعربية وأثق فعلاً بما يعود إليّ، بدل أن أختار بين مقال متيبّس وروبوت قد يكون مخطئاً.”

Goalsالأهداف

Clear, warm guidance for each week of the pregnancy, and a quick read on whether a symptom needs a doctor.إرشاد واضح ودافئ لكل أسبوع من الحمل، وقراءة سريعة لما إذا كان عَرَضٌ ما يحتاج طبيبة.

Frustrationsالإحباطات

Apps built in English that don't speak her language, and Arabic chatbots that invent medical advice with total confidence.تطبيقات مبنيّة بالإنجليزية لا تتحدّث لغتها، وروبوتات عربية تخترع نصائح طبية بثقة تامة.

Dr. Rana, the OB-GYN the app defers toد. رنا، طبيبة النساء التي يحيل إليها التطبيق

Secondary user · clinicianمستخدمة ثانوية · طبيبة

“When the app isn't sure, I want it to send my patient to me, so she arrives informed instead of misinformed.حين لا يكون التطبيق متأكّداً أريده أن يرسل مريضتي إليّ، فتصل مطّلعة بدل أن تصل مضلَّلة.”

Goalsالأهداف

Patients who show up with good questions instead of myths, and a tool that knows where it stops.مريضات يأتين بأسئلة جيدة بدل الخرافات، وأداة تعرف حيث تتوقّف.

Frustrationsالإحباطات

Spending the appointment undoing something frightening a patient read somewhere unreliable.أن تمضي الموعد في تفنيد شيء مخيف قرأته المريضة في مكان غير موثوق.

§ Design strategyاستراتيجية التصميم

Trust was the constraint everything else bent around.كانت الثقة القيد الذي انحنى حوله كل شيء آخر.

Every decision came back to one question: would a mother trust this with a question about her pregnancy? That question decided the models, the tone, and what happens when the app doesn't know.كل قرار كان يعود إلى سؤال واحد: هل تأتمن أمٌّ هذا على سؤال عن حملها؟ ذلك السؤال قرّر النماذج والنبرة وما يحدث حين لا يعرف التطبيق.

Goalالهدف
A health companion mothers trust in Arabicرفيق صحّي تأتمنه الأمّهات بالعربية
Hypothesisالفرضية
Specialized models plus an explicit refusal beat one general modelنماذج متخصّصة مع رفض صريح تتفوّق على نموذج عام واحد
Priorityالأولوية
Safety and tone ahead of answer coverageالسلامة والنبرة قبل تغطية الإجابات
Tradeoffالمفاضلة
Less impressive demos in exchange for trustعروض أقل إبهاراً مقابل الثقة

§ Design processعملية التصميم

RTL is a design language, not a setting you switch on.اليمين لليسار لغة تصميم، لا إعداداً تُشغّله.

Every screen existed in Figma, in Arabic, before there was a single Flutter widget. Designing that way forced decisions that an English-first process never puts in front of you.كل شاشة وُجدت في Figma، بالعربية، قبل أن يوجد عنصر Flutter واحد. والتصميم بهذه الطريقة فرض قرارات لا تضعها أمامك عمليةٌ تبدأ بالإنجليزية.

01

Standard Arabic for medicine, Levantine for conversation.فصحى للطبّ، وشامية للمحادثة.

Challengeالتحدّي

Medical information needs the precision of Modern Standard Arabic. But a chatbot that answers in formal MSA comes across cold, which is the wrong tone for someone asking about her own pregnancy.المعلومة الطبية تحتاج دقّة الفصحى. لكن روبوتاً يجيب بفصحى رسمية يبدو بارداً، وهذه نبرة خاطئة لمن تسأل عن حملها.

Decisionالقرار

MSA for anything medical: diagnoses, nutrition figures, image descriptions. A warmer register leaning Levantine for the chatbot's conversational parts.الفصحى لكل ما هو طبي: التشخيصات، وأرقام التغذية، وأوصاف الصور. ومستوى أدفأ يميل للشامية لأجزاء المحادثة في الروبوت.

Outcomeالنتيجة

Users never notice the rule, but they feel it. The chatbot reads like a friend who happens to know medicine, rather than a disclaimer.لا يلاحظ المستخدمون القاعدة أبداً لكنهم يحسّونها. يُقرأ الروبوت كصديقة تعرف الطبّ، لا كإخلاء مسؤولية.

01 / 04

Bilingual, Arabic firstثنائي اللغة، عربي أولاً

Arabic and English both complete, with full RTL. Because the Arabic came first, neither language reads like it was added later.العربية والإنجليزية كاملتان، بدعم RTL تامّ. ولأن العربية جاءت أولاً، لا تبدو أي لغة كأنها أُضيفت لاحقاً.

§ Technical architectureالبنية التقنية

One Flutter app. Three specialized models. One Flask service in between.تطبيق Flutter واحد. ثلاثة نماذج متخصّصة. وخدمة Flask واحدة بينهما.

I treated the AI layer as three independent capabilities, because the questions mothers actually ask don't fit one model. Flask classifies the intent of an incoming request, sends it to the right model, and formats the Arabic response with its source. Supabase handles auth, the profile, pregnancy-week tracking, and it keeps conversation history so a session picks up where the last one ended.تعاملتُ مع طبقة الذكاء الاصطناعي كثلاث قدرات مستقلّة، لأن الأسئلة التي تطرحها الأمّهات فعلاً لا تناسب نموذجاً واحداً. يصنّف Flask نيّة الطلب الوارد، ويرسله إلى النموذج المناسب، وينسّق الجواب العربي مع مصدره. ويتولّى Supabase المصادقة والملف الشخصي وتتبّع أسبوع الحمل، ويحفظ سجلّ المحادثة لتُكمل الجلسة من حيث انتهت السابقة.

▦ Architectureالبنية · BloomBelly system topologyنظام BloomBelly

SVG

CLIENTFlutter AppiOS · Android · RTLORCHESTRATORPython · Flaskintent → routingVISIONGoogle GeminiQ&A · ARABICLoRA Transformercalibrated refusalsNUTRITIONRandom ForestDATA · AUTHSupabase · Postgres
Flutter client → Flask orchestrator → 3 AI models, auth-gated by Supabase.عميل Flutter ← مُنسّق Flask ← ٣ نماذج ذكاء اصطناعي، محميّة بمصادقة Supabase.
Imaging modelنموذج التصوير
Google Gemini
Chatbot modelنموذج المحادثة
LoRA-tuned LLMنموذج لغوي مضبوط بـLoRA
Nutrition modelنموذج التغذية
Random Forest
Orchestratorالمنسّق
Python · Flask
Auth & dataالمصادقة والبيانات
Supabase
Clientالعميل
Flutter · iOS + Android
ADR-001

Three models, each with a screen built for it.ثلاثة نماذج، لكل واحد شاشة مبنيّة له.

Contextالسياق

One fine-tuned LLM could have answered questions, classified nutrition and described images. That's a single model, a single screen, a single thing to deploy.نموذج لغوي واحد مضبوط كان يمكنه الإجابة وتصنيف التغذية ووصف الصور. نموذج واحد، وشاشة واحدة، وشيء واحد تنشره.

Decisionالقرار

Three specialized models instead: Gemini for vision, a LoRA-tuned transformer for questions, Random Forest for nutrition. Each one got a screen built around how that capability is actually used: a camera for imaging, a chat for questions, a guided form for nutrition.ثلاثة نماذج متخصّصة بدلاً من ذلك: Gemini للرؤية، ومحوّل مضبوط بـLoRA للأسئلة، وRandom Forest للتغذية. ولكل واحد شاشة مبنيّة حول الطريقة التي تُستخدم بها تلك القدرة فعلاً: كاميرا للتصوير، ومحادثة للأسئلة، ونموذج موجَّه للتغذية.

Consequencesالنتائج

Each model can be audited on its own, which matters in a health context. The interface came out cleaner too, because users reach for the tool that fits the question rather than one box that tries to cover everything.يمكن تدقيق كل نموذج على حدة، وهذا يهمّ في سياق صحّي. وخرجت الواجهة أنظف أيضاً، لأن المستخدمين يذهبون إلى الأداة التي تناسب السؤال بدل صندوق واحد يحاول تغطية كل شيء.
ADR-002

Supabase and Flask, so sessions remember.Supabase وFlask، لتتذكّر الجلسات.

Contextالسياق

Firebase is what student healthcare apps usually pick. Cheaper to start, faster auth, no servers to look after.Firebase ما تختاره عادةً تطبيقات الصحة الطلابية. أرخص في البداية، ومصادقة أسرع، ولا خوادم تعتني بها.

Decisionالقرار

Supabase on Postgres with a Flask orchestrator. The clinical side needed real relational data for cycles, conditions and visits, and it needed conversation history that survives between sessions.Supabase على Postgres مع منسّق Flask. الجانب السريري احتاج بيانات علائقية حقيقية للدورات والحالات والزيارات، واحتاج سجلّ محادثة يبقى بين الجلسات.

Consequencesالنتائج

Nobody has to explain themselves to the chatbot twice, and that continuity is most of the experience. Row-level security gave per-profile isolation for free, which made the extra operational work worth doing.لا أحد مضطرّ أن يشرح نفسه للروبوت مرتين، وتلك الاستمرارية هي معظم التجربة. وأعطى أمان مستوى الصف عزلاً لكل ملف شخصي بلا مقابل، وهذا ما جعل العمل التشغيلي الإضافي يستحقّ.

§ Challengesالتحدّيات

What was hard, and what I traded away.ما كان صعباً، وما تنازلتُ عنه.

Arabic rendering took longer than the AI did. Calling a model is a few lines. Numbers, punctuation and English drug names sitting inside Arabic sentences each needed explicit BiDi handling, checked on real devices on both platforms.استغرق عرض العربية وقتاً أطول من الذكاء الاصطناعي. استدعاء نموذجٍ بضعة أسطر. أما الأرقام وعلامات الترقيم وأسماء الأدوية الإنجليزية داخل الجمل العربية فاحتاج كل منها معالجة BiDi صريحة، مفحوصة على أجهزة حقيقية على المنصّتين.

ADR-003

A refusal designed as a real state, not an error.رفضٌ مصمَّم كحالة حقيقية، لا كخطأ.

Contextالسياق

A confident LLM that hallucinates a dosage is dangerous in maternal care, and general Arabic chatbots fail badly at exactly this.نموذج لغوي واثق يهلوس جرعةً خطيرٌ في رعاية الأمومة، والروبوتات العربية العامة تفشل في هذا تحديداً فشلاً ذريعاً.

Decisionالقرار

Under a confidence threshold the chatbot answers “استشيري طبيبتك / Consult your doctor” instead of guessing. I drew it in Figma as a warm, ordinary state with the same care as any other screen, so it never looks like a red warning box.تحت عتبة ثقة معيّنة يجيب الروبوت بـ «استشيري طبيبتك» بدل أن يخمّن. رسمتُها في Figma كـحالة دافئة عادية بالعناية نفسها التي أعطيها لأي شاشة، فلا تبدو أبداً كصندوق تحذير أحمر.

Consequencesالنتائج

It demos less impressively, and it's the version I'd be willing to put in front of a real pregnant woman. How the refusal was designed mattered as much as where I set the threshold.يبدو أقلّ إبهاراً في العرض، وهو النسخة التي أقبل أن أضعها أمام امرأة حامل حقيقية. وكيفية تصميم الرفض كانت بأهمية موضع العتبة نفسها.

§ Outcomesالنتائج

A product I can defend, and a way of working.منتج أستطيع الدفاع عنه، وطريقة عمل.

BloomBelly shipped as a working Arabic app and carried my graduation project: three AI capabilities under one bilingual interface, tuned to hand a question to a clinician rather than guess at it. Nothing in it invents medical advice, by design.أُطلق BloomBelly تطبيقاً عربياً يعمل، وحمل مشروع تخرّجي: ثلاث قدرات ذكاء اصطناعي تحت واجهة واحدة ثنائية اللغة، مضبوطة لتسلّم السؤال إلى طبيبة بدل أن تخمّنه. ولا شيء فيه يخترع نصيحة طبية، بحكم التصميم.

What stayed with me is the method. The Figma file, Arabic screens first and English after, became the spec; when something looked wrong in Flutter, Figma was the reference I checked against. Designing before building saved weeks, and I've worked that way on everything since.ما بقي معي هو المنهج. ملف Figma، شاشاته العربية أولاً والإنجليزية بعدها، صار هو المواصفة؛ وحين بدا شيء خطأً في Flutter كان Figma هو المرجع الذي أراجعه. التصميم قبل البناء وفّر أسابيع، وعملتُ بهذه الطريقة في كل شيء بعده.

§ Validationالتحقّق

How I'd test it with mothers.كيف سأختبره مع الأمّهات.

The architecture is ready to be evaluated; the evidence is what's missing. My plan is a moderated usability study with Arabic-speaking mothers around three tasks: ask a medical question, read a refusal, run a growth check. Then I'd pull the sessions into an affinity diagram and turn the clusters into a prioritized list.البنية جاهزة للتقييم؛ والناقص هو الدليل. خطّتي دراسة قابلية استخدام موجَّهة مع أمّهات ناطقات بالعربية حول ثلاث مهامّ: طرح سؤال طبي، وقراءة رفض، وإجراء فحص نموّ. ثم أجمع الجلسات في مخطّط تقارب وأحوّل العناقيد إلى قائمة مرتّبة بالأولوية.

  • P0The refusal has to read as care rather than failure. That's the moment trust is won or lost.على الرفض أن يُقرأ عنايةً لا فشلاً. تلك هي اللحظة التي تُكسَب فيها الثقة أو تُفقَد.
  • P1Mixed Arabic and English medical terms have to render correctly on real devices before any answer can be judged at all.على المصطلحات الطبية المختلطة عربي وإنجليزي أن تُعرَض صحيحة على أجهزة حقيقية قبل أن يُحكَم على أي جواب أصلاً.
  • P2Onboarding should get the four user roles across without a wall of text.على التهيئة أن توصّل أدوار المستخدمين الأربعة دون جدار من النصّ.

§ Reflectionتأمّل

What I'd carry forward.ما سأحمله معي.

BloomBelly taught me that in a regulated domain the interesting work is restraint: deciding what the product should refuse to do. The refusal pattern and the Figma-first habit are the two things I've reused on every project since.علّمني BloomBelly أن العمل المثير في مجال منظَّم هو الانضباط: أن تقرّر ما ينبغي للمنتج أن يرفض فعله. ونمط الرفض وعادة البدء من Figma هما الشيئان اللذان أعدتُ استخدامهما في كل مشروع بعده.

Taking it further would mean real clinical validation and structured testing with mothers. The architecture can take it; the evidence is what a production health product would need next.المضيّ به أبعد يعني تحقّقاً سريرياً حقيقياً واختباراً منظَّماً مع الأمّهات. البنية تتحمّل ذلك؛ والدليل هو ما سيحتاجه تالياً منتجٌ صحّي في الإنتاج.