ChaatPass is loyalty a family-run restaurant can own

Our own product: an SMS loyalty program that needs no app or new hardware. The customer’s phone number is the card, and every point is a row in a ledger that has to add up. Live in pilot at Karachi Chaat House on Devon Ave since April 2026.

OUR OWN PRODUCT · SMS LOYALTY· PILOT · DEVON AVE, CHICAGO· LIVE · PILOT
Visit chaatpass.com
420
Members enrolled
3
Sign-up channels · kiosk, web, table QR
46
Members who have redeemed a reward
0
Points of difference between balances and ledger

All four numbers are from the ChaatPass production database, read on October 2, 2026. Pilot launched April 2026.

The problem

Big chains run loyalty programs that remember every order and bring customers back. Most independent restaurants have a paper punch card at best, or a marketplace app that keeps the customer relationship for itself. Devon Ave is one of Chicago’s great dining corridors, and its family-run restaurants had no practical way to own a repeat audience.

How it works

Your number is the card

Customers give their phone number once. They can do it at the kiosk or when ordering online, or scan the QR code on the table. Nobody needs an account or a password.

Automatic points

Every paid order earns 5% back. Points land with no staff step, because the program reads the payment itself.

Self-serve redemptions

At 100 points, $5 comes off the next order. Members redeem it themselves on the same three channels. Nobody has to go to the counter or read out a code.

A few texts per order

One or two transactional messages per order, such as a welcome or a points-earned note, plus a text when a reward is ready. STOP works at any time.

When a delivery fails

If a delivery can’t be dispatched after a customer redeems, the points go back automatically. Members never pay for our failures.

The rules

$1 earns 1 point, worth 5¢. Points cover up to half a bill.

Points are a ledger

We treat points as money the restaurant owes its regulars. Every change to a balance is a row in a ledger, and the balance is only ever the sum of those rows.

Square
Whether an order was paid. Points are earned only after Square confirms the payment.
The ledger
One table of loyalty transactions: sign-up bonus, earn, redeem, reversal and adjustment. It is the history.
The member balance
A running total kept beside the ledger so checkout is fast. It has to equal the sum of that member’s ledger rows.
Twilio
Delivering the texts, and handling STOP.

What has to stay true

Balance equals ledger
One database function writes the ledger row and updates the balance in the same transaction, with the member row locked while it runs.
One payment earns once
Earn rows carry the Square payment ID, and the database refuses a second earn for the same payment.
A redemption can’t exceed the rules
The server checks the member’s real balance and the half-the-bill cap before it applies a reward.
A failed delivery restores the points
If dispatch fails after a member redeems, a reversal row puts the points back and the payment is refunded.

When a redemption fails

  1. Paid order. Square confirms the payment.
  2. Member identified. The phone number on the order matches a member.
  3. Earn recorded. An earn row is written with the Square payment ID, and the balance moves in the same transaction.
  4. Reward redeemed. On a later order the member takes a reward. A redeem row lowers the balance.
  5. Delivery fails. Uber can’t dispatch the order.
  6. Value restored. The payment is refunded and a reversal row returns the points. The ledger keeps both rows.

In production this path has written 4 reversal rows that returned 285 points, as of October 2, 2026.

Reconciliation

Source: ChaatPass production database, read on October 2, 2026. Pilot totals since launch in April 2026.
MetricValueHow it is counted
Member balances, total22,203 pointsSum of every member’s balance
Ledger, total22,203 pointsSum of every ledger row
Difference0 pointsBalances minus ledger. 0 of 420 members are out of step.
Members420Member records
Sign-ups413Sign-up bonus rows in the ledger. Not every member record has one.
Points issued26,16321,486 as sign-up bonuses and 4,677 earned on purchases
Points redeemed4,16196 redemptions
Redemption rate15.9%Points redeemed divided by points issued
Adjustments and reversals201 pointsNet of 4 reversals and 26 adjustments. Issued, less redeemed, plus this figure gives 22,203.
Members who have redeemed46Leaves out online redemptions made without a one-time code. With them the count is 57.
Member purchases246Earn rows in the ledger

These are points and counts. The restaurant’s sales figures are not published here.

What went wrong and how we fixed it

On September 26, 2026 we checked every balance against the ledger and they did not all match. Older code had updated balances and written ledger rows as two separate steps, and some early rows had the wrong sign.

We posted 23 correcting rows, each labelled with the reason for it, and moved every balance change into the single database function described above. Balances and ledger matched that day. They matched again when we read them on October 2, 2026.

Limits

  • These are totals for one restaurant in pilot. They say nothing yet about how the program performs elsewhere.
  • The balance check runs daily as a scheduled job. On October 7, 2026 we planted a one-point error in the test copy of the database: the check caught it and alerted, and went quiet once it was fixed.
  • The database refuses edits and deletes to ledger rows; a correction is a new row.
  • Points come back automatically when a delivery fails. A refund issued by hand at the register does not restore points on its own.
  • Most member records don’t record which channel the sign-up came through, so we don’t publish a split by channel.

The pilot

ChaatPass launched in April 2026 at Karachi Chaat House on Devon Ave, running on the ordering and kiosk platform we built and run in production. Since its launch month, 200 more members have joined, and members redeem on their own in every channel. Next, it opens to more family-run restaurants on the block through a founding-partner waitlist.

See it live

The ChaatPass product site
chaatpass.com, the live product site
Vanilla JSSupabaseTwilioSquareNetlify

Running a restaurant that should own its regulars?

ChaatPass is opening to founding partners on Devon Ave. If you want the same system, or loyalty built around your own stack, tell us about it.