Project Info
Inspiration
Both of us have been vlogging our lives for a while, whether on trips or during exciting days and weeks, and we genuinely love the process. But it's so tedious. We record a ton of clips and then have to sort through all of them, and that inconvenience makes us way more likely to put it off. We'd end up not finishing a video we took a bunch of clips for until a year later... or never going through them at all. So when we decided to work together on this hackathon, our first thought was: let's solve a problem we both actively face. Something we know would make life easier for content creators like us.
What it does
Snappy is a macOS app that watches and listens to your video clips so you can find the right moment by just asking for it. You point it at a folder and it automatically: Transcribes every clip Tags and summarizes each one so you know what's inside at a glance Flags filler words and repeated phrases so you can tighten your delivery Lets you chat with your whole library, "find the clip where I talk about ___", and it takes you right there Searches and filters by tag, keyword, or flagged-only, sorted by name, length, or number of issues No renaming files, no scrubbing through footage one clip at a time. You just open a folder and talk to your footage. Sort through your clips in a snap.
How we built it
Snappy is a native macOS SwiftUI app. When you pick a folder, it loads your clips in place (nothing gets copied or moved) and kicks off an indexing pipeline for each clip: Audio extraction, we use ffmpeg to pull the audio track out of each video. Transcription, that audio goes to Deepgram (Nova-2), which gives us an accurate transcript. Local analysis, we scan the transcript ourselves for filler words and repeated phrases, then flag clips that have issues. Understanding, we send the transcript to Claude (Sonnet 4) to generate tags and a short summary for each clip. Chat, the chat feature feeds Claude context across all your clips, so it can reason about your whole library and point you to the exact moment you're describing. To keep our API keys safe, all requests route through a Cloudflare Worker that holds the keys server-side, so nothing sensitive ships in the app itself. We also cache every result locally as JSON with a stable hash, so reopening a folder is instant instead of re-indexing everything. On the frontend, we built a searchable clip list with tag chips and ⚠️ badges, a detail view with an inline-highlighted transcript (orange for repeated phrases, yellow for filler words), and a chat interface with suggested prompts so it's obvious what you can do.
Challenges we ran into
The biggest one at the start was just figuring out where to begin and which direction to go in. We started from an existing screen-watching app to reuse some of the API infrastructure, which meant a lot of stripping out and repurposing code that wasn't built for what we wanted. Other bumps along the way: Wiring up the transcription pipeline end to end, getting ffmpeg, Deepgram, and Claude to hand off to each other cleanly. Caching that actually survives relaunches, so the demo loads instantly instead of re-indexing every clip live. The app icon (of all things!) with broken asset sets and a grey placeholder icon. General SwiftUI state and rename headaches as we went from the original project name to Snappy.
Accomplishments we're proud of
Our first idea together, brought to life, and honestly the start of an exciting time for both of us to keep creating together. It was so satisfying seeing the app with the logo we picked sitting in my dock, and the window opening for the first time when I ran the code. After grinding on the backend, watching the frontend pull everything together was really cool, it suddenly felt like a real app instead of a pile of functions. And the fact that it actually does the thing we set out to do: you drop in a messy folder of clips and it just... understands them.
What we learned
Honestly, all of it. We learned how to: Build a real native macOS app in SwiftUI from the ground up Chain multiple AI services (Deepgram + Claude) into one smooth pipeline Keep API keys safe with a Cloudflare Worker proxy Design caching so the experience feels instant And maybe most importantly, how to scope an idea down to something we could actually ship in a hackathon, and divide and conquer between the two of us.
What's next
A video display view that flags sections directly in the timeline at the exact timestamp, so you can see and jump to the rough spots visually. Integration with editing software, iMovie, Premiere Pro, Final Cut, CapCut, so the AI can help you directly cut and trim sections, expediting the whole editing process instead of just pointing you at the right clip. The dream is that Snappy doesn't just find your moments, it helps you edit them too.
Snappy 🔴
Every moment, one snap away. · Talk to your footage.
Snappy is a macOS app that watches and listens to your video clips so you can find the right moment by just asking for it. Point it at a folder and it transcribes, tags, summarizes, and flags every clip automatically, then lets you chat with your whole library like it's a person who watched all of it.

