How aadith47/chithram-finder works
Image Finder accepts a plain-English image description through either a CLI or web UI, generates structured fields and targeted queries, searches three stock-photo services, deduplicates the results, and ranks them before presenting a gallery or list. The LangGraph workflow in graph.py owns the stages and their order; query generation and ranking each have documented fallbacks. The README documents these capabilities, while sampled source confirms the workflow and integrations shown here.
Main entry points: search.py Query search and dedupe · graph.py Graph workflow · llm.py Query generation · pexels.py Pexels adapter
Components 21
Search workflow
- Graph workflow
graph.py - Generate queries
graph.py - Search Pexels
graph.py - Search Unsplash
graph.py - Search Pixabay
graph.py - Combine results
graph.py - Rank results
graph.py
Search providers
- Query generation
llm.py - Query search and dedupe
search.py - Pexels adapter
platforms/pexels.py - Unsplash adapter
platforms/unsplash.py - Pixabay adapter
platforms/pixabay.py - Stock photo APIs
- Gemini
Ranking and data
- OpenRouter
- Jev ranker
jev.py - Keyword ranker
ranker.py - Image record
models.py
Other components
- User
Connections 30
- User → CLI: describes image
- User → Web UI: describes image
- CLI → Graph workflow: invokes graph
- Web UI → Graph workflow: invokes graph
- Graph workflow → Generate queries: dispatches
- Generate queries → Search Pexels: dispatches
- Search Pexels → Search Unsplash: dispatches
- Search Unsplash → Search Pixabay: dispatches
- Search Pixabay → Combine results: dispatches
- Combine results → Rank results: dispatches
- Generate queries → Query generation: requests queries
- Query generation → Gemini: requests structured output
- Query generation → OpenRouter: tries fallbacks
- Search Pexels → Query search and dedupe: searches queries
- Search Unsplash → Query search and dedupe: searches queries
- Search Pixabay → Query search and dedupe: searches queries
- Query search and dedupe → Pexels adapter: calls search
- Query search and dedupe → Unsplash adapter: calls search
- Query search and dedupe → Pixabay adapter: calls search
- Pexels adapter → Stock photo APIs: requests photos
- Unsplash adapter → Stock photo APIs: requests photos
- Pixabay adapter → Stock photo APIs: requests photos
- Pexels adapter → Image record: creates records
- Unsplash adapter → Image record: creates records
- Pixabay adapter → Image record: creates records
- Rank results → Jev ranker: tries ranking
- Jev ranker → OpenRouter: requests decisions
- Rank results → Keyword ranker: fallback ranking
- Graph workflow → CLI: returns results
- Graph workflow → Web UI: returns results