Inspiration

We were heavily inspired by apps like Akinator which ask a series of questions which get more specific to reach a conclusion. Instead of guessing a character, we wanted to focus on something much more important: your health. Many people do not realize how their daily habits relate to common health conditions, and they end up suffering in the long term because of it. Our idea was to make a fun tool which is accurate to make it easy and engaging to reflect on your lifestyle and recieve useful insights and feedback.

What it does

This app acts as your personal health screener. It begins by asking general questions about your lifestyle, covering diet, exercise, sleep, stress, and more. Based on your responses, it intelligently adapts and asks follow-up questions if certain risk factors are flagged. Using real-world data from the Canadian Community Health Survey (CCHS) and trusted medical sources like Mayo Clinic, WebMD, and the Cleveland Clinic, it evaluates your risk for common chronic conditions and provides helpful warnings. Your data is never stored, everything runs locally for your privacy and peace of mind.

How we built it

We built the frontend using Next.js, React.js, TypeScript and TailwindCSS to deliver a fast, seamless and interactive user experience. On the backend we used Flask and Python to create our APIs in order to manage communication between the quiz engine, our ML models, and the Gemini API.

For health risk prediction, we combined a custom rule-based system, informed by structured data from the Canadian Community Health Survey with a Random Forest Classifier built using scikit-learn. The dataset was cleaned and preprocessed using pandas and NumPy, with thoughtful feature engineering to ensure high-quality inputs. Once the user completed the diagnostic, the ML model evaluated their risk across major chronic conditions to ensure these are addressed, then passed the findings to Gemini for deeper interpretation and personalized feedback.

To make the experience more intelligent and engaging, we integrated Gemini via the Generative Language API. Gemini helps interpret user responses, generate conversational summaries, and suggest lifestyle improvements. It also augments results with research-backed insights, drawing from trusted medical sources such as Mayo Clinic, WebMD, and the Cleveland Clinic, offering a deeper understanding of potential health risks tailored to each individual.

Challenges we Faced

One of our biggest challenges was working with the Canadian Community Health Survey (CCHS) dataset. Its massive size made it too large for tools like Excel, and required extensive filtering, label decoding, and feature selection before we could even begin modeling. We spent significant time understanding the encoded variables and reducing them into features meaningful for predicting chronic illness risk.

Translating real-world health survey data like stress levels, sleep patterns, and BMI into medically relevant predictors was another complex task. We had to research how these variables link to specific conditions and build rule-based thresholds to supplement machine learning outputs.

Integrating Gemini posed its own challenges. Generating reliable, non-generic advice while avoiding hallucinated outputs required multiple iterations of prompt tuning. We also made sure that Gemini referenced research-backed sources like Mayo Clinic or WebMD before delivering suggestions to the user.

Lastly, managing communication between our Next.js frontend, Flask backend, scikit-learn model, and Gemini API led to latency and sync issues we had to troubleshoot carefully.

Despite these challenges, we built modular APIs to streamline the architecture, validated our model with structured inputs, and designed prompts to keep Gemini responses accurate, conversational, and research-informed.

Share this project:

Updates