Inspiration

I was tired of social media as performance: profiles to curate, likes to chase, a feed that never ends. SameQ keeps one thing: the moment you realize a stranger on the other side of the world thought about the same question today.

What it does

SameQ is an iOS app where everyone in the world gets the same question once a day. You write a short answer. Only after you answer can you read how strangers answered, one at a time.

  • Answer first, then read. The database enforces this, not just the UI: the timeline returns nothing until you've answered today's question.
  • No profile, follow, search, ranking, or replies. You are an emoji and a nickname. Answers disappear when the day's question ends.
  • Everyone speaks your language. Posts are translated on the device with Apple's Translation framework. Post text is never sent to a translation server, and there is no "translated" badge or "see original" button.
  • Safe by default. Report and block are always one tap away. A blocklist is checked on the device and again on the server. Reported posts are hidden automatically, and repeat offenders are suspended automatically.
  • Never empty. Five operator personas post clearly labeled answers every day, so the first person to answer on a quiet day still has something to read.

Free to use. SameQ Plus (RevenueCat) is a monthly subscription with a one-month free trial. It gives you 2,000-character answers instead of 140, and text styling. The core loop stays free.

How it was built

Solo developer. First commit August 17, 2026; live on the App Store September 24 after five reviews. I built it with a three-role agent setup on Claude Code: a planner writes the spec, a generator builds one sprint at a time, and an evaluator runs the app and grades each sprint against acceptance criteria. The evaluator never edits code, and the generator never grades its own work. I decide what ships.

Where AI is and isn't used: the app makes no AI calls at runtime. Today's question is picked by a deterministic Postgres function. The 999-question pool was drafted with AI before launch, then reviewed in batches and checked by script. Operator answers come from five personas, each labeled with its name plus "(SameQ)". One of them openly says it's an AI. None of them pretend to be ordinary users.

Built with

SwiftUI (iOS 18+), Supabase (Postgres, anonymous Auth, Row Level Security, RPC functions), RevenueCat (purchases-ios 5.87.0), Apple Translation framework, NaturalLanguage framework.

RevenueCat integration

RevenueCatPlusService implements a PlusService protocol. The paywall doesn't know which backend it's using, and StoreKit and fake versions sit behind the same protocol for tests. It fetches com.nakakei6439.SameQ.plus.monthly by product ID and reads the plus entitlement. RevenueCat errors become friendly messages (cancelled, network, other), and Restore is supported. The paywall shows the free-trial badge from the product's introductory offer, the auto-renewal terms, and links to the Terms and Privacy Policy.

Challenges and what I learned

SameQ took five App Reviews to launch. Each rejection pointed at something real:

  1. Check which commit your build came from. The first rejection was a bug I had already fixed, just not in the archived binary.
  2. The reviewer is your user on your emptiest day. "Answer first, then read" meant a reviewer saw an empty timeline. Labeled operator answers now make sure there's always something to read.
  3. Guideline 1.2 is all or nothing. I shipped all eight user-generated-content safeguards in one build.
  4. Write review notes from the code, not from memory. My notes pointed to a Report button that didn't exist.
  5. Test like the reviewer. A real iPhone in English, no translation models, production server. That found a bug where fast taps used up the day's answers (5 reads in 7 seconds).

Try it

Built With

Share this project:

Updates

Submission history