Inspiration
When I was thinking of a project for the hackathon, it was also Halloween, and I was shopping for a costume: a chicken onesie, for Chicken Joe from Surf's Up. On top of that, I had a lot of work to do. So I thought, why not build something that finds the best options for exactly what I want, within my budget?
What it does
You tell ShopPal what you're looking for in plain words, like "a gift for a coffee lover under $50." It searches real online stores, picks the three best matches, explains why each one fits, and recommends one. You can ask follow-up questions or have it compare options. When you've decided, it shows a checkout card, and you pay with PayPal yourself. The AI never charges you on its own.
How I built it
I built ShopPal with a Node.js and Express backend and a plain HTML, CSS and JavaScript frontend. I used Claude Code as an AI coding assistant to help scaffold and write the code, then tested, refined, and directed the design myself.
- AI agent: Inside the app, the Claude API runs as an agent on the server. It decides when to search for products with the Channel3 API, compare them, and set up a checkout.
- Payments: Checkout uses PayPal's Orders API in sandbox mode, and the server looks up every price itself so the browser can't change it.
- Desktop app: I packaged the same app with Electron as a floating desktop panel.
- Reliability: Mock modes keep the demo working even without API keys.
Challenges I ran into
- Inconsistent API docs: Channel3's docs showed the price field two different ways, so I wrote a converter that handles both.
- PayPal popups on desktop: PayPal's login popup was tricky inside the desktop app, because it opens a blank window before loading PayPal. I had to explicitly allow those windows, and I added a pay-in-your-browser fallback in case the popup failed.
- Keeping the AI and the UI in sync: Getting Claude's written recommendations to match the product cards on screen was hard. I fixed it by giving the agent a dedicated tool for choosing which products to display.
- Demo reliability: I wanted the demo to work even if an API key was missing or the Wi-Fi dropped, so I built mock versions of every service.
Accomplishments that I'm proud of
- ShopPal goes all the way from a casual sentence to a completed PayPal checkout in one conversation, with recommendations based only on real product data.
- The same codebase runs as both a web app and a floating desktop panel, which you can shrink into a small bubble and keep on top of your other apps.
- It's safe and honest: the AI can never charge you on its own, the server sets every price, and the app clearly labels that payments run in sandbox mode.
What I learned
- Giving an AI agent a small set of clear tools works better than one big prompt. A dedicated tool for choosing which products to display is what kept Claude's answers and the product cards in sync.
- Important decisions belong on the server. The AI suggests a checkout, but the server sets the price and the user confirms the payment, which makes the agent safe to trust with money.
- Building mock modes early paid off, because I could test the full flow before every API key was working.
What's next for ShopPal
- Real fulfillment: Right now payments go to my PayPal sandbox account. The next step is connecting ShopPal to retailers through a merchant or agentic-commerce integration so it can place actual orders.
- User accounts: so ShopPal can remember your sizes, budgets and favorite brands.
- Price tracking: alerts when something you want drops in price.
- Longer term: shopping by photo, and comparing prices from several retailers side by side.
Built With
- anthropic
- channel3
- claude
- claude-code
- css3
- electron
- express.js
- html5
- javascript
- node.js
- paypal