Inspiration

$120 for three logos. Then the client asks for packaging, an animation, and a typo fix — in one message. Which parts belong to the original job, and which need a separate quote?

That fictional example is the starting point for HoldOn. It helps both sides compare a mixed request with the terms they already confirmed, separate corrections from additions, and agree on any additional price before work or payment moves ahead.

Our intended audience is freelancers and clients working on larger projects with repeated scope changes, or ongoing client relationships where a shared record is worth the confirmation steps. Whether this saves time in practice still needs user testing. The first useful step is agreeing clear boundaries together; later AI comparisons depend on those boundaries.

What it does

HoldOn turns a chat agreement into a checklist with prices, delivery terms and scope boundaries. Both parties confirm the same version.

When a new request arrives, AI compares each part with that confirmed agreement and cites the relevant wording. In our fictional logo example, packaging and animation are explicitly excluded, while correcting the company name belongs to the original work. The AI separates these requests rather than treating everything as a paid addition.

The seller selects the additional work and writes its price and delivery window. Both parties accept the quote before HoldOn creates a separate order. The original order is preserved. Editing the quote clears earlier confirmations.

PayPal Sandbox handles authorization and capture. Delivery evidence is reviewed by AI, but people decide what to accept. A buyer can accept an item beyond the available AI evidence by recording a reason. Full acceptance at the original price uses the already-confirmed seller agreement; a reduced settlement needs a further seller confirmation.

How we built it

The application uses Next.js, React and TypeScript, with a local JSON store for this single-process prototype. Zod validates external inputs and model responses. DeepSeek extracts agreements, compares scope and reviews images. Quotation checks reject invented source text.

The backend uses PayPal Orders v2 and Payments v2 for Sandbox order creation, authorization, capture and voiding. It records transaction references and uses stable request IDs and reconciliation to handle retries. AG Grid Community provides a sortable, filterable overview of deals and payment states.

Codex assisted implementation, debugging, test construction and documentation. The demo uses generated fictional assets and one operator switching between buyer and seller views.

Challenges we ran into

An early extraction dropped an exclusion clause. Later scope comparison could no longer establish whether the added work was outside the agreement. We added non-priced scope terms, made them part of both parties' confirmation, and included them in later comparisons.

Another challenge was separating uncertainty from failure. A filename is not proof of file contents, and an incomplete submission before its deadline is not automatically late. HoldOn keeps those cases available for human review instead of letting model confidence alone determine payment.

Accomplishments

The recorded scope-change walkthrough created a $45 additional order while preserving the original $120 order. The additional order completed Sandbox authorization, test delivery, documented acceptance and a $45 capture. An independent PayPal API read confirmed exactly one completed capture. A separate earlier Sandbox check verified that repeating release returned the existing result and changing the requested amount was rejected.

The project has 26 passing automated tests, a successful production build and saved local evidence from the live Sandbox walkthrough. The checks use a mixture of simulated API tests and actual Sandbox calls; they are described separately in the repository.

What we learned

Scope analysis is only useful if the original boundaries survive extraction. Human approval is only meaningful if the application records it and allows a reasoned decision beyond the model's suggestion. Payment retries also need explicit handling: a successful capture and a failed later step must not become a second charge.

What's next

We want to test the workflow with freelancers and repeat clients, measure whether it reduces clarification work, and learn which cases remain too subjective.

We also plan to merge quote acceptance with PayPal authorization: the seller would issue a quote, and the buyer would accept that exact quote and authorize payment in one connected flow. The saved quote version, both parties' agreement and safeguards against stale or changed terms would remain. This is a planned reduction in steps, not a feature shown in the current demonstration.

Public deployment would also need authenticated roles, durable shared storage and appropriate PayPal seller onboarding. The current build is a local Sandbox prototype, not a production payment service.

Built With

Share this project:

Updates

Submission history