🚀 Our Journey: The Making of QuickCare
💡 The Inspiration
Our inspiration is rooted in the "First Mile" of healthcare. In Ghana, thousands of patients in public hospitals spend their first hour of medical care not in a doctor's office, but in a suffocating queue just to be registered and sorted.
While the world moves toward high-speed 5G and smartphone apps, we realized that Universal Health Coverage (SDG 3.8) cannot be achieved if we leave behind the millions who rely on basic feature phones. We wanted to take the most advanced intelligence on the planet—Google Gemini AI—and deliver it through the humblest, most accessible interface: USSD. Our goal was to ensure that a "yam" phone could be a life-saving tool.
🛠️ How We Built It
We adopted a Modular Micro-Monolith architecture to ensure the system was both robust and scalable.
- The Communication Gateway: We used Africa’s Talking API to handle USSD string requests.
- The Intelligence Engine: We integrated Gemini 2.0 Flash to process natural language symptoms.
- The Backend: Built with Python and Flask, we managed real-time patient states and unique token generation.
- The Staff Interface: A responsive Bootstrap 5 Dashboard that auto-refreshes to show doctors the live queue.
- The Secure Tunnel: We used Ngrok to bridge our local development environment to the global USSD gateway.
🧠 What We Learned
Beyond the code, this hackathon taught us the power of Inclusive Design.
- Latency Matters: In USSD, every millisecond counts. We learned to optimize our AI prompts to ensure the response time $T_{res}$ remained low enough to prevent session timeouts.
- The Power of Modularity: Splitting our code into
models.py,ai_engine.py, andtemplates.pywasn't just about clean GitHub folders; it was about building a system where a UI developer, a Data Engineer, and an AI Specialist could coexist. - Empathy-Driven Engineering: We learned that the best technology isn't the one with the most features, but the one that meets the user exactly where they are.
🚧 Challenges We Faced
The road to a functional demo wasn't without its "Red Lines":
- The AI "Busy" Loop: We initially struggled with API timeouts and authentication errors. We solved this by refining our error handling and ensuring our
genai.Clientwas properly initialized within the Flask context. - The Session State Puzzle: USSD is stateless by nature. Implementing the "0 to Go Back" logic required us to manually "rewind" the user's input string, a logic challenge that pushed our string manipulation skills.
- Environment Syncing: Dealing with
Errno 2(File Not Found) and Virtual Environment conflicts taught us the vital importance of directory management and pathing in Windows vs. Linux environments.
📐 Technical Footnote: Queue Logic
To provide patients with an estimated wait time ($W_{est}$), we implemented a simple linear growth model: $$W_{est} = P_{ahead} \times T_{avg}$$ Where:
- $P_{ahead}$ is the number of patients currently in the
patients_db. - $T_{avg}$ is the average triage time (set to $10$ minutes for our prototype).
Audax Group: Bold enough to build for everyone.
Log in or sign up for Devpost to join the conversation.