The problem
Anyone who vlogs ends up with folders full of unnamed clips like IMG_4471.mov or final_v3_REAL.mp4, with no idea what's inside without opening each one. Finding "the take where I nailed the intro" means scrubbing through dozens of files by hand. It's so tedious it makes you put off editing entirely (sometimes for a year, sometimes forever).
What it does
Open a folder and snappy instantly:
- 🎙️ Transcribes every clip (Deepgram Nova-2)
- 🏷️ Tags & summarizes each one (Claude Sonnet 4)
- ⚠️ Flags filler words and repeated phrases so you can tighten your delivery
- 💬 Chat across your whole library, like "Find the clip where I talk about pricing", and snappy takes you right there
- 🔍 Search & filter by tag, keyword, or flagged-only, and sort by name, length, or number of issues
No uploading, no renaming files, no manual logging. Just open a folder and talk to your footage.
How it works
- Pick a folder. Clips load in place (nothing copied or moved).
- Auto-index per clip: extract audio (
ffmpeg), transcribe (Deepgram), analyze fillers/repeats locally, then tag and summarize (Claude). - Browse a searchable list with tag chips, summaries, and ⚠️ badges.
- Dig in. Open any clip for an inline-highlighted transcript (orange for repeated phrases, yellow for filler words).
- Ask. Chat reasons across every clip to find exactly what you mean.
Results are cached locally with a stable hash, so reopening a folder is instant.
Built with
Languages: Swift, TypeScript/JavaScript Framework / UI: SwiftUI Platform: macOS (built in Xcode) AI / APIs: Anthropic Claude (Sonnet 4), Deepgram (Nova-2) Cloud: Cloudflare Workers (API-key proxy) Tools: ffmpeg Storage: local JSON cache (stable-hash, on-device)
Setup
# Requires ffmpeg
brew install ffmpeg
# Open in Xcode, then ⌘R
open snappy.xcodeproj
API requests route through a Cloudflare Worker that holds the ANTHROPIC_API_KEY and DEEPGRAM_API_KEY, so no keys ship in the app.
Privacy & responsible AI
Privacy was our top priority since snappy handles personal footage:
- Your clips never leave your machine. snappy reads them in place and caches results locally on your device.
- Only the audio transcript is sent to our AI services. The video files themselves are never uploaded.
- API keys stay server-side in a Cloudflare Worker, so nothing sensitive ships in the app.
- Efficient by design: each clip is only processed once (cached), and filler/repeat detection runs locally to avoid unnecessary inference.
- snappy assists creators, it doesn't replace them. You stay in control, and since transcription accuracy varies across accents and audio, AI output is a verifiable starting point with the original clip always one click away.
What's next
- A video timeline view that flags rough sections directly at their timestamps.
- Integration with editing software (iMovie, Premiere Pro, Final Cut, CapCut) so the AI can help cut and trim sections directly. Not just finding your moments, but helping you edit them.
Links
Built with ❤️ by two sisters who got tired of never finishing their vlogs.
Analysis
View
Metric
- 6
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- SwiftIn code
- TypeScriptIn code
- AnthropicClaimed
- JavaScriptClaimed
2 of 4 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig · Commits
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
374 KB
Source files
41
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
abcdemilyfghua/Snappy
100 files · 13.5 MB · @ d5677d5
Structure
Application logic
58 files · 58%Domain rules, services and shared utilities.
+3 moreBackground jobs
5 files · 5%Work run outside a request: tasks, workers and schedules.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Swift90%
- Markdown5%
- Shell3%
- TypeScript1%
- XML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
worker/package.json
npm · 11 development-only dependencies.
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.