Inspiration

Polycystic Ovary Syndrome (PCOS) is a condition found in women when there is an imbalance of hormones such as an excessive amount of androgens (male hormones). The condition is particularly hard to deal with as it causes physical issues such as infertility, irregular and painful menstrual cycles, weight gain, hair loss and acne. These physical changes in a woman's bodily functions and aesthetics can be a severe blow to her self esteem causing her to isolate, develop low self-esteem, or in serious cases, develop anxiety and depression.

As our mission is to tackle the United Nations Sustainable Development Goal 5, Gender Equality, we want all women, regardless of their health status, to feel supported in both mind and body. P for Pluma was born to provide intelligent PCOS healthcare support through a mobile application!

Why did we choose the name P for Pluma? We do not wish for any woman to allow her health condition to turn her into a shell of her former self. Instead, we strive for every woman to show up in the world fully as herself. "Pluma" is the Spanish word for "feather". The logo is a stunning peacock, proudly showcasing its feathers. This imagery symbolises our mission to empower PCOS-diagnosed women to show up in the world confidently, beautifully and proudly. "P for Pluma" emphasises that the letter P stands for the beauty of feathers (plumas) and not PCOS. An illness does not define a woman. Her identity is hers to choose. The main colour of the application is teal which is the colour of PCOS awareness.

What does the app do?

P for Pluma utilises Google Gemini and Vertex AI to generate health-related content targeting PCOS concerns. Given that weight fluctuations are such a pain point, the application generates a daily meal plan and workout plan with the option to edit and update the prompt to get new suggestions. Each generated meal comes with an ingredient list, recipe instructions and a vibrant image of the dish generated by Vertex Imagen. Generated workout plans come with detailed steps to target the right muscles and achieve a user's specific body goals.

Furthermore, P for Pluma comes with a unique feature of logging medical appointment notes. Unlike standard diary applications where the content entered by a user remains static, P for Pluma analyses a user's notes regarding a doctor's visit to generate precise and safe recommendations about the next steps to take in regards to following up on the doctor's orders. These insights could be recommendations on how to take better care of the skin, how to manage irregular menstrual cycles and where to get products that can help soothe any painful symptoms.

P for Pluma takes the personal experience much further by including an intelligent chatbot designed specifically for health-related PCOS questions. Users may query the chatbot to ask specific questions about the condition. It is vital to note that the chatbot is not a mere robotic fountain of knowledge that spews scientific facts, but also an emotionally intelligent engine that offers therapeutic company to the user - soothing her emotional burdens, advising her on how to navigate changes in her body and acting as a caring friend.

How we built it

P for Pluma utilises various services to achieve the end product.

Database - PostgreSQL

Given that the application is focused on healthcare, a highly structured, secure and fault-tolerant approach to data storage is necessary. A PostgreSQL relational database has been utilised.

Data File Storage - Google Cloud Storage

While PostgreSQL is a great option for storing textual data, storing binary data in a relational database rapidly increases costs. As such, files for generated meal images are stored in Google Cloud Storage with the PostgreSQL database simply storing the image path to each of these files.

Frontend and Backend - Flutter The Google Flutter framework is utilised to create a stunning mobile frontend that displays generated meals, workout plans, medical appointment note insights and a friendly chatbot interface with the Dart programming language. This same flutter application also uses backend functionalities to communicate with the database to perform operations such as registering a user and logging in a user.

Content Generation - Google Gemini and Vertex AI in a FastAPI environment

While some database operations are carried out using the Dart programming language in the Flutter application. The content generation is carried out in a Python FastAPI application designed specifically to be isolated from the rest of the application so that it may act as its own API service. The content generation was made possible by passing prompts to Google's Gemini model in order to generate textual data such as meal recipes, workouts, medical appointment note insights and chatbot responses. However, Vertex AI had to be used in tandem with Gemini as Vertex AI offered the Imagen tool to generate images for meals.

Challenges we ran into

Generating content was costly and so testing the model and application in development was quite the task. However, we feel that the end result was worth it, and it was especially fun to see the generated images.

Accomplishments that we're proud of

We are particularly proud of creating the FastAPI application that is able to handle user account data and give customised PCOS advice to women based on specified prompts. Our application is able to tailor responses to a woman's height, weight, skin type, blood type, dietary preferences as well as any other data she is willing to provide. This gives our users a great sense of security in knowing that we respect their private data while still providing tailored healthcare suggestions. We have built a tool that truly encapsulates the concept of "Personalised Healthcare" which is estimated by medical professionals to be the direction in which the industry is heading.

What we learned

We learned the importance of prompt engineering. The quality of prompts fed to an LLM makes the difference between desirable results and undesirable results. It is not something that can be overlooked when developing Generative AI applications. It also very important to take into account chat context and history when building a stable and robust chatbot that is able to hold a conversational flow similar to that of a human.

What's next for P for Pluma?

In the future, P for Pluma plans to encapsulate more features that would exist in an end-to-end healthcare ecosystem such as direct medical appointment booking and management on the application, video consultations with physicians and an e-commerce feature for users to upload prescriptions, browse over-the-counter products and benefit from a courier who delivers the products to their doorsteps in order to accomodate users who have hectic schedules or live far away from pharmacies. This potential e-commerce feature could provide a solid business model for P for Pluma, allowing it to earn revenue from commissions on pharmaceutical deliveries.

Closing remarks

Show your feathers and colours. Live boldy, beautifully and proudly as you deserve with P for Pluma! 🦚

Built With

Share this project:

Updates