Inspiration
Buying second-hand in the Netherlands is fragmented across tools, tabs, and apps. Finding the right item on Marktplaats requires hours of scrolling. Evaluating whether a listing is fairly priced requires market knowledge most buyers do not have. Negotiating requires drafting your own messages in Dutch. Paying requires switching to your banking app. Most buyers either overpay, give up, or buy new. We wanted to build something that collapses the entire buying journey into a single conversation.
What it does
Snag is a conversational buying assistant that takes you from "I want to buy X" to a completed payment without leaving the chat. Before searching, Snag elicits your requirements through a structured conversation: what you want, your budget, preferred condition, brand, and any other specifications. Once it understands what you need, it searches Marktplaats in real time, scores every listing for relevance and value, and presents ranked results. You can also upload a reference photo and Snag factors in visual similarity when scoring listings. Paste any listing URL and Snag tells you whether it is a great deal, fairly priced, or overpriced, along with a suggested offer price. Click Make Offer and the Negotiation Copilot generates three ready-to-send messages in Dutch or English, each in a distinct style: direct, friendly, or hard haggler. Once you agree on a price, you pay the seller directly through your bunq account without ever leaving the app.
How we built it
The frontend is built with Next.js 14 and TailwindCSS. The AI layer uses two Claude models: Claude Haiku powers the conversational chat interface, handling requirement elicitation, follow-up questions, and context switches, while Claude Sonnet handles the heavier workloads: extracting structured search parameters from natural language, scoring listings for semantic relevance, analyzing listing URLs for deal quality, and generating personalized negotiation messages. Marketplace data comes from the live Marktplaats LRP API. Payments go through the bunq sandbox API with full RSA-2048 signed requests. Image input is handled client-side with resizing and JPEG compression before being passed to Claude for visual understanding.
Challenges we ran into
Integrating Marktplaats scraping reliably into the LLM pipeline was the biggest technical challenge we faced. The Marktplaats API returns listings in inconsistent formats, with Dutch attribute labels, variable condition descriptors, and incomplete fields that needed to be normalized before Claude could reason over them meaningfully. Getting the full pipeline from raw API response to a coherent, ranked result set to work reliably across a wide variety of search queries took significant debugging and iteration.
Accomplishments that we're proud of
The end-to-end flow genuinely works. From a natural language description to a scored list of real live listings, through URL analysis and negotiation drafts, to a completed bunq payment, every step is functional and connected. The Negotiation Copilot producing culturally appropriate Dutch messages in three distinct tones is something that would have taken a non-native speaker significant time to produce manually. We are also proud of the image modality integration: uploading a reference photo and having it meaningfully influence which listings rank higher is a feature that feels natural but required careful prompt and scoring design to get right.
What we learned
Prompt engineering for structured output at scale is underrated as a technical challenge. Getting Claude to consistently return well-formed scoring data across hundreds of listings, under varied and unpredictable input, required much more careful system prompt design than we initially expected. We also learned that financial API integrations, even in sandbox, demand the same rigour as production: RSA signing, session management, and error handling cannot be shortcuts.
What's next for Snag
The most obvious next step is connecting to real bunq accounts for live payments, which the architecture already supports. Beyond that, we want to expand to more Dutch marketplaces, add proactive deal alerts so Snag notifies you when a listing matching your criteria appears, and explore integrating bunq's budgeting features so Snag can tell you not just whether a deal is good but whether it fits within your actual monthly spending plan.
Built With
- bunqapi
- claude
- next.js
- tailwind
- typescript
Log in or sign up for Devpost to join the conversation.