Check4u – take a photo, AI recognises it, know the value instantly
1 photo is enough
up to 15 products per flea-market scan
3 AI providers (Gemini · GPT · Claude)
eBay real market prices (Browse API)

The problem

Anyone who collects things or sells second-hand knows it: what is this actually worth? Searching eBay for every item, describing the condition honestly, writing text in two languages, estimating the price – and deciding within seconds at a flea market whether a find is worth the money. Existing apps usually do only one of these, send everything to third-party clouds or want to sell it themselves in the end.

  • Without research the value of an item is pure gut feeling
  • Writing sales texts costs minutes per item – hours for a collection
  • At a flea market there is no time to check every piece individually
  • Typing listings into classified-ad sites by hand is busywork

The solution

Check4u is a mobile-first PWA: take or upload a photo, pick a category – done. In the background an AI model analyses the image (Gemini 2.5 Flash by default, GPT-4o or Claude as alternatives) and returns brand, model, condition 1–5, category-specific attributes, visible defects, an honest sales text in German and English, keywords and a price range. Right after that a second job queries the eBay Browse API for active listings and puts the real market price next to the AI estimate – with the top 3 listings as links. In flea-market mode one photo of the whole table is enough: up to 15 products are recognised, created individually and marked with a buy/skip traffic light (green / orange / red) directly on the photo. Everything ends up in a collection with categories, value history and favourites. Runs on my own server – images and data stay with me.

My role

Initiator, product owner & developer (own project)

  • Idea from my own everyday life: value a collection, check flea-market finds, write ads faster
  • Architecture: Laravel backend, queue jobs, AI provider layer, eBay OAuth
  • Prompt design for honest condition descriptions and category-specific attributes
  • Development together with my AI assistant LISA – from v0.1 (SnapSeller4u) to Check4u
  • Runs on my own server, used daily myself

Features

Scan: normal, super scan, flea market

Camera or upload, category picker. Super scan takes several photos in a row, flea-market mode recognises up to 15 products from one photo.

AI analysis with 11 category schemas

Brand, model, condition, attributes per category (games, electronics, clothing, trading cards …), DE/EN sales text, price range, age-rating warning (USK/FSK). Honest instead of marketing speak – that is written into the prompt.

Real market price via the eBay Browse API

OAuth2, active eBay.de listings with condition filter, comparison card AI vs. eBay, top 3 listings with image and direct link. The AI provides an optimised search query for it.

Flea-market traffic light

Coloured price badges directly on the scan photo: green = buy, orange = so-so, red = hands off. Plus a quick-decision card per item with eBay average and estimated profit.

Collection, value history, favourites

8 system categories, dashboard with total value, value history per item, purchase price and date, re-analysis and price-check refresh, marketplace quick links (eBay, classifieds, Amazon, Google Shopping).

Multi-user, admin, PWA

Users with monthly scan limit, seller profile (first person, negotiable/fixed/express), login history; admin area with AI settings, prompt, token/cost tracking and impersonation. Installable as a PWA with offline page.

Engineering & technology

Two building blocks that make the difference: the Chrome extension that shortens listing, and an AI layer that does not depend on a single provider.

Chrome extension "Check4u listing helper" (Manifest V3)

Shows the prepared items from Check4u in the popup (image, title, price) and overlays a movable bar on the "post an ad" form of kleinanzeigen.de: title, description, price, price type, shipping/pickup and postcode are pre-filled, photos inserted on request. A status line honestly reports which fields were filled – no success message without success. Connects to the app via base URL + personal access token.

What the extension deliberately does not do

No login, no submitting, no reading of other people's ads. Automated posting violates the terms of use of kleinanzeigen.de – pre-filling is a writing aid, reviewing and publishing stays with the human. Hence deliberately not in the Chrome Web Store, but loaded as an unpacked folder on my own machine.

AI provider layer with cost control

AiProviderInterface → Gemini / OpenAI / Claude behind a shared prompt and JSON-parsing base; default switchable via admin setting. Gemini with multi-key rotation on rate limits, every call with token and cost log. Rate limits throw a dedicated exception – no endless retry, honest error banner in the UI.

Asynchronous via queue jobs

AnalyzeItemJob, AnalyzeMultiScanJob and EbayPriceCheckJob run in the queue worker – the app stays smooth while scanning, price checks are staggered for multi-scans. Thumbnails are created on upload (Intervention Image), MariaDB as the database.

Results

Gut feeling AI + eBay price Value of an item
Minutes per text 1 photo Sales text DE/EN
Retyping Pre-filled Classified-ad form

Check4u is not a product for the market but my daily tool – and it is measured by exactly that: it runs on my own server, with my data, with a traffic light that sometimes says "hands off". The AI price estimate remains an estimate; that is why the real eBay price sits next to it. And the Chrome extension takes the retyping off my hands, but not the decision. For me as a developer, Check4u is the practice ground where multi-provider AI, queue architecture, external OAuth APIs and a browser extension come together in a real everyday flow.

Screenshots 10 images

1 / 10 Home screen: total value of the collection (blurred here) and the most recently added items – the screenshots are from version 0.2, back then still named iCheck4u

What I learned

Three lessons: first – the prompt decides about honesty. "No marketing speak, name defects" had to go in literally, otherwise every analysis sounds like ad copy. Second – never depend on a single AI provider: rate limits and price changes come, the provider layer has saved me several times. Third – respect limits instead of circumventing them: the extension fills forms, it does not submit anything. This line is commented in the code and will not be softened.

All projects