Inspiration
It started with Simon’s prompt to build an AI Coach, of course!
But it prompted a deeper question - how do I give anyone the ability to unlock the full potential of LLMs to help them make meaningful progress on their goals with elite coaching?
I did it by designing an intuitive interface around a set of coaches that are domain experts in areas where people most often need help (career, productivity, fitness, relationships).
My app needed to match people’s mental models for coaches, i.e. your coach gets to know you, then you align on a goal to work towards, and commit to specific action items to make progress.
From the users’ perspective, they’re just answering questions, journaling, writing down goals and todos, and chatting with their coach. But on the backend, every interaction is feeding the AI exactly what it needs to maximize the quality of its coaching.
What It Does
Better Coach is an AI-powered personal coaching app that deeply personalizes its guidance to each user.
- Personality-aware onboarding: A thoughtful question onboarding captures your values, challenges, life stage, and aspirations. The app infers your personality type behind the scenes, giving the coach awareness of your natural blind spots and growth edges without ever making it feel like a personality quiz.
- Conversational coaching: Chat with your AI coach powered by Claude. The coach is non-sycophantic by design - it will disagree with you, name patterns, and ask hard questions. It draws from four domains of expertise (career, health & fitness, productivity, and relationships) loaded from curated knowledge bases.
- Goal tracking with micro-actions: Set goals, break them into actionable steps, and log progress notes. The coach suggests goals organically during conversations and helps you stay accountable.
- Daily reflections & journaling: Guided daily prompts and free-form journaling that feed back into the coach's context. Every 5 journal entries trigger an automatic summary of your themes and patterns, so the coach gets smarter over time.
- Shareable expertise: Export your coach's accumulated knowledge and share it with others, enabling others to improve their coaches in similar domains. You can also import another coach’s expertise.
- Voice Input: OpenAI Whisper integration throughout the app for accessibility and ease of use since thoughts flow more naturally when spoken out loud.
- Free tier that’s still useful: 5 free coaching messages per day with RevenueCat-powered premium unlock for unlimited access.
How I Built It
Local-first architecture: Everything remains on-device using AsyncStorage - no backend, no authentication, no user accounts. This dramatically simplified the architecture, eliminated infrastructure costs, protected user privacy, and let me ship faster. Conversations, goals, journal entries, and insights all persist locally with a lightweight metadata index pattern to keep list views performant.
Prompt engineering is key: The real engineering lives in the system prompt. I wrap all user-generated content in structured XML tags (, , , etc.) that create clear semantic boundaries between system instructions and user data. The coach receives the user's personality profile, active goals with micro-actions, journal theme summaries, conversation history, and domain expertise, all structured so Claude can deliver coaching that feels genuinely personalized.
Orchestrator + extracted components: Multi-step flows like onboarding use a single orchestrator screen that manages state while delegating rendering to reusable step components (text input, voice input, multiple choice, yes/no). This kept the codebase way more maintainable.
Progressive disclosure: Every screen has a single clear job-to-be-done. I maximized progressive disclosure so users never feel overwhelmed. The complexity of the system is hidden behind an interface that feels simple and focused.
Challenges I Ran Into
Prompt injection: With so much user-generated content flowing into the system prompt, I had to architect robust boundaries. XML-style tagging of all user inputs, combined with explicit instructions to Claude about what constitutes system vs. user content, was my solution.
Continual AI learning without a backend: It’s hard to make the coach "smarter" over time while keeping everything local. Journal summaries, conversation history compression, and the lightweight metadata index pattern let me simulate persistent memory without a database, though I may have to expand to backend support if I scale this long-term.
Invisible prompt quality: One of the hardest design challenges was making every user interaction secretly optimize prompt quality. Onboarding questions, goal structures, reflection prompts, and journaling formats were all designed to elicit the specific types of information that make Claude's coaching most effective, without the user ever feeling like they're "writing a prompt."
Sustainable Free Tier: Balancing generous free access with API cost sustainability led me to the daily message limit system, 5 free messages per day with date-keyed counters that reset automatically.
Fine-tuning without fine-tuning: I achieved the feel of a fine-tuned model entirely through prompt engineering: curated domain expertise files, personality-aware context, age-cohort life-stage guidance, and explicit coaching style instructions. The result genuinely feels like a specialized coaching model rather than a generic chatbot.
Accomplishments I’m Proud Of
- Zero-auth, fully local architecture: Shipping a feature-complete AI coaching app with no backend, no login, and no authentication is remarkable. Everything runs on-device, protecting user privacy while eliminating infrastructure complexity.
- System prompt quality: After dozens of iterations, the coaching responses feel like they come from a fine-tuned model. The precision and quality of advice across career, health, relationships, and productivity genuinely rivals paid coaching sessions.
- Full feature set in just about a week: Voice input, paywall, goal tracking with micro-actions, journaling with AI summaries, personality inference, shareable expertise, personal insights, dark mode, all shipped within the hackathon timeline. (I started a little late!)
- Non-sycophantic AI: The coach pushes back, identifies patterns, and asks uncomfortable questions. It coaches rather than validates, which is rare in AI chatbots nowadays.
What I Learned
- First AI-integrated app: This was my first time building an app with AI as the core feature. I learned how to integrate Claude and OpenAI APIs through system prompting, manage responses, and handle the unique UX challenges of AI-powered interfaces.
- Ruthless prioritization: The hackathon deadline forced me to get to MVP before falling into the weeds. Learning to cut scope aggressively while preserving the core value proposition was the most important skill.
- Progressive disclosure at scale: Within a relatively complex system (onboarding, coaching, goals, journaling, insights, settings), I learned how to maximize progressive disclosure so every screen feels accessible, non-intimidating, and focused. The goal was to make it basically impossible for users to get lost.
- Better design patterns: Modal stacking, simplified visual hierarchy, and the orchestrator pattern taught me how to manage complexity without exposing it to the user.
What's next for Better Coach
- First off, I plan to launch this in the App Store! Early user feedback has been really encouraging.
- Agentic Workflows: Enabling the coach to take actions on the user's behalf. Integrations with LinkedIn, Gmail, Notion, Outlook, and Slack would let the coach handle admin-heavy tasks that support goal progress, like a good coach who removes friction without taking away the satisfaction of accomplishment.
- Notion Integration: A deep, bidirectional Notion integration: export goals and to-dos into Notion databases, and pull context from your Notion workspace to give the coach even richer understanding of your work and life.
- Coach Marketplace: A marketplace where users can build, share, and monetize coaches with deeply unique and niche expertise.
- Domain-Specific Integrations: Health metadata for fitness coaching, calendar data for productivity coaching, and more. Each coaching category gets richer with the right data sources!
Built With
- claude
- expo.io
- ios
- openai
- react-native
- revenuecat
- typescript
Log in or sign up for Devpost to join the conversation.