Inspiration
Freelance and AI-assisted work has a trust gap. Buyers don't want to release payment for an incomplete result, and workers don't want to finish a milestone without knowing the funds exist. Today that decision usually comes down to a chat message or a manual dispute.
Prooflane tries a narrower, auditable alternative: authorize the payment first, evaluate concrete delivery evidence against explicit checks, and let deterministic policy decide whether capture is safe.
What it does
Prooflane creates a milestone with a price and acceptance checks. It then creates a PayPal Sandbox order with AUTHORIZE intent, so approval reserves the money without capturing it. Once the order is approved and authorized, the worker submits delivery evidence.
An AI verifier evaluates every acceptance check and returns pass/fail, a reason and a confidence score. The model never controls PayPal. Application code captures the payment only when every check passed, confidence meets the threshold (90%), the authorization belongs to this milestone, and it hasn't been released before. Ambiguous evidence stops for review.
Every assessment lands in a milestone ledger built with AG Grid, and the same flow is exposed to AI agents through an MCP server: an agent can create a milestone, reserve payment through PayPal, submit proof, and get paid only when the proof holds up. That makes Prooflane a trust layer for agentic commerce, where neither side has to take the other's word.
How we built it
- Node.js HTTP server with no runtime dependencies
- PayPal OAuth 2.0, Orders v2 with
AUTHORIZE, Payments v2 authorization capture - Pluggable OpenAI-compatible structured verifier (demo: Qwen 2.5 7B Instruct running locally via Ollama), with output normalization that fails closed
- AG Grid Community milestone ledger
- MCP server (stdio JSON-RPC, no dependencies) exposing the payment flow to agents
- Deterministic release state machine with duplicate-capture protection
- Node test suite covering AI response handling, PayPal API sequencing, unsafe release rejection and single capture
Challenges we ran into
The hard part was keeping probabilistic interpretation away from an irreversible payment action. Prooflane treats model output as an evidence assessment only; a separate deterministic policy owns the capture decision and rejects missing authorization, failed checks, low confidence and repeated release attempts.
PayPal's approval, authorization and capture are separate lifecycle steps, so the UI also had to make the difference between reserved funds and captured funds obvious.
Accomplishments that we're proud of
- Real PayPal Sandbox runs end to end: order → approval → authorization → AI verification → capture, both from the web console and from an AI agent over MCP
- The AI rejected a vague "trust me" claim (20% confidence, every check failed with a reason) and approved concrete evidence (100%, every check passed)
- Uncertain evidence fails closed; PayPal credentials stay server-side
- Order, authorization and capture IDs of the verified runs are published in the repo
What we learned
The useful boundary isn't "AI decides whether to pay." It's "AI turns messy evidence into a structured assessment, while code enforces the money invariants." PayPal's authorize-then-capture flow makes that separation concrete.
What's next
Durable storage, signed evidence artifacts, a human review queue, webhook reconciliation, authorization-expiry handling, and PayPal partner capabilities for a compliant platform-fee model. Before live use it would need legal review; this prototype is not an escrow service.
Built With
- ag-grid
- css3
- html5
- javascript
- mcp
- node.js
- ollama
- paypal
- qwen
Log in or sign up for Devpost to join the conversation.