← All writing← 全部文章 Essay · 2025-12-14 · 4 min read

I Vibe Coded an AI App — But There's No AI Inside

I spent two Saturdays building an iOS app with 98% AI-generated code. It exports running data for AI analysis and generates art prompts — but has zero AI features itself. Here's why that's the point.

这篇暂时只有英文版。

The Paradox

I just shipped an iOS app. It helps runners get AI-powered analysis of their workouts and generate shareable art from their stats.

But the app itself has no AI.

No GPT integration. No on-device model. No API calls to Claude or Gemini. Zero intelligence inside.

And that’s exactly why it works.

Context Bridge Concept Art


The Backstory

Last month, I replaced $200/year in fitness subscriptions with a weekend project — an AI system that gave me personalized coaching by connecting Claude to my running database. (That story here.)

At the end, I wrote: “I’m exploring building this into an iOS app.”

Two Saturdays later, I did. 98% AI-generated code. Zero AI inside.


What the App Actually Does

The app has two core features:

1. Export .fit Files for Analysis

The app reads your workouts from Apple Health and exports them as .fit files — a universal workout format that Garmin, Strava, and other fitness platforms understand. You can then share these files directly to Claude (or any AI), where my custom running analysis prompt turns raw data into personalized coaching.

The app’s role: Extract context from Apple Health.
Claude’s role: Apply expertise and generate insights.

2. Generate Art Prompts for Sharing

Choose an art style — Ghibli, HD-2D pixel art, Chinese 古风, isometric cityscape — and the app constructs an image generation prompt using your run stats (distance, pace, heart rate, location).

Then you pick your AI: Gemini, Claude, ChatGPT, or just copy the prompt.

Isometric cityscape art style with run stats

The app’s role: Build the prompt with your data.
You decide: Which AI generates the image.

Send Prompt modal showing AI options


Why No AI Inside?

Here’s the mental model that changed how I think about building apps:

The Old Model: App = The Experience

Traditional apps try to own everything — the UI, the intelligence, the insights. Data flows into the app. Users live inside the app.

If you wanted AI features, you’d integrate OpenAI’s API, pay per token, handle rate limits, build fallbacks.

The New Model: App = Context Exporter

My app doesn’t try to be smart. It tries to be useful to smart things.

The app is a context bridge — it liberates data trapped in Apple Health and packages it for AI consumption.

Don’t wrap AI. Export context.


Don’t wrap AI. Export context. Tap a part.不包装 AI,只导出上下文。点一下看每个部件。

“Why Not Just Connect Claude Directly?”

Fair question. There are tools that let AI assistants connect directly to your data — databases, cloud documents, that kind of thing. So why build an app at all?

Because your health data is locked on your phone.

Most of your digital life lives in the cloud, accessible through APIs. But Apple Health is different:

Think of it this way: AI can read files you share with it, but it can’t reach into your pocket and grab your phone.

My app is the bridge. It extracts the data Apple protects, packages it in a format AI understands, and hands it off. The AI does the thinking. The app does the unlocking.


The Vibe Coding Experience

Let’s talk about how I actually built this.

Tools used: Claude Code (Anthropic’s agentic coding tool)
Time: Two Saturdays
AI-generated code: ~98%

I’m not a Swift developer. I’d never built an iOS app before. But Claude Code handled:

My job was:

The vibe coding reality: I’d describe a feature, Claude would generate it, I’d test it, we’d iterate. Most of the time, it just worked. When it didn’t, I’d paste the error and Claude would fix it.

The frustrating part: Apple’s App Store review. My first submission got rejected — they wanted more explanation of how the app uses health data. Fair enough. But it meant rewriting privacy descriptions, waiting for re-review, and refreshing my email for days. The AI couldn’t help with that.

The moment I knew vibe coding was real: I described the art prompt feature in two sentences, and Claude generated a working style picker with six themes in under a minute. I’d budgeted half a day for that feature.

This isn’t “AI wrote my app for me.” It’s more like pair programming with a very fast, very patient partner who knows every API but needs guidance on product direction.


What This Means for Builders

There’s a whole category of “context bridge” apps waiting to be built:

The intelligence layer is becoming commoditized. The context layer is the new moat.


Try It Yourself

The app is called Run Card Generator — it’s free on the App Store.

The running analysis prompt (a Claude “Skill” you can install) is open source: github.com/mz462/run-skill


Closing Thought

I spent two Saturdays building an iOS app with 98% AI-generated code. It reads from Apple Health, exports workout data, generates art prompts, and supports multiple AI destinations.

It has no AI inside.

And that’s exactly why it was so fast to build, so cheap to run, and so flexible to use.

The smartest AI app might be the one that doesn’t try to be smart at all.

Disagree? Push back on this essay.不同意?来反驳这篇。

Ask MJ

Answers come only from what I’ve written. If it isn’t there, it says so.只根据我写过的内容回答;没写过的,它会说不知道。