دليل عملي لإنشاء تطبيق موبايل يلتقط الإيصالات، يستخرج البيانات عبر OCR، يصنّف المصاريف، ويصدرها لأدوات المحاسبة.

قبل اختيار الميزات أو تصميم الشاشات، كن محدداً في المشكلة التي تحلها. "تتبع المصاريف" واسع جداً؛ الألم الحقيقي غالباً هو فقدان الإيصالات، الإدخال اليدوي الممل، ودورات التعويض البطيئة.
اكتب بيان مشكلة من جملة واحدة يمكنك اختباره عند كل قرار:
«مساعدة الأشخاص على التقاط إيصال في ثوانٍ، تحويله تلقائياً إلى مصروف مكتمل، وإرساله دون ملاحقة التفاصيل المفقودة.»
هذا يحافظ على نطاق المشروع ويمنع تحويل التطبيق إلى أداة مالية عامة.
معظم تطبيقات الإيصالات الرقمية تخدم أكثر من جمهور واحد:
اختر مستخدماً أساسياً أولاً (غالباً الموظفون أو المستقلون)، ثم صمّم تجربة فريق المالية كطبقة "مراجعة" بدلاً من سير العمل الأساسي.
حافظ على النسخة الأولى مركزة على مجموعة صغيرة من النتائج:
اتفق على بضعة مقاييس تعكس قيمة حقيقية:
عندما يكون الهدف والمستخدمون والوظائف والمقاييس واضحين، يصبح باقي البناء سلسلة من المقايضات الواضحة بدل التخمين.
قبل اختيار الميزات أو الشاشات، دوّن رحلة المستخدم من طرف إلى طرف التي يجب أن يدعمها تطبيقك. سير عمل واضح يمنع أن يصبح "مسح الإيصالات" كومة أدوات مفصولة.
على الأقل، ارسم المسار الكامل:
لكل خطوة، سجّل ما يراه المستخدم، ما البيانات التي تُنشأ، وما الذي يجب أن يحدث تلقائياً (مثال: حساب الإجماليات، توحيد العملة، اكتشاف الضرائب).
قرر نقاط الدخول الرئيسية، لأنها تشكّل واجهة المستخدم وفرضيات الباكند:
اختر "بداية افتراضية" واحدة للـMVP، ثم ادعم البقية كمسارات ثانوية.
وضّح من يمكنه فعل ماذا:
صمّم قواعد التسليم مبكراً (مثال: متى يصبح المصروف للقراءة فقط، من يمكنه التجاوز، وكيف تُسجل التغييرات).
وثّق حالات العالم الواقعي المعقّدة: المرتجعات/المبالغ المستردة، تقسيم الفواتير، متعدد العملات، البقشيش، الإيصالات المفقودة، واليومية. حتى إن لم تَؤتِها آلية كاملة في الإصدار الأول، يجب أن يحتوي سير العمل على مسار واضح لا يعيق المستخدمين.
نموذج بيانات جيد يبسط كل شيء: بحث أسرع، تعديلات يدوية أقل، وتصديرات أنظف للمحاسبة. المفتاح هو فصل ما التقطه المستخدم (الملف الأصلي) عما فهمه التطبيق (حقول منظمة يمكن ترشيحها والتقرير عنها).
عامل الإيصال كدليل (ملف زائد نتائج الاستخراج) والمصروف كسجل عمل يُستخدم للتعويض، فحص السياسات، والتقارير.
قد يحتوي مصروف واحد على إيصال واحد، عدة إيصالات (تقاسم دفعات)، أو لا يحتوي إيصالاً (إدخال يدوي)، لذا اجعل العلاقة مرنة.
خطط لحقل capture_method بحيث يمكنك التوسع خارج مسح الكاميرا:
يساعد هذا الحقل أيضاً في استكشاف مشكلات الجودة وضبط OCR/التحليل لاحقاً.
على الأقل، احفظ هذه الحقول على المصروف (حتى لو استُخرجت بواسطة OCR): التاجر، التاريخ، الإجمالي، الضريبة، العملة، طريقة الدفع. احتفظ بالنص الخام والقِيَم المنظّمة (مثلاً: رموز عملة ISO، تواريخ مُحَلّلة) حتى تكون التعديلات قابلة للعكس وملموسة للتفسير.
احفظ أيضاً ميتا-داتا مثل:
merchant_normalized (للبحث المتسق)transaction_last4 أو مرجع بطاقة مؤمنة (لتجنّب المكرّرات)timezone وlocale (لتحليل التواريخ/الضرائب بشكل صحيح)خزّن الصورة/الـPDF الخام منفصلة عن البيانات المستخرجة/المنظّمة. هذا يمكّنك من إعادة المعالجة (OCR أفضل لاحقاً) بدون فقدان الأصلي.
صمّم البحث للأسئلة الحقيقية التي يطرحها المستخدمون:
أضف فهارس لهذه الحقول مبكراً؛ هذا الفرق بين "التمرير إلى الأبد" وإجابات فورية.
ضمن قواعد الاحتفاظ في مخططك، لا تتركها كبعد لاحق:
بهذه القطع، يمكن لتطبيقك التدرج من التقاط مصروف شخصي إلى الامتثال على مستوى الشركة دون إعادة كتابة الأساس.
التقاط الإيصال هو اللحظة التي يقرر فيها المستخدمون إن كان تطبيقك سلساً أم مزعجاً. عامل الكاميرا كـ "ماسح"، لا كأداة تصوير: اجعل المسار الافتراضي سريعاً، موجهًا، ومتسامحاً.
استخدم كشف الحواف الحي والاقتصاص التلقائي حتى لا يحتاج المستخدمون لتأطير مثالي. أضف تلميحات فعلية وحديثة ("اقترب أكثر"، "تجنّب الظلال"، "ثبت الهاتف") وتحذير وميض عندما تكون الأوراق عاكسة.
التقاط متعدد الصفحات مهم لفواتير الفنادق والإيصالات الطويلة. دع المستخدمين يلتقطون صفحات متتالية في تدفق واحد ثم يؤكدون مرة واحدة.
قليل من المعالجة غالباً ما يحسّن الدقة أكثر من تغيير محرك OCR:
شغّل هذه السلسلة باستمرار ليُعرض على OCR مدخلات متوقعة.
OCR على الجهاز رائع للسرعة، العمل دون اتصال، والخصوصية. OCR السحابي قد يكون أفضل للصور منخفضة الجودة والتخطيطات المعقدة. نهج عملي هو هجيني:
كن شفافاً بشأن ما يُحفّز التحميل وامنح المستخدمين تحكماً.
ابدأ بالحقول ذات القيمة العالية: التاجر، التاريخ، العملة، الإجمالي، الضريبة، والبقشيش. البنود التفصيلية مفيدة لكنها أصعب بكثير—عاملها كتحسين لاحق.
خزّن درجة ثقة لكل حقل، لا مجرد ثقة على مستوى الإيصال. هذا يسمح لك بالإشارة فقط لما يحتاج تصحيحاً (مثلاً: "الإجمالي غير واضح").
بعد المسح، عرض شاشة مراجعة سريعة مع تصحيحات بنقرة واحدة (تعديل الإجمالي، ضبط التاريخ، تغيير التاجر). سجّل التصحيحات كإشارات تدريب: إذا صحح المستخدمون نفس الخطأ مراراً، يمكن للاستخراج أن يتعلم أنماطاً شائعة ويتحسّن بمرور الوقت.
الالتقاط الجيد نصف العمل فقط. للحفاظ على نظافة المصاريف (ولتقليل الرسائل بين الموظف والمالية)، يحتاج تطبيقك لتصنيف سريع، ميتا-داتا مرنة، وحواجز قوية ضد التكرار.
ابدأ بقواعد حتمية يفهمها المستخدمون ويمكن للمسؤولين إدارتها. أمثلة: "Uber → مواصلات"، "Starbucks → وجبات"، أو "USD + رموز مطار → سفر". القواعد متوقعة، قابلة للتدقيق، وتعمل دون اتصال.
فوق ذلك، أضف اقتراحات مبنية على ML لتسريع الإدخال دون فقدان التحكم. اجعل واجهة المستخدم واضحة: أظهر الفئة المقترحة، سبب الاقتراح (مثلاً، "بناءً على التاجر"), ودع المستخدم يتجاوزها بنقرة واحدة.
معجّل ثالث هو المفضلات: الفئات المستخدمة مؤخراً لكل تاجر، الفئات المثبتة، و"آخر استخدام لهذا المشروع". هذه غالباً ما تتفوق على "الذكاء" في السرعة الواقعية.
معظم المؤسسات تحتاج لأكثر من فئة واحدة. ابنِ حقولاً مخصصة مثل المشروع، مركز التكلفة، العميل، ووسوم السياسة (مثلاً "قابل للفوترة"، "شخصي"، "متكرر"). اجعلها قابلة للتكوين لكل مساحة عمل، مع قواعد إلزامية/اختيارية حسب السياسة.
التقسيم شائع: فاتورة فندق تُقسّم عبر مشاريع، أو وجبة جماعية مقسمة على الحضور.
ادعم تقسيم مصروف واحد إلى خطوط متعددة بفئات ومشاريع أو حضور مختلف. للحسابات المشتركة، اسمح للمستخدمين بتحديد "المدفوع من قبل" وتوزيع الحصص—مع الحفاظ على إيصال أساسي واحد.
شغّل فحوص السياسات عند الحفظ وعند الإرسال:
بالنسبة للتكرارات، اجمع إشارات متعددة:
عندما تكتشف تكراراً محتملاً، لا تحظر فوراً—عرض "مراجعة" مع تفاصيل جنباً إلى جنب وخيار آمن "الاحتفاظ بكليهما".
فشل أو نجاح تطبيق الإيصالات والمصاريف يعتمد على الموثوقية: هل يمكن للناس التقاط إيصال في مقهى بجوار القبو، الوثوق بأنه لن يختفي، والعثور عليه لاحقاً عندما تطلبه المالية؟ قرارات البنية التي تتخذها مبكراً تحدد هذا الشعور اليومي.
للـMVP، قرر ما إذا كنت تُحسّن لسرعة الإطلاق أو تجربة أصلية متكاملة.
التقاط الإيصال يحدث عندما تكون الاتصال غير موثوق. عامل الهاتف كمكان الحفظ الأول.
استخدم قائمة محلية: عندما يرسل المستخدم إيصالاً، خزّن الصورة + مسودة المصروف محلياً، علمها كـ"قيد الانتظار"، وزامن لاحقاً. خطط للمحاولات المتكررة (exponential backoff)، وعرّف كيف تتعامل مع صراعات المزامنة (مثلاً: "السيرفر يفوز"، "الأحدث يفوز"، أو "اسأل المستخدم" للحالات النادرة مثل المبالغ المعدلة).
معظم الفرق تحتاج باكند لـ:
الحفاظ على هذه الخدمات قابلة للفصل يساعدك على تبديل مزودي OCR أو تحسين التحليل بدون إعادة بناء التطبيق.
الفهارس مهمة عندما يبحث الناس عن "Uber" أو يصفون "وجبات في مارس". خزّن أسماء التجار المعيارية، التواريخ، الإجماليات، العملة، الفئات، والوسوم. أضف فهارس للاستعلامات الشائعة (نطاق التاريخ، التاجر، الفئة، الحالة)، وفكّر في طبقة بحث خفيفة إذا كان "تخزين والبحث في الإيصالات" وعداً أساسياً.
استخدم مزامنة في الخلفية حيثما تدعمها المنصات، لكن لا تعتمد عليها. اعرض حالة مزامنة واضحة داخل التطبيق، وفكّر في إشعارات دفع لأحداث مثل "OCR جاهز"، "الإيصال مرفوض"، أو "المصروف موافق"، حتى لا يفتح المستخدم التطبيق فقط للتحقق.
إذا أردت التحقق من سير العمل بسرعة (التقاط → OCR → مراجعة → إرسال) قبل بناء كامل، يمكن لمنصة تطوير "vibe-coding" مثل Koder.ai أن تساعدك على إنشاء النموذج الأولي بشكل أسرع باستخدام واجهة مدفوعة بالمحادثة. مفيد خصوصاً لبناء لوحة الإدارة والباكند (مثلاً لوحة React + API بـGo + PostgreSQL)، التكرار في "وضع التخطيط"، والاستعادة بنقاط تراجع أثناء اختبار المستخدمين الحقيقيين.
الإيصالات والمصاريف تحتوي على تفاصيل شخصية وشركات حساسة: أسماء، مقاطع بطاقات، عناوين، أنماط سفر، وأحياناً أرقام ضريبية. عامل الأمان والخصوصية كميزات منتج، لا كخانات امتثال فقط.
اختر طريقة تسجيل دخول تناسب طريقة نشر التطبيق:
استخدم TLS لكل الاتصالات، وشفّر البيانات الحساسة على الخادم. الإيصالات عادةً تُخزن كصور أو PDFs، لذا خزّن الوسائط بشكل منفصل عن سجلات قاعدة البيانات (دلاء خاصة، روابط موقّتة قصيرة الصلاحية، وسياسات وصول صارمة).
على الجهاز، احفظ أقل قدر ممكن. إذا كان التخزين دون اتصال مطلوباً، شفّر الملفات المحلية وحمِ الوصول خلف أمان مستوى النظام (بصمة/رمز مرور).
حدد الأدوار مبكراً واجعل الصلاحيات واضحة:
أضف ضوابط مثل "عرض فقط" للمراجعين وقيود رؤية على فئات حساسة (مثلاً: طبية).
اجمع فقط ما تحتاجه. إذا لم تكن بحاجة لأرقام البطاقة الكاملة أو المواقع الدقيقة، لا تخزنها. كن واضحاً بشأن ما يُستخرج من الإيصالات، مدة الاحتفاظ، وكيف يمكن للمستخدمين الحذف.
حافظ على سجل تدقيق للإجراءات الرئيسية: من عدّل ماذا ومتى ولماذا (بما في ذلك تعديلات المبالغ، الفئات، والموافقات). هذا يدعم حل النزاعات، مراجعات الامتثال، واستكشاف مشاكل التكامل.
تطبيق الإيصالات والمصاريف الجيد يبدو كاختصار: المستخدمون يقضون ثوانٍ في الالتقاط، لا دقائق في التصحيح. الهدف هو تحويل "دفعت" إلى "جاهز للإرسال" بأقل عدد نقرات.
يمكن لمعظم الفرق تغطية 90% من الاستخدام الحقيقي بست شاشات:
صمّم هذه الشاشات كتيار واحد: التقاط → مراجعة → حفظ تلقائي في القائمة → الإرسال عند الجهوز.
أعطِ أولوية لالتقاط بيد واحدة: زر غالق كبير، عناصر تحكم في متناول الإبهام، وعملية "تم" واضحة. استخدم القيم الافتراضية الذكية لمنع إدخال متكرر—املأ العملة، طريقة الدفع، المشروع/العميل، والفئات الشائعة مسبقاً.
في شاشة المراجعة، استخدم "شرائح" وإجراءات سريعة (مثلاً تغيير الفئة، تقسيم، إضافة الحضور) بدلاً من نماذج طويلة. التحرير داخل السطر أفضل من دفع المستخدمين إلى صفحات تعديل منفصلة.
لن يثق الناس في الأتمتة إلا إذا فهموها. أبرز الحقول المستخرجة (التاجر، التاريخ، الإجمالي) وأضف شرحاً قصيراً لسبب الاقتراح:
علِّم الثقة بصرياً (مثلاً يحتاج انتباهاً للحقول منخفضة الثقة) حتى يعرف المستخدمون أين ينظرون.
عندما تكون جودة الالتقاط ضعيفة، لا تفشل ببساطة. اقترح إرشادات محددة: "الإيصال ضبابي—اقترب" أو "داكن جداً—شغّل الفلاش". إذا فشل OCR، قدّم حالات إعادة المحاولة وسقوط سريع يدوي للحقل المفقود فقط.
استخدم توقيعاً مقروءاً، تبايناً قوياً، وأهداف نقر كبيرة. ادعم الإدخال الصوتي للملاحظات والحضور، وتأكد من إعلان الرسائل الخطأ لقارئات الشاشة. الوصول ليس إضافة—إنه يقلل الاحتكاك للجميع.
تطبيق التقاط الإيصالات يصبح مفيداً حقاً عندما يستطيع أن يحرك المصروفات عبر المراجعة، التعويض، والمحاسبة بأقل عدد من الرسائل. هذا يعني بناء خطوات موافقة واضحة، تصدير تقارير يمكن تسليمها فوراً، والتكامل مع أدوات مالية يستخدمها فريق المالية بالفعل.
اجعل سير العمل بسيطاً، متوقعاً، ومرئياً. حلقة نموذجية:
تفاصيل التصميم مهمة: أظهر "ما تغيّر منذ آخر إرسال"، اسمح بالتعليقات داخل السطر على بند محدد، وخزّن كل انتقال حالة (Submitted → Approved → Exported، إلخ). قرر مبكراً إن كانت الموافقات تتم على مستوى المصروف، التقرير، أو كلاهما—فرق المالية غالباً تفضّل الموافقة على التقرير، بينما المديران قد يريدون فحص بنود.
ادعم التصديرات الشائعة حتى لا يعيد المستخدمون بناء تقارير يدوياً:
إذا قدّمت حزمة PDF، اجعل صفحة الملخص تتطابق مع ما يتوقعه قسم المالية: إجماليات حسب الفئة، العملة، الضريبة، وأعلام السياسات (مثلاً: "إيصال مفقود"، "تجاوز الحد").
لمنصات شائعة (QuickBooks, Xero, NetSuite)، التكامل عادةً ما يكون: إنشاء مصروفات/فواتير، إرفاق ملفات الإيصال، ومطابقة الحقول بشكل صحيح (البائع/التاجر، التاريخ، المبلغ، الفئة/الحساب، الضريبة). حتى إن لم تُطلق تكاملات أصلية فوراً، قدّم webhook/API عام حتى تتمكن الفرق من ربط تطبيقك بأدوات عملهم.
لتقليل مشكلات الدعم، اجعل التعيينات قابلة للتكوين: دع المسؤول يربط فئاتك بحساباتهم ويضع الافتراضات بحسب الفريق أو المشروع أو التاجر.
يهم المستخدمون أكثر "متى سأُدفع؟" حتى لو كانت المدفوعات تتم في قسم الرواتب، يمكن لتطبيقك تتبع حالة التعويض:
إذا لم تتمكن من تأكيد "مدفوع" تلقائياً، اسمح بخطوة تسليم يدوية أو استيراد من الرواتب لمطابقة الحالات.
لأغراض التخطيط والتكامل، يساعد توضيح ما يتضمنه كلّ مستوى في خطة الاشتراك—وربط ذلك بـ /pricing يبقي التوقعات واضحة دون إغراق القارئ بالتفاصيل.
ينجح تطبيق المصروفات عندما يزيل العمل الزائد، لا عندما يملك أطول قائمة ميزات. ابدأ بأصغر حل مفيد وأثبت أنه يعمل لأشخاص حقيقيين يقومون بتقارير مصروفات حقيقية.
ابنِ فقط ما يلزم لإكمال: التقاط → استخراج → تصنيف → تصدير.
هذا يعني أن المستخدم يمكنه التقاط إيصال، رؤية الحقول الأساسية (التاجر، التاريخ، الإجمالي) معبّأة، اختيار أو تأكيد فئة، وتصدير/مشاركة تقرير مصروف (CSV، PDF، أو ملخص بريد إلكتروني بسيط). إذا لم يستطع المستخدم إكمال هذه الحلقة بسرعة، الميزات الإضافية لن تنقذك.
دوّن ما تتعمد عدم بنائه الآن:
الحفاظ على خارطة طريق واضحة يمنع توسع النطاق ويسهّل ترتيب الأولويات بناءً على ملاحظات المستخدم.
تتبّع القمع من الالتقاط إلى الإرسال:
اقترن هذا باستطلاعات داخل التطبيق خفيفة مثل "ما الذي أزعجك في هذا الإيصال؟" عند حدوث فشل.
ابنِ مجموعة صغيرة ومتنوعة من إيصالات حقيقية (تجار وخطوط وأشكال وطباعة ولغات مختلفة). استخدمها للتقييم واختبارات التراجع حتى لا تتدهور جودة OCR بصمت.
جرّب مع فريق صغير لدورتين من إرسال المصروفات. اطلب من المستخدمين تصحيح الحقول المستخرجة وتصنيف الإيصالات؛ اعتبر تلك التصحيحات كبيانات تدريب/جودة معنونة. الهدف ليس الكمال—بل إثبات أن سير العمل يوفّر الوقت باستمرار.
إذا هدفك الوصول إلى بيتا عام بسرعة، فكّر في استخدام Koder.ai لبناء الأجزاء الداعمة (وحدة إدارة، التصديرات، لوحة تشغيل وظائف OCR، وAPI الأساسية) من مواصفات مدفوعة بالمحادثة. لأنها تدعم تصدير الشيفرة، النشر، ونقاط الاستعادة، يمكنك التكرار بسرعة مع مستخدمي البيتا والاحتفاظ بملكية الشيفرة عند نضوج المنتج.
حتى التطبيقات المصممة جيداً قد تتعثّر في أماكن متوقعة. التخطيط لهذه القضايا مبكراً يوفر أسابيع من إعادة العمل وكثير من تذاكر الدعم.
الإيصالات الحقيقية ليست صور استوديو. الورق المجعد، الحبر الباهت، وخاصة ورق الطباعة الحراري قد ينتج نصاً جزئياً أو مشوهاً.
لتقليل الفشل، وجّه المستخدمين أثناء الالتقاط (اقتصاص تلقائي، كشف الوهج، تلميحات «اقترب»)، واحتفظ بالصورة الأصلية حتى يتمكنوا من إعادة المسح دون إعادة إدخال كل شيء. عامل OCR كـ"أفضل محاولة": أبرز الحقول مع مؤشرات الثقة واجعل التعديلات سريعة. وفكّر بمسار بديل للمسحات منخفضة الثقة (إدخال يدوي أو مراجعة بشرية للإيصالات ذات القيمة العالية).
ابدأ بعبارة مشكلة ضيقة وقابلة للاختبار (مثال: «التقاط الإيصال في ثوانٍ، إنشاء مصروف تلقائياً، والإرسال دون فقدان التفاصيل»). ثم اختر المستخدم الأساسي (الموظفون أو المستقلون) وحدد 2–4 مقاييس نجاح قابلة للقياس مثل:
هذه القيود تمنع توسّع النطاق إلى تطبيق مالي عام.
حلقة MVP العملية هي: التقاط → استخراج → تصنيف → تصدير/إرسال.
في الإصدار الأول، ركّز على:
أجّل بنود الفاتورة المفصّلة، تغذية البطاقات، سياسات متقدمة، وتكاملات عميقة حتى تعمل الحلقة reliably وتوفّر الوقت.
ارسم المسار الكامل من «الدليل» إلى «قابل للدفع»:
لكل خطوة، حدد ما يتم تلقائياً، ماذا يرى المستخدم، وما البيانات التي تُنشأ. هذا يمنع بناء أدوات متفرّقة لا تكمل رحلة التعويض.
اختر نقطة بدء افتراضية واحدة لـ MVP (عادةً التقاط بالكاميرا) وأضف البقية لاحقاً:
اختيارك يؤثر على واجهة المستخدم وفرضيات الباكند (مثلاً: معالجة صور مقابل تحليل HTML/PDF). سجّل المصدر بحقل capture_method لتتمكن من تتبع جودة الاستيراد والتحويل.
نمذج الإيصال والمصروف كسجلين مرتبطين:
اجعل العلاقة مرنة: مصروف واحد قد يحتوي إيصالاً واحداً، عدة إيصالات (تقاسم دفعات)، أو لا يحتوي إيصالاً (إدخال يدوي). احفظ كل من نص OCR الخام والحقول المُنظَّمة حتى تكون التعديلات قابلة للتفسير والعكس.
صمّم تجربة كاميرا تعمل كماسح ضوئي:
قبل OCR، نفّذ تحضيرات ثابتة (تصحيح الإزاحة، تصحيح المنظور، إزالة الضوضاء، تعظيم التباين). في كثير من الحالات، هذا يرفع الدقة أكثر من تغيير محرك OCR.
نهج هجيني عادةً عملي:
أياً كان خيارك، احفظ ثقة لكل حقل (وليس فقط للإيصال) ووفّر شاشة مراجعة سريعة تُبرز الحقول التي تحتاج انتباهاً (مثال: «المبلغ غير واضح»). كن شفافاً بشأن ما يُرسل للسحابة وامنح المستخدمين تحكماً.
ابدأ بالقواعد الحتمية التي يفهمها المستخدمون، ثم أضف الاقتراحات:
ادعم أيضاً حقولاً مخصّصة مثل المشروع، مركز التكلفة، والوسوم لتتطابق التصنيفات مع سير عمل الفرق.
اجمع إشارات متعددة وتجنّب الحظر الفوري:
عند اكتشاف مكرّر محتمل، اعرض مراجعة جنباً إلى جنب واسمح بخيار «الحفاظ على الاثنين». سجّل أيضاً التعديلات المشبوهة (مثلاً: تغيير المبلغ بعد OCR) في سجل تدقيق لمراجعة المالية.
بناء التطبيق بحيث يكون offline-first أساسي:
اعرض حالات واضحة مثل «محفوظ محلياً • يتم المزامنة» واستخدم الإشعارات للأحداث المهمة (OCR جاهز، مرفوض، موافق). هذا ما يجعل التطبيق موثوقاً في شبكات ضعيفة.