Yara
A WhatsApp-first guidance assistant for newcomers in the Netherlands. Built by PF Design Labs for the Municipality of The Hague.
The Challenge
The Municipality of The Hague is looking for a smart digital buddy to help newcomers navigate rules, rights, and obligations. They call it SchuldenBuddy — a Startup in Residence programme.
Yara is our submission.
The Problem
Imagine you’ve just arrived in the Netherlands. Your Dutch isn’t great yet. And you get an incomprehensible letter from the IND, now what?
Newcomers are adapting to an entirely new reality while simultaneously trying to find their way through government agencies, support services, forms and deadlines, in a language they are still learning. Letters go unanswered. Deadlines are missed. Rights go unclaimed. Obligations go unfulfilled. Problems pile up.
For institutions it’s no less difficult. Caseworkers are overstretched. Reaching everyone is impossible. And those who aren’t reached, fall off the radar.
The Concept
The central idea is a system flexible enough to support a large part of what newcomers face day to day. Reading and explaining a letter is the most obvious example. But imagine a workflow that helps someone build a personal action plan, step by step, with reminders for what is still open. New domain, new workflow, same foundation. It grows with you and helps you along the way.
What is Yara?
Yara is the result of a week of building. We worked out one of the flows from the concept to see if it holds up: the document workflow.
In practice it works like this: send a photo or PDF of a letter, Yara reads it, understands what is being asked, and tells you what to do. Relevant information or the right support is sent along directly. If there is a deadline, Yara reminds you in time.
It is proof that the architecture works. And a starting point. The same setup makes it possible to add new modules later: personal action plans, debt guidance, other domains where support is needed.
Under the Hood
Stack: Python · FastAPI · PostgreSQL · LangGraph · LLM · Twilio · Docker
Why WhatsApp and not an app? Because people already have it, are familiar with it, and adoption is enormous. In the language they know, in an environment where they feel safe. An app can come later. You start best where people already are.
An incoming WhatsApp message travels through Twilio to a FastAPI webhook. Twilio handles media normalisation: photos and PDFs are converted before they enter the app. FastAPI was chosen for its speed and simplicity, a webhook that stays out of the way.
The message then goes to LangGraph. Why LangGraph instead of a regular chatbot? Because a multi-turn conversation needs to maintain state across messages, and because you want to route to specialised handlers. Yara has three nodes: an intake that collects context and learns about the user, a document helper that analyses letters via an LLM, identifies document type, assesses urgency and extracts deadlines, and a chat node for general questions. A router decides on each message which node handles it. Each node has its own system prompt and toolset.
Those tools are the interesting part. The document helper gives the LLM real actions: extract a deadline and save it, schedule a reminder, draft a response. Those actions go into PostgreSQL as structured records. PostgreSQL was chosen because the data is genuinely relational: messages belong to users, actions belong to documents, reminders belong to actions.
APScheduler runs as a background process and checks every minute whether any reminders need to be sent. Docker ensures it runs anywhere.
Open Source
Yara is open source. You can see everything. Curious about the code?
Click the GitHub link below.
Try it
Yara is live on the Twilio WhatsApp Sandbox. Open the beta page to start a conversation or share access with testers.