Inspiration
Over 80% of low-income Americans face civil legal challenges without any professional help. Eviction is one of the most common, and it hits hardest in communities that are already vulnerable. I kept thinking about what it actually feels like to receive one of these notices. You don't know what C.C.P. §1161 is. You just know you might lose your home, and you have no idea what to do next, and that's the moment I want to service.
What it does
Getting an eviction notice is terrifying. You're holding a piece of paper that could mean losing your home, and it's written in a language that feels deliberately impossible to understand. They’re filled with statute citations, Latin phrases, and legal terms that mean nothing to someone who's never been in a courtroom.
This isn't a knowledge problem. Most tenants are smart, capable people. But the legal system wasn't built for them. It was built for lawyers. And when you have 3 days to respond to something you can't even parse, that gap between the legal world and the real world can cost you everything.
I built Notice Navigator because that moment, standing in your kitchen holding a scary piece of paper, needs a better tool. You paste or photograph your notice, and it comes back in plain English. What does this actually mean? When do I need to act? What happens if I don't? What should I ask a lawyer? Those four questions are answered simply and quickly.
I also added Spanish translation because a huge portion of the tenants most at risk are non-native English speakers, and handing them an English summary doesn't actually solve the problem. I also added built PDF and photo uploads because most people get a physical notice, not a digital file. Notice Navigator doesn't give legal advice. It gives people a fighting chance to understand what's happening to them before it's too late.
How I built it
I used React and Vite for the frontend, Node.js and Express for the backend, and Google Gemini API as the AI layer. The app has a single endpoint that accepts either pasted text or a base64-encoded image or PDF. For text, I send the notice to Gemini with a carefully engineered prompt that instructs it to write at a 6th grade reading level, bold key terms, and return structured JSON. For images and PDFs, I use Gemini's vision capabilities to read the document directly. A separate endpoint handles Spanish translation by passing the existing output back to Gemini. I used concurrency to run both frontend and backend from one command.
Challenges I ran into
Two things. First, getting Gemini to actually write simply. "Plain English" is easy to ask for and hard to get, early outputs were still pretty dense, just without the statute numbers. I had to get really specific in the prompt about tone, sentence length, and who I was writing for before it clicked.
Second, API quota issues ate up a significant chunk of our build time. I burned through free tier limits early and spent longer than I'd like debugging whether the problem was our code or our key. Spoiler: it was both, at different times.
Accomplishments that I'm proud of
The photo and PDF upload. It sounds like a small feature but it changes who can actually use the tool. Most tenants get a paper notice slid under their door, they're not getting a PDF emailed to them. If I'd only built a text paste box, I would've built something useful for people who already have a little more access and resources. The upload means someone can open their phone right there in the hallway and get answers.
What I learned
Prompt engineering is harder than it looks. Getting Gemini to consistently return valid JSON, write at a specific reading level, bold the right words, and stay out of legal advice territory, all at the same time, required a lot of iteration. I also learned that the gap between "it works" and "it works for the people who need it most" is where the real design decisions live.
What's next for Eviction Notice Navigator
Honestly the biggest next step is user testing, sitting down with actual tenants and legal aid workers and finding out where the tool falls short. I made a lot of assumptions about what "plain English" means, and those assumptions need to be pressure tested by real people in real situations.
Beyond that: more languages, a live legal aid directory so people can find help immediately, and mobile optimization since a lot of the people who need this most are on their phones. There's also a real conversation to be had with legal professionals about where the line between "clarity" and "advice" sits, and making sure I get on the right side of it consistently. More broadly, spreading this to other forms and applications, like DMV papers and insurance policies would help immigrants and people with less access to resources.
Built With
- express.js
- geminiapi
- node.js
- react
- vite
Log in or sign up for Devpost to join the conversation.