Try it first
It's live and free: https://milpa-california.vercel.app. Give it a shot.
Sign in with Google or email. Then tap "Almond insecticide label" on the scanner (you don't need a real label). Tap Ask Milpa, then Talk, and ask "Can I eat lunch between the rows?" in whatever language you speak. Tap the globe and switch to Español or Arabic. Then go to Tools and try Food pesticide check by typing "strawberries".
Inspiration
Every time a field gets sprayed in California there's a label that says how long workers have to stay out and what they need to wear. But it's tiny legal English printed on a drum most workers never even see. A lot of the people in those fields think in Spanish, Punjabi or Hmong first. So the most important safety info on the job is also the hardest to read. I wanted to fix that with something that runs on the phone people already have.
What it does
You take a picture of a pesticide label or a field sign and in about five seconds Milpa tells you when it's safe to go back in, what to wear, and what to do if it gets on you. It reads it out loud too. It also shows the exact words from the label it used, so you don't have to just trust it. Tap once to start a countdown and your phone buzzes when time's up.
Ask Milpa is a chat button that's on every screen. You can type, send a photo, or just talk to it in your language and it talks back. It only answers from the label you scanned and California's farm safety rules. If the label doesn't say, it tells you who to ask instead of making stuff up. And if you type something like "he passed out", a 911 button pops up right away.
The home screen tells you in one line how many sprayed blocks are still closed and what the heat rules are today.
There are tools for the rest of the job too. Spray gear check looks at a selfie and checks your gear against the label. Pesticide got on me has 911 and Poison Control buttons, a 15 minute rinse timer and a card in English for the doctor. Report spray drift turns what you say in your language into a clean English report for the county. The spray map shows where you scanned each label. Food pesticide check looks at food for your family's allergies and pesticides. Field heat check shows today's hottest hour and your shade, water and break rights. Sick after spraying asks how you feel and tells you who to call. Today's field plan reads your closed blocks and the heat out loud. Farm pay check reads your pay stub and checks it against California farm pay law. Read a work paper explains notices from your boss in your language. And the crew interpreter lets you and a supervisor or nurse take turns talking while it translates out loud.
It works in 17 languages, and Arabic, Urdu and Farsi read right to left. There's a field mode with bigger text for bright sun, and you can add it to your home screen so the safety stuff works without signal.
How I built it
Next.js, React, TypeScript and Tailwind, hosted on Vercel. All the AI runs on Google's Gemini API. Gemini 3.8 Flash reads the photos, understands voice questions and writes the answers, and Gemini's text to speech model does the voice. Every tool has its own prompt and a fixed answer format so the app always gets clean data back. Accounts and saved scans use Firebase Authentication and Firestore. Weather is from Open-Meteo and the map is OpenStreetMap. I used Claude Code to help with the coding.
Challenges I ran into
Keeping the AI honest was the big one. A safety app that guesses is worse than nothing, so it only answers from the label and a fixed list of California rules, and "I don't know, ask your supervisor" counts as a good answer. Voice was tricky too, since the browser's speech recognition doesn't know Hmong, so I send the audio straight to Gemini. At one point the voice kept reading its own instructions out loud, which was funny for about a minute.
Accomplishments that I'm proud of
It actually works start to finish on a real phone. You can ask something in Spanish with the app set to English and it hears you and answers back in Spanish. And every answer about a label can be traced to the words printed on it.
What I learned
How to get reliable, structured answers out of an AI model. And that the hardest part wasn't translation at all, it was deciding when the app should just say "I don't know."
What's next for Milpa
Get native speakers and pesticide safety trainers to check every phrase, and get it in front of real farmworkers and crew leaders. After that, add Mixteco, Zapoteco and Triqui, alarms that work with the browser closed, and label reading with no internet.
Built With
- claude-code
- css3
- firebase
- firestore
- gemini
- html5
- javascript
- next.js
- open-meteo
- openstreetmap
- react
- tailwindcss
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.