
Mocky, an AI-powered interview/communication coach
I “vibe coded” an iOS App. Here’s (mostly) everything that went right & wrong.
UPDATES
I wrote this article when I first launched Mocky in mid-February 2026, but I have not stopped building. March 4th, 2026 updates:
- Ability to conduct custom interviews via pasting job URL
- New voice agent: Practicing concise communication
- New logo
- Ability to donate within the app
- Updated visuals and animations, other UX enhancements
March 24th 2026 updates:
- You can create a free account with an onboarding experience
- With this account you can upload your resume and gain access to the skill builder feature which tracks your communication progress across all session if you so choose
- New voice agents! One to talk about how you’re progressing and another to improve your prompting skills
- Improved onboarding
- UX/UI and visual design refinements
Download Mocky today and let me know what you think! Original article below:
TLDR
The thing about job searching is you never know when the next opportunity will show up and I don’t want to be rusty when it does.
Mocky is primarily an AI-powered interview practice coach. You have a real voice conversation with an AI interviewer, and when you’re done, it gives you personalized feedback on your strengths and what to improve. No account required, no paywall, just practice. I recently added another AI-coach where anyone can practice their concise communication skills for any professional scenario.
I built/launched it in just over 1 week for the Replit Mobile Buildathon using a combination of Replit, ElevenLabs, Claude, Figma, and some other tools. To say I just “vibe coded” this doesn’t quite do it justice since there was a lot of intention that went into it.
First, a quick PSA
Let me start by saying the phrase “vibe coding” is probably one of the biggest misnomers of our time.
Sure, “vibe coding” means you can jump into any of these tools and start building right away which is powerful in of itself…but it can also mean wasting time (and money) to fix a half-baked idea, poorly written prompt, poorly written code, or something in between.
To “vibe code” effectively boils down to knowing what you want to build, why it matters, knowing certain coding nomenclature, and having an approach to do this all efficiently.
In other words, it’s less “vibe coding” and maybe more “method coding” (admittedly, not nearly as sticky, or mass-appealing of a phrase).
However, one big caveat is when things start to go wrong while you’re building, you will likely have to “vibe” your way out of it, especially if you don’t have the words to describe how to fix something specific.
But this post isn’t about that.
This is a story all about how my design process got flipped upside down, so I like to take a minute and just sit right there, I’ll tell you all about how…I “method coded” my way to making an app I really needed (and think others do too).
What was the problem/inspiration?
In spite of the # of interviews I have done, it has always felt like trying to hit a moving target while riding on horseback.
The needs for every role are different and the people hiring for those roles may have their own set of parameters, biases, etc.
Regardless, the question for me has always been: How could I prep in a way that allows me to best present myself and my values so I can feel more confident heading in?
Sure, researching the company/role, writing up notes and reviewing/rehearsing your past work stories have their value, but nothing could best simulate the way being in an actual interview can feel.
Then I tried Wellfound’s AI interview tool:
Image: Wellfound’s AI interview tool. View on Medium ↗
They promote this feature as a way to help improve your chances of getting an actual interview and is something that can also live on your profile.
While it was pretty jarring at first, the questions are pretty standard but don’t really deviate from the core of what it wants (needs?) answers to.
That’s why I found it hard to use this tool to prep for any kind of interview, or question I may want to practice for despite my best efforts.
But what if that was possible?
How this idea became a reality
The Partner: Claude (more specifically, Claude skills)
Ever since making a career transition into design, I have never stopped learning about it. I’ve read many books, continue to save countless blog posts, and have taken several courses to help me get 1% better each day. This later included how to leverage the various AI tools that were emerging.
Only problem was, that’s A LOT of content to remember, let alone leverage.
Then Anthropic released a new feature late last year called “Claude skills” where I could basically take all of the files I had stored and organized over the years (think “measuring design ROI”, “prompting techniques”, “UI best practices”, etc.) and turn them into a “skill”.
I finally had a way to leverage my curated knowledge for anything I was working on…like this app.
Image: A summary of which of my custom Claude skills I used the most for making this app. The “vibe-coding” skill was particularly helpful. View on Medium ↗
The Voice: ElevenLabs
The make & break of this idea came down to the actual voice agents. Essentially, how would I be able to quickly spin up, customize, and offer a safe/secure voice agent?
Enter ElevenLabs.
Image: A brief overview of their Agent environment. View on Medium ↗
After watching a few demos on YouTube, I realized they would be a great fit for creating custom AI-powered interview coaches (and other communication-based skill providers) that I could use within this app.
The key was making the system prompt tailored to coaching someone trying to get better at interviews (or later, concise communication) which was something I used Claude to help me write.
I had considered something open source to save on costs, but would those be capable and secure enough to use? Maybe…but I didn’t want to risk it…or risk losing time because I was already two weeks late to Replit’s Mobile App Buildathon :)
The Builder: Replit
Replit had announced at the beginning of 2026 a new amazing feature that allowed people to publish their “vibe coding” projects as real mobile apps people could download from Apple’s App Store.
I had always wondered why I didn’t see much content around “vibe coding” native mobile apps…turns out, it’s because that was hard.
Replit made that process a heck of a lot easier and to promote it, they announced a Mobile App Buildathon available to all Replit users.
I could have used other platforms to build this tool, but I always wanted to make it into a native mobile app so now was the perfect time to put all this together and make it!
So how did it go?
Below provides a broad overview for what I did across 3 main phases:
- Build
- Polish
- Launch
This mostly entailed me going from Replit to Claude and back again in order to achieve what I wanted with some other tooling at certain points.
Building phase
Image: Left to right: Refined PRD, initial app build. View on Medium ↗
Phase 0: Before you use AI, Think first
- Drafted rough PRD myself, refined PRD (via Claude skill), refined first set of Replit prompts
Phase 1: Foundations
- Project setup, Expo/React Native, NativeWind styling, basic navigation, Home screen with interview type cards
Phase 2: ElevenLabs Integration
- Connected voice agents (General Practice, Designer Interview), real-time conversation, mic permissions
Phase 3: Session Flow
- Practice screen UI, conversation display, session timing, “End Session” functionality
Phase 4: Auth & Account
- Supabase integration, login/signup (later removed — app works without accounts)
Phase 5: Claude Feedback
- Send transcripts to Claude API, generate personalized feedback (strengths, areas to improve), feedback screen
Phase 6: Session Saving
- Save sessions to local storage, Recent Sessions list on Home, tap to view past feedback
Obstacles??
I would say this part went pretty smoothly, but that was because I had well-structured prompts and tested the app after each build before I moved on to the next phase so any potential issues would not stack. Encountered some errors but used Claude to help me move past them efficiently.
Any key decisions??
I originally thought someone should create an account but I didn’t want that to be a barrier for using this app, especially at this time. So even though I went through the process of building a database (with the help of AI), I did not need to know someone’s name, or email so I removed that functionality. Nor did I want to charge someone at this time since I want people to try it, get feedback, and see how the “market” responds.
Polishing phase
I made a LOT of polishes after the core functionality was made because I knew design could elevate this experience further.
In other words, I spotted where I wanted to make improvements and used my AI tooling skillset to help get there.
To give you a sense of how I arrived at the final designs, I asked Claude to summarize what polishes I made throughout this project:
Image: Claude’s summary of the polishes made throughout the project. View on Medium ↗
Quick notes:
The overall visual aesthetic (aka “soft tech”) I arrived at came as a result of using Variant.AI where I wanted a style that avoided the use of glossy gradients, was approachable, yet still modern.
Image: Drilled down until I found a style that spoke to what I wanted for this app. View on Medium ↗
From there, I used a combination of Figma Make and their MCP to help me achieve the styling I wanted:
Image: From left to right: Replit build > Figma > Replit updates. View on Medium ↗
However, the biggest obstacle I had to overcome was getting the “immersive practice screen” visuals and UX/UI right which long story short, took various prompts and debugging to figure it out, but I got there:
Image: From left to right: Replit build mocks >> Final design. View on Medium ↗
Regarding some the UX polishes…
Image: UX polishes. View on Medium ↗
Quick notes:
These polishes came at different times. For instance:
- The “consent screen” came after my first initial rejection from the Apple App Store
- “Session timeout handling/feedback still generates” came after initial testing
- The last three came after I added another AI-coach that wasn’t just about interviewing (which came after post-launch)
Then to round out the rest of the polishes:
Images: The rest of the polishes (3 images). View on Medium ↗
Launch phase
This phase was mostly dealing with the App Store review process which again, I used Claude to help me decipher what they were asking for and how to address it.
Launch prep
- Security audit, rate limiting, app icon, splash screen, Privacy Policy, Terms of Service, EAS build config
App store rejections
Image: App Store rejections. View on Medium ↗
Total costs ~$275 upfront:
- Replit: around $150
- ElevenLabs: I upped my subscription to their next tier since I ate up half my credits just testing each voice agent at their basic paid tier plan
- Apple Developer Account: $100
I did not include my monthly subscription to Claude/Figma, which are both $20, because I use them for other projects.
One last thing: Since I’m currently looking for work, I had to be as economical as I could be while making this app (hence my feelings about spending money wastefully while “vibe coding”) and while I probably spent another $20 bucks here or there refining the app, I’m happy with the end result.
Decisions I made along the way
As easy as it is to use AI, it can obfuscate agency. This section summarizes key decisions I made along the way to clarify how/where I applied my own agency:
Images: 9 decision summaries. View on Medium ↗
What I learned
- Phased approach: Having a phased approach makes the build phase much more enjoyable and efficient, though you need to test (and test again) before moving onto the next phase. For Apple, I highly recommend testing on TestFlight to see how your app will actually look/function. Don’t rely on what you see in other environments.
- Design elevates: Product design is my trade and given how easy it is to make these apps, it’s vital to separate yours by applying the type of UX/UI and visual design polish that expert designers practice. My app is far from perfect though I understand the importance of elevating experiences through design.
- Have an AI workbench: Even IKEA requires multiple tools to build their stuff (not many but still). Don’t limit yourself to just using one AI tool, or environment. Have a goal in mind, refine how you use these tools, and leverage their unique capabilities to achieve what you want.
Connect with me on LinkedIn, or check out my portfolio. Thanks for reading!
Originally published in Bootcamp on Medium.