ncoevoet / facet
Local AI photo scoring, culling, and gallery — score, organise, and explore your library with face recognition and semantic search. No cloud, no subscriptions.
Why this job: says: semantic search






What it does
- Burst detection. groups rapid-fire shots and auto-selects the best one based on sharpness, quality, and blink detection
- Sequence protection. exposure brackets, panoramas and HDR panoramas (--detect-sequences / --detect-panoramas) are recognized as sets; the culling darkroom starts every frame of a set as kept
- Similarity groups. finds visually similar photos across the library, regardless of when they were taken
- Scenes. groups a shoot into chronological "scenes" by capture-time gaps, so you cull in story order; tap to mark and confirm to reject
- Auto-cull. one button culls a whole scope (all groups, or bursts / similars / scenes only, optionally narrowed to an album or date window) with a dry-run preview, a keeper budget, and an optional Highlights album
Get started
No single install command. Read the steps in the README (opens in new tab)
- Maintenance
- Active
- Last commit yesterday
- Stars
- 370
- +38 this week
- Licence
- Custom
- Read before business use
- Downloads for
- None listed
- No release files
- Latest version
- v1.29.0
- Released today
- Built with
- Python
- 62% of the code
Is it looked after?
- Contributors
- 4
- Last 90 days
- Issues
- 89% closed
- 6 still open
- Pull requests
- 357 merged
- 2 waiting
- Releases
- 57
- 30+ in the last year
- Contributing guide (opens in new tab)
- No security policy
- No code of conduct
More: languages, topics and project record
Languages
- Python 62%
- TypeScript 37%
- Lua 1%
- Shell <1%
Topics
- aesthetic-quality
- angular
- clip
- computer-vision
- face-recognition
- fastapi
- image-analysis
- image-quality
- photo
- photo-scoring
- photography
- pytorch
Project record
- JobRAG and search
- StatusListed
- Commits3,317
- Forks38
- Watching3
- Stars in 28 days+87
- CreatedFeb 16, 2026
- First seen by usNov 7, 2026
- CheckedNov 10, 2026
