-
-
Tap the coin with any phone and the tip page opens. No app, no QR code.
-
The owner dashboard. Claude sorts every message and writes the panda’s notes for the day.
-
Abusive messages stay hidden by default. The owner can read them with a translation, overrule the AI or refund.
-
The finished panda: nine cardboard boxes with an ESP32 and a PN532 inside.
-
Side by side: send a tip on the left, the panda reacts in the middle and the dashboard updates on the right.
-
Inside, with both doors open. Nothing is glued to a board, so everything can come out.
-
Every net with its measurements. The full build guide is in the repo.
Inspiration
Most of us don't carry cash anymore and neither do we. When someone does a great job, like a street musician, the person at the front desk or a delivery driver, there is often no easy way to say thank you with a tip. The tip jar only takes coins and tipping devices you can just tap are still rare. We wanted to make one that is simple, friendly and works with PayPal.
What it does
TiP stands for Tip integrated Panda. It is a friendly cardboard panda that takes tips with a gold coin on its chest.
- Tap the coin with a phone and the tip page opens. There is no app to install and no QR code to scan.
- Pick an amount, write a message if you like and pay with PayPal.
- Claude reads the message and decides what kind it is: warm, playful, a request or plain.
- The panda's light answers with its own pattern for each kind. A warm message gets a heartbeat, a joke gets a flicker and a song request gets long pulses. Bigger tips make the light play for longer.
The owner sees every tip arrive live on a dashboard. Abusive messages get one plain blink and stay hidden unless the owner chooses to read them, with a translation if they are in another language. The owner can overrule the AI and hide a message again. Every day Claude also writes the owner a short note about what tippers said, such as the most requested songs, which languages they wrote in and the overall mood.
We chose a panda because a tipping device should feel friendly, not like a payment terminal. The electronics inside are small, so the same idea could just as well be a bear, a cat or anything else someone wants to build.
How we built it
Server. Java 21 and Spring Boot 4 with PostgreSQL, deployed on Render as a Docker web service with a Render Postgres database.
PayPal. The tip page uses the PayPal JavaScript SDK with PayPal Smart Buttons, including the guest debit or credit card option. The server creates and captures orders through Orders v2 with the PayPal Server SDK and confirms every payment either from the capture answer or from a webhook whose signature PayPal has verified. Refunds and reversals made in PayPal show on the dashboard live. Everything runs on PayPal's sandbox.
AI. Claude (claude-haiku-5-5 through the Anthropic API) reads each message and returns structured output: the kind of message, whether it should be flagged and a translation when needed. We treat its answer as untrusted input. It is checked against a fixed schema before anything uses it and if Claude is slow or down the tip still goes through and the panda plays a plain blink. A circuit breaker and hourly and daily caps keep the cost under control.
Device. An ESP32 runs our own firmware. A PN532 board pretends to be an NFC tag that holds the tip page link, so a phone tap opens it. The ESP32 keeps a secure WebSocket open to the server, acknowledges each reaction as soon as it arrives, and plays the light pattern on its own blue LED behind the panda's nose. It reconnects by itself after WiFi drops or server restarts.
The panda. Nine cardboard boxes, drawn by hand with a ruler, cut, folded and glued. The full build guide with every measurement is in the repo.
Challenges we ran into
- NFC through cardboard. Our first test showed a phone could not reach the PN532 through 3 to 4 mm of cardboard at all. The panda now has a window cut in its chest so only the paper coin sits between the phone and the antenna.
- The NFC library. The library we started with kept the processor busy the whole time the tag waited for a phone. We wrote our own link to the PN532 from its manual.
- Trusting the AI. A message can try to talk the AI into anything. The message is fenced off from our instructions, the AI only ever chooses from four light patterns, its answer is validated, and it can never touch money. We test it against a set of injection attempts.
- Payments that must not get lost. A tip has to be recorded exactly once, even if the webhook arrives before the page gets its answer, arrives twice or never arrives.
What we learned
This was our first hardware project. We learned how NFC tag emulation works, how to keep an ESP32 connected to a server and recovering on its own and how to build a payment flow where every step can fail and the money still ends up in the right place.
What's next
Right now the WiFi details are set when the firmware is flashed. Next is a setup page the panda opens on its own WiFi, so anyone can connect it to their network from a phone. We want to keep the panda handmade from cardboard. A tip jar that someone clearly built with their own hands feels honest, not like a machine after your money. What can get better is the build itself: a sturdier cardboard body, a brighter light the whole panda glows with and a neater fit inside.
Built With
- arduino
- claude
- css
- docker
- esp32
- html
- java
- javascript
- nfc
- paypal
- paypal-javascript-sdk
- paypal-orders-api
- platformio
- pn532
- postgresql
- render
- spring-boot
- websockets
Log in or sign up for Devpost to join the conversation.