Words Backend
ArchivedJanuary 1, 2023
My first app I thought would actually go somewhere — it didn't. A push notification vocabulary builder powered by ChatGPT's API. Subscribe to topics you care about, and receive daily push notifications with new words contextualized to your interests. The idea was solid. The distribution was not.
Purpose
Built a backend that used ChatGPT's API to generate vocabulary words contextualized to the user's interests. Subscribe to topics (finance, cooking, philosophy, sports), and the system sends push notifications with new words, definitions, and example sentences tailored to those topics. The hypothesis: people learn words better when the context matches what they already care about.
Stack
What I Learned
- This was one of the first consumer apps built on ChatGPT's API — the timing was right after the API became publicly available. The integration was straightforward: send a prompt like "Generate a vocabulary word related to [topic] with a definition and example sentence at a [difficulty] level," parse the response, format it for a push notification, and send it via Firebase Cloud Messaging.
- Topic-based push notification subscriptions use FCM's topic messaging: users subscribe to topics ("finance", "cooking"), and the backend sends to the topic rather than to individual device tokens. This scales elegantly — adding a new user to a topic requires no backend changes, and sending to a million subscribers costs the same as sending to one.
- The personalization premise was sound: a finance professional learning "amortization" in a sentence about mortgage scheduling will retain it better than learning it from a generic word-of-the-day list. The ChatGPT API made this kind of on-demand contextual content generation possible for the first time — previously, you would need a massive pre-curated word database tagged by topic.
- The app did not go anywhere because push notification apps live or die on notification quality and timing. One bad notification — irrelevant, too easy, too hard, badly timed — and the user disables notifications forever. The margin for error is zero. And the feedback loop is silent: users do not tell you why they turned off notifications. They just disappear.
- Distribution for a vocabulary app is brutal. The App Store search for "vocabulary" returns established players with millions of downloads, review counts in the thousands, and marketing budgets. An indie app with zero reviews is invisible regardless of how clever the AI integration is. The product was not the problem. The go-to-market was.
Key Insights
- This was the first project where I integrated an AI API into a product — the beginning of understanding that AI is a tool to be integrated, not a product in itself. "Uses ChatGPT" is not a value proposition. "Learns your interests and teaches you vocabulary in context via push notifications" is. The AI is the engine. The product is the experience.
- The first app you think will go somewhere teaches you the most important lesson in product development: good ideas are common, distribution is everything. The gap between a working app and a successful app is not engineering — it is marketing, positioning, timing, and the cold reality of app store economics. Every developer learns this lesson. Most learn it the hard way, with an app that works perfectly and has 12 users.
- Push notifications as a delivery mechanism for learning content is still an underexploited pattern. Duolingo proved that daily nudges drive retention. The difference: Duolingo nudges you to open the app (where the learning happens). Words tried to deliver the learning inside the notification itself — no app open required. This is a design choice with tradeoffs: lower friction (learn without opening anything) vs. lower engagement (no reason to build the app-opening habit).
- The ChatGPT API integration experience from this project directly informs current work across the Potatuhs ecosystem. Understanding prompt engineering, API rate limits, response parsing, and cost management (tokens are not free) — all of this was first learned here. The project failed as a product. It succeeded as a lab for AI integration patterns.
This post was composed through a conversation between Brett Owers and Claude Code (Anthropic). The content reflects Brett's recollection of each project and the lessons drawn from it. Some details may be approximate or omitted — the purpose is to paint an honest picture of a software engineer's development over time, not to serve as a precise historical record.