WageGuard
Bilingual AI-powered wage protection for Latino workers — voice-first, free, and confidential.
Inspiration
Many Latino workers in the US are underpaid, overworked, and unaware that what's happening to them is illegal. Wage theft is the most common form of theft in America — over $50 billion stolen annually — yet the workers most affected are the least equipped to navigate the systems designed to protect them. Language barriers, fear of retaliation, and lack of legal knowledge keep most cases unreported. We wanted to build something that removes every one of those barriers.
What it does
WageGuard is a bilingual AI-powered wage protection platform that helps Latino workers understand their rights, detect wage violations, and take action — through natural conversation in English or Spanish.
- Voice-first AI intake — workers describe their situation out loud; ElevenLabs transcribes it in real time and our Gemini agent extracts a full structured wage claim automatically
- Smart follow-up agent — instead of presenting a form, the agent identifies the single most important missing piece of information and asks one targeted question at a time
- Deterministic wage analysis — compares the worker's pay against actual state labor law (all 50 states) and calculates the exact dollar gap
- Plain-language explanation — a third AI agent translates the legal output into simple English or Spanish: what happened, what it means, and what to do next
- Downloadable record card — a formatted PDF the worker can take to a lawyer or agency
- Complaint generation — the agent drafts a complete complaint email and links directly to the official DOL filing page
- Retaliation detector — workers check off what's changed since they complained; the system assesses retaliation risk and provides direct reporting lines
- Evidence organizer — drag-and-drop file uploads auto-sorted into four categories: hours proof, pay proof, employer messages, and timeline evidence
- Full account system — magic-link authentication via Supabase; every conversation and wage record is stored and accessible from the profile page
- Night mode — because many workers are doing this after a long shift
How we built it
| Layer | Technology |
|---|---|
| Frontend | React + Vite |
| Backend | Express + TypeScript |
| Database & Auth | Supabase (magic link, row-level security) |
| AI Agents | Google Gemini 2.5 Flash |
| Voice | ElevenLabs Scribe |
| Wage Logic | Deterministic calculation engine (hard-coded state labor law) |
- Frontend — React + Vite component architecture, shared state, dark/light mode, bilingual UI, localStorage and Supabase sync
- Backend — Express + TypeScript REST API, wage calculation engine, agent orchestration endpoints
- Database & Auth — Supabase magic link authentication, row-level security, real-time conversation and record storage
- AI Agents — Google Gemini 2.5 Flash running three distinct agents with structured XML output parsing, conversation history, and bilingual system prompts
- Voice — ElevenLabs Scribe multilingual speech-to-text with browser SpeechRecognition fallback
- Wage Logic — Deterministic calculation engine with hard-coded state minimum wages and FLSA overtime rules, fully separate from the AI layer for accuracy
Challenges we ran into
- Keeping the AI honest on math — language models hallucinate numbers. We solved this by separating the calculation layer entirely: Gemini handles language and context, a deterministic engine handles every dollar amount.
- Structured output from free speech — getting a consistent, parseable JSON claim from an open-ended voice story required careful prompt engineering with XML output tags and multi-turn accumulation across conversation turns.
- Bilingual consistency — making sure the agent always responds in the user's language, preserves tone across English and Spanish, and fills the form correctly regardless of which language the input was in.
- Rate limits on the free tier — Gemini 2.5 Flash has RPM limits. We built a throttle queue, response cache, and local regex fallback so the app degrades gracefully instead of breaking.
- Retaliation sensitivity — the Protect tab required careful framing. Workers are often scared; every message had to feel supportive, not alarming, while still being legally accurate.
Accomplishments that we're proud of
- Three coordinated AI agents that hand off seamlessly — intake, follow-up, and explanation — all within a single conversation flow
- A voice-to-claim pipeline that works end to end: speak naturally, form fills, analysis runs, plain-language explanation appears — under 30 seconds
- A fully bilingual product where language isn't an afterthought — every component, every agent response, every piece of UI works in both languages
- Built the entire frontend design system from scratch in 24 hours, matching the SolHacks visual identity
- The app works even without an API key — local regex extraction and fallback explanations mean the core flow never breaks
What we learned
- Prompt engineering for structured, parseable output is a discipline of its own — small changes to the system prompt have large effects on reliability
- Separation of concerns between AI and deterministic logic is critical when accuracy matters
- Designing for users with high anxiety and low trust in institutions requires different UX decisions than a typical consumer app — every word, every error message, every button label matters
- Supabase row-level security makes building secure multi-user apps significantly faster than rolling auth from scratch
What's next for WageGuard
- Connect the evidence organizer to Supabase storage for persistent legal file management
- Add a document reader — upload a pay stub photo and have the agent extract hours, rate, and deductions automatically
- Expand the wage engine to cover tip credit rules, piece-rate work, and agricultural exemptions
- Partner with worker centers and legal aid clinics to route high-risk cases directly to human advocates
- Add push notifications reminding workers to log their hours weekly before memories fade
Built With
- css
- elevenlabs-api
- express.js
- google-gemini-api
- html
- javascript
- node.js
- postgresql
- react
- supabase
- supabase-auth
- supabase-javascript-client
- tsx
- typescript
- vite
Log in or sign up for Devpost to join the conversation.