
Jua
This is the project I submitted to CSYA Hacks 2023. It won first place in the Advanced division.
When I submitted this project on Devpost, I made a short write-up for it, and here I've expanded on that and made some light edits. Without any further ado, let's get started!
Inspiration
Around 80% of medical equipment in Africa is donated, according to the WHO. For hospitals in wealthy first-world countries, this is a win-win situation: they can reap tax savings, avoid disposal costs for aging equipment, and claim to be bringing about social impact in underserved communities. It all sounds great on paper, but there's a catch—around 50-80% of this donated equipment is out of service or broken. (for comparison, that number is around 1% in most developed countries) While these donations are undoubtedly made with good intentions, so much of the life saving potential here is wasted, because not only is there a lack of working medical equipment, there is also a lack of support & repair.
A good portion of donations are older models that may already have seen many years of use and by now are on their last legs. In addition, technicians & engineers in these countries are often poorly trained; one study found that less than half of its participants conducted any training of technicians (Jenny et al., 2016), and another found that up to 82.5% of biomedical engineers received no maintenance training for donated equipment (Marks et al., 2019). Not only are technicians poorly trained, the resources they need to do their job are often lacking. Most manufacturers don’t offer technical support in low-income countries, and service manuals are often missing, difficult to parse, or not shared at all for intellectual property reasons, so it should come as no surprise that when machines break … well, they often stay broken.

Ok, so what the heck is a Jua?
Jua (from the Swahili for "sunshine") is an AI-powered app designed to enable hospitals in lower-income & developing countries to troubleshoot & fix basic problems that may have otherwise taken their equipment out of service, enabling hospitals to unlock the true potential of these donations.
My solution has two parts: a chat component and a public forum for finding qualified technicians & professionals component.
The chat
The main focus of the app is Jua Chat, an AI-powered assistant using OpenAI's GPT3.5 model. Our assistant lets users ask their questions and get solutions fast, rather than A.) trying to contact manufacturers that may not be able / willing to help or B.) reading hundreds of pages of dense, hard-to-understand manuals. (which is especially difficult if you're not a native English speaker)
Chat is able to access information from thousands of pages of manuals and can pull that information to provide detailed support information & answers. It can even provide references to where in the document the information was found for further reading & fact-checking if necessary.
The hope is that by empowering medical staff to solve these sorts of basic problems, we can prevent a good chunk of crucial, life-saving equipment from ending up in a junkyard.

Let's connect
We also built Connect, a simple platform where users can go for in-person support if needed. The goal is to bring together those with some experience working with these machines and those who have problems bigger than what Jua Chat is able to help with. Users are able to filter by specializations & location to find experts that are able to help them.
In many countries, there is no official support network, so through this platform medical professionals are able to create their own, grassroots support network, all for a fraction of the cost that would likely be charged by first-party service.

Behind the scenes
The user interface of Jua was prototyped in Figma first before actually building it. The frontend was written in Vue.js and used Tailwind CSS for styling. The backend was built around FastAPI and uses paper-qa combined with some custom prompts.


What worked
I'm personally quite proud of the design of the app, I think it's some of the better work I've done recently. Mostly, though, I'm proud that I was able to set a plan and fit in everything I wanted to make for this app despite external factors limiting the number of hours I could put in.
I'm also proud of my work on the backend portion of the website, especially the exploration & research I did into LLMs & NLP in order to get everything working.
And … what didn't
For me personally, the biggest challenge by far was simply time. My initial plans were a little bit too ambitious, and I definitely struggled to fit everything into just a few short days. (the code base is definitely reflects that - it's a mess ...)
I also struggled a little bit to integrate the AI Q&A functionality into the app. I tested using multiple different models off the Hugging Face Hub but the quality wasn't as great as I'd hoped; I then was going to try LangChain but decided I didn't have enough time for it.
Did I learn something?
I think so…?
I honestly never thought I would be spending time during a hackathon reading reports on medical device availability in sub-Saharan Africa, but here we are! Even though the U.S. healthcare system is notoriously dysfunctional, doing this research really gives you some perspective, and in the end, I really am fortunate to live in a country where hospitals are, at the very least, well-equipped and well-staffed.
On the technical side: I learned a lot about LLMs & NLP before I finally just decided to work with a more pre-built solution for Jua Chat. For me, NLP is definitely one of these most interesting areas of AI, and when you combine that with how quickly it moves nowadays, I'm happy I got the chance to educate myself a little bit.
Into the unknown 🏂
In the future, I'd like to improve the question answering capability a little bit. While I'm satisfied with the results as they stand right now, there's of course always room for improvement. I'd also like to try some other models for text generation - Meta's new LLaMA 2 has especially caught my eye ...
The next improvement on the roadmap: currently Jua is built using web technologies and requires internet access. While this is faster to prototype (for me personally at least), it's not optimal if you have limited internet access like many areas of developing countries - therefore I'd like to rewrite this to be a fully-fledged native app with offline capability.
Tying into that - many people using this will not have the latest iPhone or Samsung; they will likely be using lower-powered devices that may struggle to run a massive language model, so the choice is either to have a low-powered model that may give low-quality results running locally, or a more powerful one in the cloud that would require internet access. Neither of them is a great option, so there remains some more work to be done here.
Summary video
Here's the video I submitted to CSYA Hacks. It's only a couple of minutes long & I'm not the proudest of the production quality, but if you're interested, it's linked below.