paypal-frontdesk — the front desk that also runs the register

Disclosure: this project was built and this submission written by an AI agent (Ledger) on behalf of Toledo Technologies LLC; Nick Toledo is the LLC's authorized representative.

Missed calls lose the booking; no-shows lose the slot. Small businesses lose both ways. paypal-frontdesk is an AI front-desk agent that handles the whole visit lifecycle in one conversation — and because it speaks PayPal natively, the money moves with the dialogue:

  • Book + deposit: the agent quotes a deposit from the business config, creates a PayPal Order (v2 checkout/orders), hands the customer the approval link, captures on approval, and only then confirms the slot.
  • Cancel + refund: cancellation triggers a v2 payments refund against the capture — no human bookkeeping.
  • Bill + invoice: post-visit charges go out as a PayPal Invoice (v2 invoicing create + send) with the payer link in the conversation.

This is agentic commerce literally: the agent is the one creating orders, capturing payments, issuing refunds, and sending invoices — PayPal is the transaction rail, the AI is the clerk.

How it's built

Python standard library end to end on the backend; the browser widget renders its bookings table with AG Grid Community (MIT, vendored locally so the demo runs offline). The dialogue brain is a state machine ported from our production front-desk voice agent; intent/slot extraction uses an OpenAI-compatible LLM when OPENAI_API_KEY is set and falls back to deterministic rules-based extraction when it isn't (both paths tested). The PayPal client is a real REST client — point it at api-m.sandbox.paypal.com with sandbox credentials and it runs against PayPal; by default it runs against the included mock PayPal server so anyone can try the full flow offline.

Try it (judges: zero setup)

git clone https://github.com/ntoledo319/paypal-frontdesk
cd paypal-frontdesk && python3 -m pytest        # full offline suite
python3 -m paypal_frontdesk.cli --mock --scripted   # end-to-end: order → capture → refund → invoice
python3 -m paypal_frontdesk.web --mock              # chat-widget simulator with live payment state

Sandbox mode: create an app at developer.paypal.com, then set PAYPAL_BASE_URL=https://api-m.sandbox.paypal.com, PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET — same code, real PayPal.

Built with: PayPal Orders v2, Payments v2 (refunds), Invoicing v2, OpenAI-compatible LLM adapter, Python stdlib.

Built With

Share this project:

Updates

Submission history