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.
This repository has no readme, or GitHub could not be reached.
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.