GenSort Media Utility
Local-First In-Browser Media Organization & Duplicate Detection Engine
A local-first, browser-based media organization workflow for clustering duplicates, reviewing large asset collections, and structuring exports without requiring server-side processing.
What was difficult, fragmented, or broken?
Content creators, field operators, and individuals frequently accumulate thousands of disorganized photos, project screenshots, and visual assets. Cloud-based sorting tools require uploading gigabytes of private photos over sluggish networks, creating privacy risks and painful latency.
Why the obvious solution wasn't enough
Standard desktop photo viewers lack rapid batch-organization workflows (e.g. quick similarity pairing, instant multi-folder triage), while cloud SaaS photo managers impose subscription walls, ingest personal data, and take minutes to upload large batches.
My Role
What I Built
- A local-first, 100% client-side React media utility running entirely inside the user's web browser.
- Drag-and-drop batch ingestion capable of handling hundreds of high-resolution images simultaneously.
- Interactive before/after split-slider comparator with WebGL clipping masks for microscopic visual inspection.
- Client-side ZIP compiler (JSZip) that organizes sorted image batches into structured folders and triggers instant downloads.
Local Media Files (Photos / Screenshots)
│
▼ (HTML5 File API / Drag-and-Drop Ingestion)
Browser Memory Canvas (Zero Server Transit / Complete Privacy)
│
▼ (Web Worker Perceptual Hash Calculation)
Visual Similarity Clustering & Split-Slider Comparison
│
▼ (In-Memory Folder Restructuring)
Client-Side ZIP Bundling (JSZip) ──► Instant Direct Disk DownloadHow I Approached It
I architected GenSort around a strict local-first philosophy: your media never touches a server. By utilizing HTML5 File API and browser canvas memory, processing happens at the speed of local hardware with complete user privacy.
AI is an instrument, not an authority.
Used agentic coding environments to optimize canvas render loops, implement perceptual hash comparison algorithms, and stress-test memory cleanup during large batch uploads.
Key Decisions & Tradeoffs
Chose browser-native client execution over a cloud backend, trading away cloud sync in exchange for absolute privacy, instant responsiveness, and zero server hosting costs.
The Result
Working utility deployed on Context & Muse, used for rapid asset sorting and before-and-after visual proofing across client projects.