Inspiration

Many contractors in the US run their whole business in Spanish, but their clients expect estimates and invoices in English. One teammate's dad is one of them. His "estimates" are WhatsApp voice notes and handwritten pages full of Spanglish ("poner coquin en las ventanas", "stein en el porche", "Total 1400$ only Leibor"). Turning that into a professional English document takes hours he doesn't have. And work he did but forgot to write down never gets charged.

What it does

Mano ("hand") does the paperwork. Ojo ("eye") watches the job.

  • Talk or snap a photo. Carlos describes the job by voice in Spanish, or scans a handwritten note with the camera. A green outline finds the paper, straightens it, and reads it.
  • Mano organizes it. It pulls out the client, address, type of work, each item, and the price. Everything stays in Carlos's own words, and Mano never invents a price.
  • Ojo asks what's missing. "Primer? Ceilings? Trim? Second coat?" Each trade has its own checklist, and Gemini writes questions for any other trade. Carlos can add a forgotten item and its price in one tap.
  • The client gets English. Estimates and invoices are bilingual: Spanish for Carlos, English for the customer. The client opens a link, sees the estimate, and approves it. Carlos sees the approval in his app right away.
  • Invoices and getting paid. The same link becomes an invoice, then a "Paid, thank you" page.
  • The rest of the business. A client list, scheduling, a job pipeline (new, quoted, accepted, scheduled, done, paid), and remembered spelling fixes ("homeiker" becomes "Homemaker").

How we built it

  • Frontend: Next.js 15 (App Router), React 19, TypeScript, and Tailwind CSS v4. It is mobile-first, Spanish-first, and can be installed on a phone's home screen.
  • AI:
    • Google Gemini (gemini-flash-lite) organizes the notes, reads handwritten notes from photos, and writes Ojo's questions for any trade. Answers come back in a fixed JSON format.
    • ElevenLabs Scribe turns Spanish and Spanglish speech into text. The phone's built-in speech recognition is the backup.
  • Document scanner: We wrote it from scratch, with no libraries. It finds the paper on the phone, straightens it, and boosts the contrast several times a second.
  • Backend: FastAPI, SQLAlchemy, and PostgreSQL, run with Docker Compose. It handles jobs, line items, customers, and status changes. If Gemini is unavailable, extraction falls back to simple rules.

Challenges we ran into

  • Gemini's speed varies a lot. The same request can take 1 second or 30. If there's no answer after 4 seconds, we send a second request and use whichever comes back first. That made it much faster in practice.
  • Spanglish and misspellings. "Coquin" is caulk, "stein" is stain, and "zinc" is metal roofing. We had to keep Carlos's exact words while still understanding them. And the AI could never make up a price that isn't in the note.
  • Phones only allow the camera and mic on secure (https) pages. Testing on real phones took extra setup.
  • Four people, four branches. The frontend, backend, and AI work all had to come together into one working app in under 48 hours.

Accomplishments that we're proud of

  • It reads a real cursive estimate on lined paper, word for word, in under 2 seconds.
  • The whole flow works: voice, estimate, client approval, invoice, paid.
  • We built it for one real user, Carlos, not a generic "small business owner."

What we learned

Working in someone's own language is the feature. And AI helps most when it organizes and asks questions, not when it invents.

What's next for Mano + Ojo

  • Hosting, so client links work anywhere.
  • Payments (Zelle, Cash App, and cards).
  • WhatsApp integration.
  • Materials and cost tracking.

Built With

Share this project:

Updates

Submission history