Inspiration

Freelancers work across a dozen apps: the client on WhatsApp, the brief in email, the file on Drive, the money on PayPal, Wise or a bank transfer. When something goes wrong ("I never received it", "that's not what we agreed", "pay me on Friends & Family to skip the fees"), it's their word against the client's, and the proof is scattered everywhere. I wanted one place where the deal itself is the proof.

What it does

DealRoom is a chat where people who sell digital work and people who buy it talk, agree, pay and deliver. Every step is recorded with its time.

  • The chat becomes a contract. When the conversation has the work and a price, the AI drafts the terms from the chat. Both sides accept, and only an agreed change can move them later. New work becomes a new deal.
  • PayPal payment locked to the terms. The freelancer makes a real PayPal invoice, and the client pays with the PayPal button. The amount comes from the accepted terms, not from the browser.
  • AI file check. Every delivery (image or PDF) is checked against the terms: "Translated to English ✗", "Yellow background ✗".
  • Download record. When the client opens the file, it's recorded, which matters when someone says "I never received it".
  • Scam warnings. Off-platform payment tricks (Friends & Family, Wise, crypto, "I overpaid, send the difference back") are flagged as they're typed.
  • Private honesty check. Before someone sends a claim the record contradicts, DealRoom shows only them the facts, so nobody gets accused by mistake.
  • Grounded dispute evidence. One click builds a report for PayPal: a neutral timeline, both sides' statements and an assessment. Every sentence must cite a recorded event, or code removes it. For the freelancer it goes through PayPal's Disputes API; the client gets the PDF for their case.
  • A business dashboard on AG Grid's AG Studio. What you earned through PayPal, who owes you, what needs you now, and "Proof on record" for every deal: terms, payment, delivery, download. An AI assistant answers questions from the record, like "What's my client return rate?"

How I built it

  • Backend: Python, Flask and SQLite. Each visitor gets a private copy of the demo world, and both logins share it, so two windows update live.
  • PayPal (sandbox): Orders v2 with a server-set amount, capture, Invoicing v2, Refunds, the Disputes API to provide evidence, and verified webhooks.
  • AI: NVIDIA Nemotron models on Nebius: Nano for quick classification, Super for terms, claims and dispute reports, and Super VL for checking images.
  • Rule: the AI reads, code checks. Every number in the terms must appear in the chat. Every sentence in a dispute report must cite an event. Every message from the AI-played people is checked against the record before anyone sees it.
  • Dashboard: AG Studio (AG Grid) with custom widgets, a custom theme, and its AI agents connected to the same models. The assistant gets exact facts computed by code from the record.
  • Testing: 61 automated tests, scripted tricky scenarios on the real models (35 of 35 passing), and an AI tester: a model plays a liar, a scammer, a haggler or a prompt-injection attacker against the app, and a second model audits the result.

Challenges I ran into

  • AI that agrees too easily. The AI-played client said "I've sent the payment" when PayPal showed nothing, and offered to pay a deposit twice. Now code checks every AI message against the record, and the model retries or stays silent.
  • A curly apostrophe broke a safety check. "I’ve" slipped past a rule written for "I've". The AI tester found it.
  • Terms that followed the first request instead of the latest agreement. "I don't do brown, only red" still produced brown terms until the rules put the latest agreement first.
  • A vision model fooled by a detail. A blue dog portrait passed "red logo" because the dog wore a red collar. The check now confirms the file is the agreed item, and that a color means the main colors of the work.
  • A payment that silently didn't complete. PayPal refuses to capture an order whose invoice id it has already seen. Every order now gets a unique id, and a failed capture is shown, never swallowed.

Accomplishments that I'm proud of

  • Real PayPal payments, invoices and dispute evidence, all tied to one recorded conversation.
  • AI that is checked by code instead of trusted: no invented payments, no contracts that drift from the chat.
  • Letting an AI attack my own app, and fixing what it found.

What I learned

Trust in a marketplace isn't about being nice. It's about proof that both sides can see. And with AI, the useful question isn't "can it write this?" but "how do I check what it wrote?"

What's next for DealRoom

  • File previews that unlock fully on the final payment, so the freelancer never gives work away for free.
  • Payment reminders sent through PayPal Invoicing.
  • Live updates in the dashboard the moment a PayPal payment lands.
  • Real accounts and invitations, so any freelancer can bring their clients.

Built With

Share this project:

Updates

Submission history