DEV Community

Auu Cooper
Auu Cooper

Posted on Edited on

Building CouponLab Why Verified Coupons Still Need a Human Check

I got tired of copying a coupon code, going back to checkout, and seeing “This code is not valid.”

That small frustration is why I started CouponLab.

Most coupon sites treat codes as inventory. They scrape or buy a feed, dump it on a page, and hope for the best. The problem is the gap between “the code exists” and “the code actually works for this cart, this user, this store’s rules.”

CouponLab tries to close that gap.

How the data side works

I pull on a schedule (currently three times a day). The feed is incremental — new, updated, and suspended offers get applied to a local catalog. Expired codes stay visible for 30 days at the bottom of store pages, then drop off. That alone removes a lot of the “I found this code from 2023” problem.

Right now the catalog sits at roughly 401 stores and just under 400k offers. Instead of thin individual coupon pages, the SEO surface is the store hub. Each merchant gets one page that lists live codes, conditions, and expired ones at the bottom. That structure is deliberate.

Where AI helps (and where it doesn’t)

AI is useful for discovering offers and drafting descriptions. It is not useful for telling me whether a code will survive checkout. A code can be technically valid and still fail because:

  • it’s new-customer only
  • it has a minimum spend the feed didn’t surface clearly
  • the store excludes certain categories
  • the code is region-locked

So the verification step is still manual. I try codes, note the conditions that actually matter, and surface those notes on the page. The goal is not “every code works for everyone.” The goal is “you can tell quickly whether this code is worth trying for your situation.”

Current stack notes

The public site is couponlab.com. There’s also a small browser extension that surfaces live codes for the current tab. The feed pipeline is a simple PHP incremental puller that writes a catalog JSON. I’m keeping the data layer boring on purpose so the interesting work stays on verification and the store-page experience.

If you’re building anything that sits between a raw data feed and a user who has to act on it, the “last mile” is usually the hard part. For coupons, that last mile is checkout.

Top comments (0)