All work
Social app with payments · iOS

Turning AI-generated compliments into money people actually send

A social iOS app where the AI writes the compliment and the sender attaches real money to it. Combining generative text with a working wallet is where nearly all the engineering went.

Year
2025
Platforms
iOS, Web
My role
Product design · iOS · AI integration · Payments & wallet
Stack
SwiftUI, OpenAI API, Stripe, Node.js
GlazeMe — overview
The situation

Context

Two categories that both stall for opposite reasons. Gifting apps stall because writing the message is work, and an empty text field at the moment of sending is where people abandon. Compliment apps stall because a compliment that costs nothing signals nothing — the sentiment is free, so it reads as free.

The problem

GlazeMe's bet is that each category fixes the other's failure: the AI removes the writing effort, and the money makes the message mean something. That is a clean product thesis and a demanding build, because it puts a language model directly in the path of a payment. Every second of generation latency and every piece of generic output sits between a user and a transaction.

What made it hard

The constraints

  • A model sitting inside a payment flow makes latency a conversion problem, not just a technical one
  • Generic AI output reads as spam and destroys the sincerity the product depends on
  • Money movement has to be correct on the first attempt — trust in a wallet is lost permanently, not temporarily
  • The entire send interaction has to complete in under a minute or the impulse is gone
Key decisions

Every choice has a cost

The tradeoff is stated next to each decision, because a case study that only lists wins isn't telling you anything useful.

01

The model drafts; the person always edits before sending

Fully automated compliments are indistinguishable from spam, and the sender needs to feel authorship for the gesture to carry meaning. Editing is what converts generated text into something the sender is willing to put money behind.

TradeoffAn extra step in a flow being optimised for speed. Worth it — removing it would have made the output feel machine-sent, which is fatal to the premise.

02

Condition generation on recipient context and the sender's own framing

Unconditioned output is generic, and generic is the failure mode that kills the category.

TradeoffMore input required before generation, and a more complex prompt path to maintain.

03

Build the wallet properly rather than delegating to a simple checkout

Top-up, balance, send, receive and withdrawal is a real ledger. Treating it as a series of one-off charges would have broken the moment anyone tried to withdraw.

TradeoffThe single largest chunk of build time went to the least visible part of the product.

04

Native SwiftUI rather than cross-platform

The whole product is one fast, tactile interaction. Cross-platform overhead would have been felt directly in the part that matters most.

TradeoffiOS only at launch. Android becomes a separate build rather than a flag.

How it works

Architecture

SwiftUI on the front, a Node service in the middle owning both the generation path and the ledger. Generation is conditioned server-side so prompt logic can change without an App Store release. The wallet is a double-entry ledger rather than a balance column — top-ups, sends, receipts and withdrawals are all entries, so a balance is always derived and can always be explained. Stripe handles the money rails in and out; the ledger is the source of truth for everything in between.

SwiftUIOpenAI APIStripeNode.js

Making the AI earn its place

A compliment generator is easy to demo and hard to ship. The demo version produces something charming once; the shipped version has to avoid producing something hollow on the fiftieth send. The answer was to stop treating generation as the product and start treating it as a draft — conditioned on real context, always edited, never sent unread. The model removes the blank page, which was the actual barrier. It does not pretend to be the sender.

The invisible half is the hard half

Most of the engineering is the wallet, and almost none of the marketing is. Balances that are always correct, sends that cannot double-spend, withdrawals that reconcile — this is the layer that determines whether a user trusts the app after their first transaction. It got the most care precisely because it is the part nobody notices when it works.

Designing for under a minute

The interaction is meant to be an impulse: open, pick someone, generate, adjust, attach money, send. Anything that added a screen to that path was cut, and generation latency was budgeted as a product constraint rather than accepted as a technical fact. A companion marketing site carries the job of explaining the concept, so the app never has to spend a screen on it.

How it ran

Build timeline

  1. Weeks 1–2

    Thesis and the send flow

    Prototyped the core interaction before any AI or payments work, to confirm the under-a-minute path was achievable at all.

  2. Weeks 3–5

    The ledger

    Built the wallet as double-entry from the start. Top-up, send, receive and withdraw, with reconciliation, before any of it was visible in the interface.

  3. Weeks 6–8

    Generation, conditioned

    Server-side prompt path with recipient context, always followed by an edit step. Latency and cost measured against the send flow rather than in isolation.

  4. Launch

    Review, listing and the marketing site

    App Store submission — a payments-plus-AI app draws more review scrutiny than most — plus the companion site.

Screens from GlazeMe

In hindsight

What I'd do differently

Generation cost per send should have been instrumented from the first build rather than estimated. In an app where every send triggers a model call and only some sends carry money, unit economics are a product constraint — and I was measuring latency long before I was measuring cost per completed transaction.

Other case studies

MadeInPK
B2B marketplace · iOS, Android & web

MadeInPK

MadeInPK connects Pakistani textile mills with international buyers who have no reliable way to tell a real supplier from a fraudulent one. Apps, web, escrow and admin tooling — designed and built end-to-end.

FaceMeQuiz
Game · iOS

FaceMeQuiz

A face-and-memory quiz game with daily challenges and head-to-head battles, built around the retention cliff that ends most casual games within days of install.

WeCinema
Two-sided marketplace · Web

WeCinema

WeCinema lets independent filmmakers buy, sell and share work. Every meaningful decision in the build came from one problem: a two-sided marketplace is worthless to both sides until it already has both sides.

Want something built like this?

Tell me what you're making and who it's for. I'll tell you the smallest version worth shipping — and what it costs.

Chat with us