How it works, technically

How it is built, where it can leak, and how we close it.

Two codes, two rewards, one set of checks. Here is the simple build, the loopholes, and how each one is covered so every reward is real and every consumer is tracked.

The two codes

One pool for samples, one for sold packs

Every code is pre-generated in a master table, long and random so it cannot be guessed, and tied to one of two types.

Sample code

Reward type: coupon

  • Printed on free sample sachets and booth handouts
  • Marked type = sample, so it can never pay cashback
  • On entry it issues a coupon for the next paid purchase
  • Closed out only when the coupon is actually used
Pack code

Reward type: cashback

  • Printed on or inside every pack that is sold
  • Marked type = purchase
  • Needs the code plus a bill before any payout
  • Pays cashback to UPI, then offers more off next time
How it can be done

The build, in five plain steps

1

Generate the codes

A master table of unique, random codes, split into the sample pool and the pack pool. Each row holds the code, its type, batch, status and, once claimed, the consumer it belongs to.

2

Print them

Pack codes go on or inside the pack at the print run, under a scratch panel or the inner flap. Sample codes go on the sachet and on booth material.

3

Capture on entry

The consumer enters the code in the chatbot, or scans the QR at a booth. We read the type and decide the reward: coupon for a sample, cashback for a pack.

4

Validate

For a pack, the code is the primary check and the bill is the secondary check. The bill is read for store, date, amount and product, and matched to the code.

5

Reward and record

Cashback pays to UPI through a gateway like Razorpay, or the coupon is issued. Every event writes back to the consumer record and the dashboard.

Loopholes, and how they are covered

Where it could leak, and the check that stops it

Offline activations leak the most, so each risk has a specific control.

Loophole
How it is covered
Guessing or sharing a code
Codes are long and random, one-time use, and deactivated the moment they are claimed. Attempts are rate-limited.
Claiming cashback on a free sample
Sample codes are type = coupon. The system can only ever issue a coupon on them, never a cash payout.
Fake or reused bills
The invoice number is the duplicate key. Bills are read and checked, edited images are flagged, and one reward is allowed per invoice.
Code and bill do not match
The product and amount on the bill must match the code's product. A mismatch is held for review, not paid.
One person, many claims
Cashback is capped per phone number and per UPI ID, with velocity limits. The UPI name is checked before payout.
Bots and fake sign-ups
One entry per device, device fingerprinting, and the payout only lands on a real, name-matched UPI ID.
Promoter or booth misuse
Codes activate only when a consumer scans at the booth, with time and place logged. The promoter app and a reconciliation report catch outliers.
How the consumer is tracked

One record, from first scan to repeat buy

The phone number and UPI ID are the stable keys. Everything attaches to them.

Identity

Anonymous to known

The first scan sets a first-party id, even before sign-up. Registration links it to the phone number, and the payout links it to the UPI ID. From then on it is one consumer record.

Across platforms

One view, wherever they buy

The code and the bill capture the platform and store, so a buy on Amazon, Zepto, Blinkit or in a kirana shop all land on the same record. No need for each platform's own data.

What we can see

Source, product, repeat

  • Where they came from: which activation, booth or campaign
  • What they bought: product, quantity, platform, date
  • How often: first buy, repeat rate, time between buys
  • How they respond: messages opened, coupons used
What it powers

Acquisition cost and retargeting

Because sample, code, bill and consumer all connect, the dashboard shows a real acquisition cost. The same record drives WhatsApp and email follow-ups, and consented segments for ads.

See it in the prototypes

The same checks run behind the two workflows.