Inspiration
Paying for physical work from a distance is a trust problem. A client abroad fears paying upfront for nothing, and a carpenter fears doing the work and not being paid. We wanted a process both sides can trust.
What it does
Kazi-proof is milestone escrow for carpentry, construction and repairs.
- The client describes the job and AI (Gemini) splits it into 2 to 4 milestones, each with an amount and photo-proof criteria.
- The client funds the whole job once through PayPal as an authorization. Nothing goes to the worker yet.
- The worker takes a live photo in the app for each milestone. The job-site pin, the photo's age and an AI check against the criteria raise flags if anything looks wrong.
- The AI never approves or pays. The client decides. Approving a milestone captures only that milestone's amount and pays the worker through the PayPal Payouts API.
How we built it
- Frontend: React, TypeScript, Vite, Tailwind CSS.
- Backend: Node.js, Express, Prisma on PostgreSQL, with a state machine so a milestone can only move through legal states.
- PayPal sandbox: Orders (authorize once, partial capture per milestone) and Payouts.
- AI: Gemini for job scoping and photo verification, with strict schema validation (zod) and amounts reconciled to the cent.
- Cloudinary for proof photos, deployed on Render with a Blueprint and Render Postgres.
Challenges
Keeping the AI advisory and never in control of money, making payments retryable without paying twice, and getting photo storage to survive restarts on free hosting.
What we learned
Trust comes from the process: small milestones, evidence tied to a place and time, and the client always having the final say.
What's next
A job board for workers, self-service signup, reference photos to guide the AI, and local payout methods such as mobile money.
Try it
Live: https://kazi-proof.onrender.com (the free server sleeps, so the first load can take about a minute) Test accounts: [email protected] and [email protected], password demo1234 PayPal sandbox only, so no real money moves.
Built With
- cloudinary
- express.js
- gemini
- node.js
- paypal
- postgresql
- prisma
- react
- tailwindcss
- typescript
- vite