1. Work
  2. Seattle Sun Tan
  3. Vendors
Backend live

Vendor & Contract Work

Rewards, rebuilt in-house.

Replacing a paid vendor’s rewards platform with a system the business owns, and checking outside vendors’ claims against the data.

Role
Software engineer
Stack
TypeScript, Hono, Expo, Supabase
Period
May 2026 to present
Status
Backend live; apps in TestFlight

01The vendor

Replacing the rewards vendor

Before

An outside vendor’s platform, paid monthly: a messaging system bundled with two rewards apps, built on a no-code platform and published under the vendor’s own developer accounts.

Now

Rebuilt in-house, on a ledger and developer accounts the business owns.

I rebuilt the system in-house. For customers it works the same way.

The same points, rewards and balances, and on iOS the new apps ship as updates to the existing App Store listings, so nobody has to find a new app.

  • Redesigned apps for both brands, built from one codebase with each brand’s own design
  • Balances on a ledger the business owns, with every redemption checked and debited on the server
  • Passwordless sign-in, so no customer has to reset a password the old vendor never exported
  • Developer accounts in the brands’ own names on Apple and Google
  • No monthly fee for the apps or the rewards program once customers switch over

I wrote the handover requirements, starting with the consent records: the per-contact opt-in history that decides whether the business can keep messaging the customers it inherits.

Every customer balance carried over to the new ledger and matched the old system’s export. How the apps and the ledger work is on the Mobile Apps and Backend & Data pages.

02The SOW

Reviewing a statement of work

For a data-platform project with an outside partner, I reviewed the draft statement of work.

  1. Review the draft against what our data actually holds
  2. Flag the assumptions that would not survive contact with it
  3. Hand the owners the questions to settle before signing
ImplementationSST’s technical counterpart: acceptance testing and staff trainingOngoing

03Claims

Checking claims against the data

Before a vendor’s claim drives a decision, I measure it against the live database.

  • DeduplicationThe point-of-sale customer ID was already a reliable key, and merging on email address would have fused unrelated customers who share a placeholder address
  • A metricMembership sales, defined for an analytics consultancy building dashboards on the same data: count purchases, not activity, so free package redemptions do not register as sales
  • AdoptedSent with a reference series to validate against. Their workflow now runs on it