I always wanted a desktop app for improving my speaking skills. I liked the idea of speaking for one minute on a random topic without looking at any notes and without repeating myself. I got to know about this from a YouTube video . It’s also called JAM (Just a Minute). It was first popularized by the BBC Radio show .

I came across one app on macOS - JAM - AI Speaking Coach but it lacked some important features, such as recording a video (it supports only audio, so you can’t see yourself), no second take (it’s helpful to practice a second time after taking notes to see the improvement) and progress tracking.

It was a pain to record the video and then use a bunch of tools to get the transcript, and then push that to another tool for analysis — and to do all of that for two rounds of practice in a single session.

After getting frustrated for a couple of days, I decided to create the desktop app myself. Now, I’m no expert in desktop app development. Yes, I have experience with ReactJS, which I use actively, and a bit of React Native, which I used 5 years ago in one of my projects — but no real experience building cross-platform desktop applications.

I have the Claude Max plan and I hadn’t been using it for a while due to being busy with office work. At the same time, I wanted to create something for my daily use, so I took a leap of faith and started the project SAM (Speaking Mentor).

First I asked Claude Design to create beautiful mockups. I gave it a brief description of the app and the main features I wanted, and after a couple of iterations I got this result.

Screenshot of Claude Design showing the SAM app mockup. Top toolbar reads: SAM, 2 pages, 43%, Comment, Tweaks, Edit, Present, Share. Canvas titled “Home / Dashboard” with subtitle “Calm — sidebar, one clear call to speak”. The mockup is a “SAM — Speak for a Minute” desktop window: left sidebar with SAM / SPEAK A MINUTE logo and nav items Home, Practice (JAM), Progress, History, ACCOUNT, Settings, a “12 day streak” badge and “Priya Kapoor / Free plan”. Main panel: “TUESDAY · JUNE 10”, “Good morning, Priya”, a search box, a purple “Daily JAM challenge” hero reading “One topic. Sixty seconds. No notes. We give you a random prompt — you speak for a minute. SAM transcribes on-device and shows exactly how to sound clearer.” with “Start a session” and “Surprise me” buttons and a “1:00 MINUTE” timer dial. Below: “Recent sessions” list — “The best advice I ever received” 82, Today 9:12 AM 0:58, +6 clarity; “A skill everyone should learn” 76, Yesterday 1:00, +4 clarity; “If I could travel through time” 71, Mon 0:54, -2 clarity. Right column: “This week” 14 minutes spoken, +9% clarity vs last wk with a line chart, and “Weekly goal 4 of 5 sessions” progress bar with “One more to keep your streak alive”.

Then I handed the design over to Claude Code. I used the Download zip instead option. I copied the prompt and then placed the zip file in the SAM project directory.

Screenshot of the Claude Design Share/Export menu open over the SAM mockup. Menu header “Who can access” with “Your workspace” dropdown, a “Copy link” button, and text “Only you can see this design.” Below, an “Export” section lists: “Claude Code — Implement this design in code” (Send); “PDF — Instant, or re-formatted by Claude” (Download); “Project HTML — .zip or standalone” (Download); “PowerPoint — Editable text and shapes”; and “More formats and apps”.

Screenshot of the Claude Code export dialog. Two tabs at top: “Send to local coding agent” (selected) and “Send to Claude Code Web”. A terminal-style Claude Code card shows the prompt: “> Import the attached sam.zip — read the README inside. Implement: SAM.html”. Buttons below: “Copy prompt” and “Download .zip”. Under OPTIONS, a checked box “Download zip instead” with note “For agents without the Claude Design connector — drop the bundle into your agent’s chat manually.” At the bottom, a labelled field “Give the agent more detail on what to implement (optional)” containing “SAM.html”.

I then launched claude code in bypass permission mode and started giving it prompts (continued in Part 2).