# MediaMend

> Source: <https://dev.to/noor_ulhuda_67fbcf3d4b66/mediamend-57e4>
> Published: 2026-10-24 22:33:03+00:00

*T*This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady*

## 
  
  
  What I Built

MediaMend 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.

The 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:

1. 
**Scan** a folder. Everything runs on your computer. Nothing is uploaded.
2. 
**Review** a short queue of flagged files, each with a reason and a confidence level.
3. 
**Move to Bin.** Approved files leave your folders but are not deleted.
4. 
**Restore, Archive or Delete permanently** from the Bin. Permanent deletion needs a separate confirmation.

You never inspect the whole folder. You only judge the cases the tool is unsure about.

## 
  
  
  Code

[https://github.com/noorulhuda07/mediamend](https://github.com/noorulhuda07/mediamend)

## 
  
  
  How I Built It

- 
**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.
- 
**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.
- 
**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.
- 
**Stack:** Python, Streamlit, OpenCV, FFmpeg, [Ollama + model].

Technical measurements and AI opinions are stored separately, so a model's guess never overwrites measured evidence.

## 
  
  
  Results

I tested on [N] labelled files ([N] photos, [N] videos, [N] audio, [N] other). Ground truth was labelled before scanning.

| Metric | Result | 
| Blur precision / recall | [x/y], [x/y] | 
| False positives on must-keep files (rules only) | [n] | 
| False positives on must-keep files (rules + AI) | [n] | 
| Bin/restore checksum success | [x/y] | 
| Scan time ([N] files) | [seconds] | 
| AI time per photo | [seconds] on [hardware] | 

**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.

## 
  
  
  Why Open Innovation Matters

- 
**Privacy:** personal photos and voice recordings never leave the machine.
- 
**Control:** I can swap or compare models ([model A] vs [model B]) and inspect the exact prompt and outputs.
- 
**Cost:** no per-image API fees for scanning thousands of files.
- 
**Transparency and reproducibility:** the code, prompt, thresholds and test set are public, so anyone can rerun the benchmark and see the failures.

The honest trade-off: [hardware needs, model speed on your laptop, accuracy limits].

## 
  
  
  Limitations

AI 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.]

## 
  
  
  What I Built

## 
  
  
  Demo

## 
  
  
  Code

## 
  
  
  How I Built It

## 
  
  
  Why Does Open Innovation Matter?

## 
  
  
  My Agent Session

## 
  
  
  The Lazy Payoff

## 
  
  
  Prize Categories
