🚀 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.

  1. The Communication Gateway: We used Africa’s Talking API to handle USSD string requests.
  2. The Intelligence Engine: We integrated Gemini 2.0 Flash to process natural language symptoms.
  3. The Backend: Built with Python and Flask, we managed real-time patient states and unique token generation.
  4. The Staff Interface: A responsive Bootstrap 5 Dashboard that auto-refreshes to show doctors the live queue.
  5. 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, and templates.py wasn'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.Client was 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.

Built With

Share this project:

Updates