Inspiration
Freelancers don’t lose money because PayPal is hard — they lose it in the gap between messy client chat and actually sending an invoice. Notes live in WhatsApp, amounts change mid-thread, and “I’ll invoice later” becomes weeks of overdue cash.
We wanted an agent that meets freelancers where they already talk, then uses PayPal as the payment rail — not another fake ledger.
What it does
PayPilot turns messy work notes into a local DRAFT invoice. You review a confirmation card, then Confirm. Only then do we create a PayPal sandbox invoice and share link.
After that you can:
- Track SENT → PAID / OVERDUE (webhooks + sync)
- See cash and client risk on an AG Grid dashboard (totals computed in code; AI explains)
- Send capped PayPal reminders with AI-written copy
- Optionally convert INR → USD with an explicit FX confirm before drafting
Rule we never break: the model drafts locally; a human confirms; PayPal sends.
Try it: paypilot-docker.onrender.com — unlock at /unlock with code paypilot (first hit may take ~60s).
How we built it
- Next.js + Vercel AI SDK streaming chat with tools (
proposeInvoice, cash / risk / overdue) - PayPal Agent Toolkit + Invoicing REST for create/send, share links, webhooks, remind
- Drizzle + libSQL / Turso for invoice state that survives deploys
- AG Grid on
/dashboardfor earnings, filters, and risk - Render Docker free tier + GitHub Actions for keep-alive and overdue cron
- Postman collection for API smoke paths
- Parser evals 40/40; HITL and prompt-injection covered in tests
Challenges we ran into
- Keeping the agent helpful without letting it call PayPal create/send itself
- Free Render: no disk, cold starts, no cron → Turso + keep-alive + Actions cron
- Clear UX so judges never think chat already billed the client
- Sanitizing untrusted names/notes/emails and capping invoice size / reminder rate
What we learned
Human-in-the-loop isn’t a demotion for AI — it’s the product. PayPal’s strength is the rail (invoice, pay, webhook, remind). AI’s job is parsing chaos, drafting carefully, and explaining cash risk — then getting out of the way until Confirm.
Log in or sign up for Devpost to join the conversation.