The problem
On the evening of 24 June 2026, two earthquakes hit northern Venezuela, a magnitude 7.2 and then a 7.5, west of Caracas. Buildings came down in and around the capital. In the hours after, improvised help sites appeared everywhere, and together they scattered the information. Someone looking for a relative had to check several places, a volunteer with a truck of water couldn't tell which street needed it, and whole areas got nobody while others got the same help twice.
What I built
HelpVenz is a single place to ask for help, offer help, report someone missing and find the people who are safe. I built it from Munich with a friend (Rouxxel on GitHub). The first commit went in the day after the earthquakes, and the site was live within the hour. It is mobile first, Spanish first, usable on a bad connection and needs no sign-up. It doesn't compete with Protección Civil or the fire brigades or touch money, and a red banner on every page says to call 911 or 171 first.
What it does
- Three buttons. The home page has three large buttons in the colours of the flag: yellow to ask for help, blue to offer it, red to search for a person. Asking for help starts with one question: do you need supplies, or are you looking for someone?
- One live feed. Needs and offers share a single feed with a switch between who's asking and who's offering, and it updates in real time. Categories follow the humanitarian standards (Sphere and the UN clusters) rather than an invented list.
- Missing and found people. Reporting a missing person gives you a short secret code once. Marking that person as found requires the code, so nobody can mark a stranger as safe.
- Map and panel. Reports appear on a map of Venezuela, and a panel counts people safe, missing and deceased, open needs and shelters offered.
- Brújula, the assistant. A chat assistant searches HelpVenz's own records and the web, and shows which one it's using while it answers.
- Push notifications and a printable flyer with a QR code, so the link could travel off WhatsApp and onto paper.



Why these tools
Supabase holds the data and pushes new posts to every open browser through Realtime, so the feed stays current without anyone refreshing. Reads go straight from the browser, with row-level security that allows public reads and no writes.
FastAPI is the only way to write. Posting is anonymous, so letting the browser write directly would have let anyone script a thousand fake missing-person reports. A small FastAPI service validates, rate-limits and is the only thing holding the service key. It also gives rules like the closing code somewhere to live.
browser ──read (RLS, Realtime)──▶ Supabase
browser ──write──▶ FastAPI (validate, rate-limit) ──▶ Supabase
MiniMax M3 with LangChain runs Brújula as a small agent with two tools, and Tavily is its web search. Web Push sends notifications without an app install. Showing which tool Brújula is using matters: when someone asks where the official shelters in Caracas are, they should know whether the answer came from a post on our site or from a news page.
What was hard
The first version had too much. By the first evening it had too many buttons for someone standing outside a collapsed building with 8% battery, so most of that evening's commits removed things: "Housing" became "Refugio", the word people actually use, the menu went down to five items, and needs and offers merged into one feed.
The other was not competing with a bigger list. desaparecidosterremotovenezuela.com was already collecting missing-person reports with a public API, so I wrote an importer instead of asking families to report twice. It brings in reports with a photo and a contact, never duplicates, and credits the source on every card. The first run brought in 986 missing and 87 located. It also broke the panel within minutes: Supabase caps a query at 1,000 rows, so the panel reported 12 people safe instead of 79 until I added pagination. A wrong number on a disaster dashboard is worse than none.
What it became
HelpVenz is still live at helpvenz.vercel.app. The panel today shows 1,567 people reported missing, 79 safe and 8 deceased, most of them from the import, plus 33 open needs and 13 shelters offered. The newest posts are from the last days of June. After the first week, activity stopped.
Two things on the live site show what I didn't finish. The map tiles now come back stamped "API KEY REQUIRED": the free basemap I pointed at no longer serves the site without a key, and nobody has been watching. And "Covered: 0" on the panel isn't a sign that no need was met. The site never gave anyone a way to mark one as met.
