Inspiration
Fresno, Kern and Tulare are three of the biggest farm counties in the country, and the people picking that fruit are the most likely workers in California to be shorted on a paycheck. Most speak Spanish. Almost none file a complaint, because the math is confusing, the pay stub is in English, and asking the contractor feels risky. We wanted the first step to be as easy as taking a photo.
What it does
Hayday is a free, bilingual web app for farmworkers. You photograph your pay stub. An AI model reads it into numbers, you check them and answer three short questions about your week, and Hayday compares everything against California farm labor pay law: minimum wage, daily and weekly overtime, paid rest breaks for piece-rate work, meal and rest break penalties, missing hours, and missing information on the stub. It shows exactly what you may be owed, with the math and a link to the actual law for every finding, then drafts a wage demand letter in English and Spanish, ready to attach to a claim with the California Labor Commissioner, and points you to free legal aid in your county.
If you never got a stub at all, Hayday tells you that is itself a violation and lets you enter what you know. A supervisor view lets a crew leader or a legal aid office load many stubs from one employer and see the pattern, with the law cited on every line and a CSV export. Nothing is stored.
How we built it
Next.js 16, TypeScript and Tailwind, deployed on Vercel. The photo is downscaled on the phone and sent through our API route to Claude via the OpenRouter API, with a transcribe-only prompt, strict schema validation and one retry. The pay check itself is deliberately not AI: a rules engine in plain TypeScript, nine composable checks with a rate table verified against the California Department of Industrial Relations that day, covered by sixty automated tests. The AI is called a second time only to write the letter, from the verified amounts, and we check its output so no other dollar figure appears. There is no database; state lives in the browser tab.
We planned the project with a Claude Fable 5.1 session acting as architect, which wrote the plan and one handoff document per task, and built it with parallel Claude Opus and Sonnet sessions, each owning separate files. Every engineering decision was logged in a running decision file, 59 entries by the end.
Challenges we ran into
Deciding what the AI should not do. Our first instinct was to let the model compute the money. We reversed that early: the numbers had to be reproducible, explainable and citable, so the law lives in code and the AI only reads and writes. Keeping the legal claims honest was the second challenge: we verified every rate against the state site, encoded only rules we could cite, and where the law has exceptions we could not cover in a day, the estimate errs low and says so. On the practical side, parallel builders sharing one folder meant freezing dependencies up front, and a venue network that blocked Vercel addresses taught us to carry a hotspot.
Accomplishments that we’re proud of
A full flow that works on a real phone, from a photo of a real stub to a bilingual letter, deployed before lunch. Every finding on screen links to the actual California statute. A worker who was never given a stub still gets a path. A supervisor view that turns six stubs into “rest breaks unpaid on four of six,” which is the difference between a mistake and a practice. And a product that is honest about being an estimate.
What we learned
Trust is a design feature. Showing the math, linking the law, labeling estimates and storing nothing made the product more convincing than any extra feature would have. We also learned how to run a team of AI builders: clear contracts per task, one shared decision log, and a human reviewing every piece in the browser before it ships.
What’s next for Hayday
A review of the rules and wording by a Central Valley legal aid organization. Voice input for the questions. Text-message results for workers without data plans. More languages, starting with Mixtec audio. And a pilot with a legal aid office using the supervisor view on real cases.
Built With
- claude
- openrouter
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.