{"slug": "mediamend", "title": "MediaMend", "summary": "A developer built MediaMend, an open-source local AI assistant that scans folders for blurry photos, blank video frames, silent recordings, empty files and duplicates, then routes flagged items through a review queue and a reversible Bin rather than deleting them outright. The tool combines deterministic checks — OpenCV Laplacian variance for blur, FFmpeg-based silence detection, SHA-256 duplicate matching — with a local open-weight vision-language model that judges whether an imperfect image is still worth keeping, returning validated structured JSON. Every move is recorded in a manifest with original path, size and checksum, and the code, prompts and thresholds are public so the benchmark can be rerun.", "body_md": "*T*This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady*\n\n## \n  \n  \n  What I Built\n\nMediaMend is a local AI assistant for people who record far more media than they will ever review: blurry photos, black video frames, silent recordings, empty files, duplicates.\n\nThe lazy way to clean that up is \"delete everything below a threshold\", and that is also the way to lose the one blurry, unrepeatable shot that mattered. MediaMend takes a safer lazy path:\n\n1. \n**Scan** a folder. Everything runs on your computer. Nothing is uploaded.\n2. \n**Review** a short queue of flagged files, each with a reason and a confidence level.\n3. \n**Move to Bin.** Approved files leave your folders but are not deleted.\n4. \n**Restore, Archive or Delete permanently** from the Bin. Permanent deletion needs a separate confirmation.\n\nYou never inspect the whole folder. You only judge the cases the tool is unsure about.\n\n## \n  \n  \n  Code\n\n[https://github.com/noorulhuda07/mediamend](https://github.com/noorulhuda07/mediamend)\n\n## \n  \n  \n  How I Built It\n\n- \n**Deterministic checks for measurable problems:** OpenCV Laplacian variance for blur, resolution checks, sampled video frames for blank-frame share, FFmpeg decoding for silence measured relative to each recording's own level, SHA-256 for exact duplicates.\n- \n**A local open-weight vision-language model for judgment:** [model name and tag, e.g. via Ollama] looks at flagged photos and answers one narrow question: could this imperfect image still be worth keeping? It returns structured JSON that I validate. If the model is unavailable or answers badly, the app says so instead of faking a result.\n- \n**A safety layer:** every move records the original path, size and SHA-256 in a manifest and verifies the checksum afterwards. Restore never overwrites an existing file, and nothing outside the scanned folder can be touched.\n- \n**Stack:** Python, Streamlit, OpenCV, FFmpeg, [Ollama + model].\n\nTechnical measurements and AI opinions are stored separately, so a model's guess never overwrites measured evidence.\n\n## \n  \n  \n  Results\n\nI tested on [N] labelled files ([N] photos, [N] videos, [N] audio, [N] other). Ground truth was labelled before scanning.\n\n| Metric | Result | \n| Blur precision / recall | [x/y], [x/y] | \n| False positives on must-keep files (rules only) | [n] | \n| False positives on must-keep files (rules + AI) | [n] | \n| Bin/restore checksum success | [x/y] | \n| Scan time ([N] files) | [seconds] | \n| AI time per photo | [seconds] on [hardware] | \n\n**Where it failed:** [real examples, e.g. a dark but valid photo flagged as blurry because low contrast lowers the sharpness score; the model's wrong call on ...]. The thresholds are starting points I tuned on this set, not universal values.\n\n## \n  \n  \n  Why Open Innovation Matters\n\n- \n**Privacy:** personal photos and voice recordings never leave the machine.\n- \n**Control:** I can swap or compare models ([model A] vs [model B]) and inspect the exact prompt and outputs.\n- \n**Cost:** no per-image API fees for scanning thousands of files.\n- \n**Transparency and reproducibility:** the code, prompt, thresholds and test set are public, so anyone can rerun the benchmark and see the failures.\n\nThe honest trade-off: [hardware needs, model speed on your laptop, accuracy limits].\n\n## \n  \n  \n  Limitations\n\nAI cannot judge creative value perfectly. Deleting from the Bin may not securely erase every copy on SSDs, backups or synced folders. [Anything else you observed.]\n\n## \n  \n  \n  What I Built\n\n## \n  \n  \n  Demo\n\n## \n  \n  \n  Code\n\n## \n  \n  \n  How I Built It\n\n## \n  \n  \n  Why Does Open Innovation Matter?\n\n## \n  \n  \n  My Agent Session\n\n## \n  \n  \n  The Lazy Payoff\n\n## \n  \n  \n  Prize Categories", "url": "https://wpnews.pro/news/mediamend", "canonical_source": "https://dev.to/noor_ulhuda_67fbcf3d4b66/mediamend-57e4", "published_at": "2026-10-24 22:33:03+00:00", "updated_at": "2026-10-24 22:41:12.343446+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-tools", "computer-vision", "large-language-models", "ai-products"], "entities": ["MediaMend", "GitHub", "OpenCV", "FFmpeg", "Ollama", "Streamlit", "Python", "Hacktoberfest"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/mediamend", "markdown": "https://wpnews.pro/news/mediamend.md", "text": "https://wpnews.pro/news/mediamend.txt", "jsonld": "https://wpnews.pro/news/mediamend.jsonld"}}