Inspiration: make “done” explicit
For a freelancer and a client, agreeing on a price is only half the conversation. What exactly counts as an accepted milestone? ProofPay explores a clearer handoff: agree on observable criteria, attach evidence notes, review criterion-level feedback, and let a person make the payment decision.
ProofPay is an MIT-licensed prototype, not escrow or an autonomous payment agent. Its central design choice is to separate advisory review from payment actions. The intended benefit is a more structured acceptance conversation—not a claim of verified work, fewer disputes, or proven business impact.
What it does
- Agree on the milestone. Set an amount and up to eight observable acceptance criteria.
- Start the payment flow. In the public demo, this creates simulated authorization state only.
- Share evidence notes. Run the deterministic keyword demo, or use optional Gemini advisory review in a separately configured local environment. Neither mode opens or verifies the deliverable link.
- Review, then decide. Inspect the work yourself and explicitly choose a simulated capture or void in the hosted demo. AI never decides or executes payment.
Try it in two minutes
Open the hosted demo, define a fictional milestone, start the simulation, add fictional evidence notes, and choose the local keyword check. Inspect the criterion-level feedback and make the final simulated decision. No account, API key, or payment details are required. Render Free may take a short while to wake after inactivity.
The hosted demo and the 1:31 English-captioned video show simulation only. The hosted app contacts neither PayPal nor Gemini and moves no money. Its keyword-overlap checker is deterministic—not AI or evidence verification. The optional integrations below are implemented in the source but are not exercised in the hosted video.
How it is built
The app uses Next.js, React, and TypeScript, with separate server routes for review and payment operations.
PayPal Sandbox: The optional server-side integration creates an AUTHORIZE order, authorizes it, and provides capture/void routes. The API host is hard-wired to Sandbox; PayPal Live is unsupported. HMAC-signed, expiring flow tokens carry payment mode/stage, and PayPal requests use retry identifiers. These are implementation details, not a claim of production-grade payment security. Human confirmation is a UI workflow affordance; there is no authenticated-user authorization system.
Gemini 2.5 Flash: The optional server-only advisory route requires an explicit data-sharing acknowledgement. It sends only acceptance criteria and evidence notes—not the title, amount, or deliverable URL. It bounds inputs, validates criterion IDs and response statuses, uses a request timeout, and reports failures instead of silently replacing them with keyword results. Model output can be wrong and has no authority over payment. Use fictional or public demo data only; prompts and responses may be used to improve Google products.
Review implementation · PayPal client and flow tokens

What has actually been validated
- Local PayPal Sandbox: OAuth worked, and one previously owner-approved fictional $1 USD order was successfully authorized and captured. No live funds were involved. The void transaction remains untested.
- Local Gemini: One fictional-data smoke test passed on a no-billing Free-tier project. This is not an accuracy benchmark or evidence-verification test.
- Development checks: Four mocked AI-route tests, TypeScript typechecking, and a production build passed. The tests cover consent/configuration guards, input limits, advisory response handling, and failures without local fallback. They make no external AI requests and do not test PayPal transactions end to end.
Tests · Setup and run instructions
Challenges and lessons
The important challenge was keeping three things distinct: a suggestive review, a human acceptance decision, and a payment operation. A keyword match is not proof; an AI response is not verification; a Sandbox capture is not a live payment. Explicit modes, consent, failure messages, and honest demo labels make those boundaries visible rather than hiding them behind an “AI approved” result.
Limits and next steps
There is no database or durable persistence, authentication, webhooks, payouts, or dispute handling. A PayPal authorization is not a guarantee of payment. Before any real-world use, the project would need authenticated participants, durable and reconciled payment state, webhook handling, independent security review, broader integration tests, and user research on whether the workflow actually improves milestone acceptance. These are future work, not implemented features.
AI tools disclosure
Cue assisted development, review, testing, documentation, synthetic English narration using the Charon voice, and caption timing. The narration is AI-generated, not the owner's voice, and is labeled accordingly. ChatGPT provided an independent concept and scope review—not implementation verification. Gemini 2.5 Flash is the optional local runtime advisory model.
Public MIT-licensed source · Hosted simulation · Public demo video
Built With
- gemini
- next.js
- paypal
- react
- render
- typescript