Case study: flagship

Prava

An AI faith journal for iOS. Designed, built, and shipped solo, from first commit to the App Store.

Prava's home screen for the 17th Sunday in Ordinary Time: a verse card from Romans 8, this week's readings with completed checkmarks, and the Prayers and Creeds row.
The week is the spine. No streak anywhere.
The Pray movement of Lectio Divina: Romans 8:28-30 with a phrase highlighted, a text field labeled In your own words, and a Help me pray this button.
One verse, slowly. Prayer in your own words.
The daily journal asking How was yesterday, with Light, Normal, and Heavy load options and yes or no questions including Pray, Read your Bible, and Confess something to God.
The daily journal: honest yes and no, nothing pre-filled.
A Circle group screen: nine members reading Romans, this week's verse, and a feed of marks such as a member praying the Examen.
A few people keeping the same week.

01: The problem

Faith apps borrow the wrong mechanics.

Prava exists because I went looking for it and it didn't exist. I grew up in a Methodist church without any idea what made it Methodist, drifted away from the faith entirely, and came back years later through whatever church was closest. Something always felt like it was missing, so I started studying what Christians in each tradition actually believe and why. That question has taken my family through non-denominational, Lutheran, and Pentecostal churches, and is now leading us into the Catholic Church. Along the way I learned how much of what Christians think they know about other traditions is caricature. The apps I tried didn't help: verse graphics, streak counters, content with no tradition behind it. What I actually wanted already existed and was two thousand years old. The Church's week: her lectionary, her prayers, her creeds. Prava puts that at the center, across twelve traditions, in each tradition's own words.

Most faith apps are habit trackers wearing vestments: streaks, scores, completion rings, and the quiet guilt that follows a missed day. Those mechanics optimize for showing up, but they punish honesty: the moment a spiritual practice becomes a scoreboard, people start performing for the app instead of telling it the truth.

Prava's founding principle is record, not score. The journal is a place to be honest about where you actually are, not a meter to keep green. That principle sounds like product copy, but it turned out to be an engineering constraint: it shaped the schema, the AI prompts, and what the app refuses to measure.

02: What I built

A full consumer product, run by one person.

Prava is a native-feeling iOS app with a daily journal, prayer and scripture surfaces, a weekly lectionary, and social accountability circles. The AI is a teaching and reflection layer. It responds to what you read, write, and pray: interpreting the week's scripture, drawing observations from your journal entries, and helping you put your own prayers into words. One rule governs every surface: the AI teaches and reflects, but it never touches the Church's fixed texts. The creeds and historic prayers render exactly as the Church wrote them, enforced by CI scanners rather than good intentions.

Platform
Next.js + TypeScript shipped inside Capacitor / WKWebView as a native iOS app
Revenue
Freemium subscriptions via RevenueCat, monthly and annual plans
AI
Anthropic Claude across thirteen grounded surfaces, each reading versioned system prompts with snapshot-tested fallbacks
Data
Neon Postgres with Prisma, additive-only migrations
Infra
Cloudflare R2 storage, Sentry error monitoring
Analytics
PostHog: product analytics and feature flags

03: Engineering decisions worth talking about

Three decisions I'd defend in any interview.

AI cost optimization in three waves

The AI bill got attacked in order of leverage. First, waste elimination: cutting redundant calls and oversized context. Second, small-model routing: five product surfaces were moved to cheaper models where quality held. Third, prompt caching, with a usage-event table in Postgres that verifies the cache metrics the provider reports, because a cost optimization you can't independently measure is a rumor.

Product philosophy as engineering constraint

“Record, not score” is enforced in the data model, not the marketing site. The schema stores what happened, never a performance grade, and the automatic unlimited grace system means a missed day is recorded honestly without ever becoming a punishment mechanic. Deciding what the database refuses to know turned out to be one of the most interesting design problems in the product.

Solo-operator discipline

With no one to catch a bad deploy, the process had to be the second engineer: additive-only database migrations so nothing is ever un-shippable, snapshot-tested prompt fallbacks so an AI regression fails a test instead of a user, and features dark-shipped behind flags with written flip runbooks, so turning something on is a decision, not an event.

04: The back office

A product this size runs on a second product nobody sees. Prava's cockpit is eleven internal tools built on the same stack as the app: an analytics dashboard, authoring surfaces for prayers, teaching, and the lectionary, and the operational tools that keep the AI honest. Three earn a closer look.

The Prompt Lab versions every system prompt behind the app's thirteen AI surfaces. Each surface reads its prompt from Postgres with an in-code fallback bound by snapshot tests, and the Lab shows history, diffs, and drift between the two. When a prompt changes, there is a record of what changed and when.

The Profile Simulator tests the personalization engine without waiting on real users. Build a user profile from life contexts, run the selection algorithm, and see exactly which commitments it would serve that person, scores included. It turned tuning the matcher from guesswork into an afternoon.

The lectionary tools manage the appointed Sunday readings across two traditions and seven Bible translations, with per-reading rights flags and a staging to production pipeline. Scripture licensing is a legal constraint, so the workflow enforces it: text only enters the app through cleared lanes.

Prava's admin home: a grid of eleven internal tool cards including Analytics, Commitments, Memory Verse, Prayers and Creeds, Lectionary, Teaching, Discovery, Prompt Lab, and more.
The cockpit: eleven tools, one stack.
The Prompt Lab: versioned system prompt surfaces with history, diffs, and drift between database and in-code fallback.
Prompt Lab: versioned prompts, diffed and drift-checked.
The Profile Simulator: a built user profile on the left, simulation results and a scored daily selection preview on the right.
Profile Simulator: the matching algorithm, testable in an afternoon.

05: Outcomes

Live, growing, and paying for itself.

Prava has been live on the App Store since Easter 2026. It's used across a dozen Christian denominations, and it has paying subscribers on both monthly and annual plans. I keep the specific numbers off the internet on purpose. Happy to talk specifics in an interview.