About the project 💡 Inspiration In an era of "data as the new oil," our digital privacy is often leaked through the "exhaust" of our files—metadata. While building a platform for a dental clinic, I realized how much sensitive GPS and device data is inadvertently shared in professional settings. I wanted to build a tool that makes privacy a "gain" (saving storage) rather than a "chore," ensuring that data hygiene is automated and mathematically verifiable.
📝 The Spec-Driven Journey For this hackathon, I moved away from traditional "freestyle" coding and adopted a strict Spec-Driven Development (SDD) workflow. I began by drafting a Project Constitution (CONSTITUTION.md) that defined the immutable laws of the app:
Privacy First: No data ever leaves the local device.
Lossless-First Optimization: Metadata stripping must not degrade visual pixels.
Auditability: Every action must be traceable to a specific requirement in the spec.
By treating the Markdown specification as the Single Source of Truth, I used AI agents to generate implementation plans and code that were constrained by my architectural decisions, preventing the "context drift" typical in rapid hackathon builds.
🛠️ How I Built It I utilized a Coordinator-Implementor-Verifier pattern:
The Spec: Defined the recursive logic for stripping EXIF, XMP, and IPTC tags.
The Engine: Built in Rust for memory safety and speed, ensuring that the processing of binary file headers is robust against buffer overflows.
The Logic: Implemented a dual-pass system:
Scrubbing Pass: Identifies and nullifies sensitive metadata blocks.
Optimization Pass: Re-compresses the file using modern codecs (like WebP/AVIF) to reduce size without quality loss.
🚀 Challenges & Learning The biggest challenge was handling nested metadata in video containers (like MP4/MOV), where privacy leaks can hide in multiple tracks. Using SDD, I wrote a specific "Edge Case Spec" that defined how the AI should handle non-standard headers.
What I learned: I discovered that writing a rigorous spec actually saves time. Instead of debugging hallucinations, I spent my time refining the "rules" of the system. In SDD, better thinking leads to better code.
Built with Languages: Rust (Core Engine), TypeScript (Logic), Markdown (Specifications)
Frameworks: React Native (Cross-platform UI)
AI Tools: Cursor (Agentic Orchestration), Claude 3.5 Sonnet (Spec Processing)
Libraries: exif-terminator, ffmpeg-wasm (for browser-based scrubbing)
Built With
- exif-terminator
- ffmpeg-wasm
Log in or sign up for Devpost to join the conversation.