What Inspired the Project? The inspiration came from a pressing, real-world issue affecting millions of Ugandans daily: Mobile Money (MoMo) fraud. Social engineering scams ranging from distressed callers claiming a "wrongful cash transfer" to fraudsters impersonating telecom customer care agents asking for PINs disproportionately target everyday citizens.
While smartphone users have access to various web resources, many victims are analog feature phone users who rely purely on USSD menus. The goal was to build a comprehensive, community-driven registry that bridges this gap, raising awareness and providing tools to instantly verify suspicious numbers across all major Ugandan networks (MTN, Airtel, Lycamobile, and UTL).
🛠️ How the Project Was Built The application was engineered with a focus on responsiveness, performance, and highly intuitive user experience.
Frontend Architecture: Built using React and TypeScript, styled with a modern, high-contrast Tailwind CSS interface featuring a sleek, semi-transparent sticky header (bg-slate-900/95 backdrop-blur-md) for smooth scannability.
The Offline USSD Simulator: To capture the authentic environment where these scams occur, a interactive feature phone sandbox (styled as a classic Nokia 3310) was embedded. It simulates real-time, offline USSD dial codes like *256*5# so users can practice identifying scams without needing an active internet connection.
MOMO Copilot AI Autofill: Integrated Gemini functionality to allow users to paste messy, unstructured scam SMS texts or upload screenshots of fraudulent messages. The AI instantly extracts fields like the phone number, risk rating, scam category, and telecom operator to eliminate manual data entry barriers.
Community Registry Explorer: Designed a dynamic data grid displaying active flags, specific fraud tactics, and real-time community reports.
In the MOMO Scam Checker application, Gemini APIs and Google AI tools are utilized to power the MOMO Copilot AI Autofill feature.
Here is exactly how the AI is integrated into the workflow to protect users from mobile money fraud:
- Structured Data Extraction (Text Input) When a user receives a suspicious SMS (e.g., "Y'ello! You have won 1,000,000 UGX in the promotion! Call 0772109843 to claim..."), they don't have to manually dissect it.
The Gemini Role: The raw text is passed to the Gemini API (specifically optimized using a lightweight model like Gemini Flash for instant response times).
The Outcome: The model processes the unstructured text and uses structured output capabilities to instantly extract and autofill key fields in the reporting form:
Phone Number: Automatically isolates the fraudster's digits (+256772109843).
Operator: Identifies the carrier (e.g., MTN Uganda) based on the prefix and context.
Category: Labels the scam type (e.g., Lottery Win).
- Multimodal Screenshot Analysis (Vision Input) Scammers often operate via complex WhatsApp chats, mobile money transaction receipts, or system alert pop-ups. Users can directly drag and drop or upload screenshots of these interactions.
The Gemini Role: Leveraging Gemini’s multimodal capabilities, the API accepts both text prompts and image files (PNG, JPG) simultaneously.
The Outcome: The model performs Optical Character Recognition (OCR) to read the text inside the image, analyzes the visual layout to confirm it's an incident, and parses the relevant fraud details directly into the form without requiring the user to type a single word.
- Contextual Risk Assessment & Classification Beyond simple extraction, the AI acts as an initial triage layer.
The Gemini Role: The model evaluates the semantic meaning of the incident description (e.g., "Asked me to press *165# to return wrong money...").
The Outcome: It maps the behavior against known Ugandan scam tactics (like the "Wrong Number Reversal" or "Wewole Loan Scam") to suggest a Risk Rating (🚨 SCAM or ⚠️ WARNING) and generates a concise, clean summary for the Incident Reason & Details section.
Summary of Benefits in our App: Speed: Reduces the friction of reporting a scam from minutes to seconds.
Accuracy: Ensures phone numbers and scam categories are logged uniformly, preventing human typos in the community registry database.
Accessibility: Allows everyday users to simply feed raw data or images to an intelligent assistant rather than navigating complex dropdowns manually.
🧠 What I Learned Building this application provided deep insights into localized cybersecurity and UX design:
Inclusive Design Matters: Creating tools for a diverse demographic means designing for both high-end smartphone users and individuals using classic button phones. The simulator proved that educational tools must mimic the actual user environment to be effective.
The Power of Localized Context: Fraud patterns are heavily regionalized. Tailoring the app specifically to Ugandan fraud categories (e.g., Wewole Loan scams, School Emergency scams) makes the tool instantly recognizable and trustworthy for the target audience.
⚡ Challenges Faced Every project comes with its unique set of hurdles, and this one was no exception:
Perfecting the USSD Simulation Sandbox: Mimicking state-based phone keypad inputs and custom text display updates within a standard web browser environment required meticulous state management to ensure it felt identical to dialing an actual shortcode.
Balancing Urgency with UI Cleanliness: Security apps can easily become cluttered with frantic text warnings. The challenge lay in cleanly placing a high-priority MOMO Security Tip card directly next to the QR Code generator and partner telecom logos at the bottom layout without overwhelming the visual hierarchy.
Parsing Chaotic Scam Text: Scammers intentionally misspell words or mix languages (Luganda and English) to bypass automated filters. Fine-tuning the AI autofill feature to reliably capture clean numbers from highly unstructured data required rigorous testing. THANK YOU
Built With
- css3
- gemini-api
- google-ai-studio
- inline-svgs
- javascript
- node.js
- offline-ussd-simulator
- react
- vite


Log in or sign up for Devpost to join the conversation.