Inspiration
As a Vietnamese team, we realized that people struggle with other complex, high-stakes documents, not just government paperwork, but a notice to go to school, a notice about food assistance, a notice about housing eligibility and even a letter of discharge from the hospital. The moments are stressful and if a step is missed, it can have serious consequences. We wished to create a tool that makes any confusing document clear and actionable.
What it does
Whether it comes from the government, the school, the hospital or community programs, ActionAid takes the confusing or stressful information and transforms it into:
Plain language summaries
Step‑by‑step checklists
Identify next steps with timeframe and liaison.
It makes people feel empowered to take action promptly and confidently from any source.
How we built it
It began with a basic prototype created in React that converted long documents to timelines of steps. We rebranded as ActionAid, added multilingual support and enhanced error handling.
Initially, we experimented with Claude but when our credits were depleted, we moved to Groq's free Llama 3.3 model. We addressed CORS problems by changing from Cloudflare Workers to a secure Vercel serverless proxy.
Finally, we hosted the frontend on Netlify, linked it to Groq through Vercel and implemented additional functionality such as TTS and multi-language prompts. This creates a working web application which everyone can use to upload complex documents, and has a plain language summary and a straightforward list of next steps.
Challenges we ran into
The process of building ActionAid was beset by many unanticipated challenges. Perhaps one of the biggest hurdles was handling the CORS restrictions. We found out that the browser could not call AI APIs directly which made it necessary to create a proxy layer. We started with Cloudflare Workers but within no time, their own bot protection started to block our requests, causing us some confusion and hard-to-debug 403 errors.
The other hurdle was the providers of the AI tools. We began with Claude, but soon encountered a problem with credit running out. Although it was a bit challenging to switch to Groq's Llama 3.3 model, which has a free tier, we had to adapt our backend logic to process the responses in a different format. In between, we ran into some issues while parsing JSON when the model returned incomplete or malformed outputs as well.
Infrastructure issues were a challenge too. Upon deployment to Vercel for the first time, we had encountered 404 errors due to runtime mismatches and missing configuration files. The debugging process helped us to learn the importance of reading the build logs carefully and also the difference between Edge functions and Node serverless functions.
Last but not least, there was a need for multilingual support and user experience bugs. The initial change was only changing the UI labels and not the actual analysis results. This had to be overcome, and required re‐analysis of documents on every language toggle. We also had to make fine tuning in prompt engineering in order to make sure the AI would always use the selected language.
Accomplishments that we're proud of
We are pleased that at last, ActionAid is fulfilling what it promises: making complex documents into clear summaries and actionable checklists. The app is available in five languages, has text-to-speech functionality for accessibility, and is used in government, healthcare and education settings.
Technically, we managed to successfully switch from Claude to the free version of Groq's Llama 3.3 model; we addressed some challenging CORS and infrastructure problems by creating a stable proxy on Vercel; and we deployed a public-facing frontend on Netlify.
First off we're proud to have come through the hard times of broken JSON outputs, multilingual bugs, platform errors, and many other issues and still provide a tool that is simple, free, and meaningful in real communities.
What we learned
We uncovered more lessons in design during the building of ActionAid. For instance, when we encountered CORS errors, we had to learn that there is always a secure proxy that needs to be used for frontend apps to call external AI services. The transition from Claude to Groq has highlighted the value of flexibility, what tools suit the budget and reliability requirements are just as significant as the code itself.
We also found that the outputs from AI can be very sensitive. The responses were often partially malformed or incomplete JSON; we had to come up with countermeasures for parsing with them, and better prompt engineering. This further cemented the notion that you have to plan for imperfect outcomes when building with AI.
On the other side of things, as a user we learned that simplicity is a big deal. Small changes such as re‑analyzing documents when switching languages, or presenting tasks as a checklist, made a massive difference for users in terms of confidence. The tools for accessibility, especially the text to speech function, were a reminder that technology is only important if it is available for those who need it most.
What's next for ActionAid
ActionAid now exists as a public prototype that can help to streamline government, healthcare, and school paperwork into simple summaries and checklists. Next, the support needs to be expanded to other types of documents such as community aid forms, legal notices, workplace policies, etc.
We will introduce proactive elements like SMS or e-mail reminders of deadlines and develop a mobile app to make ActionAid accessible for those who are dependent on their mobiles. Collaborations with NGOs, Schools, Hospitals and local governments will enable us to test ActionAid in the real communities and improve it based on inputs.
In the long term, we would like to delve deeper into interactive functions such as chatbots that enable real-time questions and answers, as well as gamification to promote prompt response. With the additions, ActionAid will not only be a translator, but a partner to accompany you through the most stressful paperwork of life.
Built With
- claude
- cloudflare
- cors
- groq
- json
- netlify
- proxy
- vercel
Log in or sign up for Devpost to join the conversation.