Mobile · AI · Graduation projectجوال · ذكاء اصطناعي · مشروع تخرّج
● Graduation project, 2025مشروع تخرّج، 2025BloomBelly: 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
§ 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.الجواب الخاطئ هنا مشكلة سلامة. الروبوت الذي يخترع جرعة مسؤوليةٌ خطيرة، فكان على المنتج أن يُبنى بحيث يعرف حدّ ما يعرفه ويقوله.
§ 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الأهداف
Frustrationsالإحباطات
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الأهداف
Frustrationsالإحباطات
§ 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 واحد. والتصميم بهذه الطريقة فرض قرارات لا تضعها أمامك عمليةٌ تبدأ بالإنجليزية.
Standard Arabic for medicine, Levantine for conversation.فصحى للطبّ، وشامية للمحادثة.
Challengeالتحدّي
Decisionالقرار
Outcomeالنتيجة
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
- Imaging modelنموذج التصوير
- Google Gemini
- Chatbot modelنموذج المحادثة
- LoRA-tuned LLMنموذج لغوي مضبوط بـLoRA
- Nutrition modelنموذج التغذية
- Random Forest
- Orchestratorالمنسّق
- Python · Flask
- Auth & dataالمصادقة والبيانات
- Supabase
- Clientالعميل
- Flutter · iOS + Android
Three models, each with a screen built for it.ثلاثة نماذج، لكل واحد شاشة مبنيّة له.
Contextالسياق
Decisionالقرار
Consequencesالنتائج
Supabase and Flask, so sessions remember.Supabase وFlask، لتتذكّر الجلسات.
Contextالسياق
Decisionالقرار
Consequencesالنتائج
§ 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 صريحة، مفحوصة على أجهزة حقيقية على المنصّتين.
A refusal designed as a real state, not an error.رفضٌ مصمَّم كحالة حقيقية، لا كخطأ.
Contextالسياق
Decisionالقرار
Consequencesالنتائج
§ 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.المضيّ به أبعد يعني تحقّقاً سريرياً حقيقياً واختباراً منظَّماً مع الأمّهات. البنية تتحمّل ذلك؛ والدليل هو ما سيحتاجه تالياً منتجٌ صحّي في الإنتاج.
