Inspiration

Dreams Come True captures moments that matter deeply to children and their families. Those photographs should remain accessible long after an event ends. We wanted to build something that respects both the importance of those memories and the time of the people responsible for preserving them. Staff should be able to describe what they remember, find relevant photographs, and correct the system when it gets something wrong.

What the solution does

Photo Discovery creates a searchable local archive from uploaded photographs. It generates initial captions and structured descriptions of activities, settings, clothing, and visible objects. Staff can search using natural language, select a photograph, and navigate by a confirmed event, confirmed venue, or similar participant descriptions. Participant navigation compares descriptive attributes without facial recognition.

How we built it

We built the application in Python with Streamlit and SQLite, using AI-assisted development and local verification throughout. SmolVLM generates an initial image description. Llama 3.2, running through Ollama, proposes structured metadata. Sentence Transformers’ MiniLM model embeds searchable attributes and staff notes, while sqlite-vec handles vector retrieval. SHA256 content hashes prevent duplicate registration. SQLite keeps the records and review state together. Revision checks prevent stale saves, and transactions keep field changes synchronized with affected vectors. I tested the workflow with synthetic integration tests and a local Windows photo batch.

Challenges we faced

The hardest part was making the entire pipeline behave consistently. Registration, captioning, search, and staff review all needed to operate on the same records without losing corrections. Preserving corrections also required care- clearing an incorrect attribute needed to remove its old search representation, and regeneration needed to respect that deletion. I built this version independently, so I also had to keep the scope realistic while connecting every stage.

Accomplishments we're proud of

I’m proud that this became a working, independently built prototype with persistent corrections and all three navigation paths connected. We had a day and a half to make the app- with some of that time being forking versions- and about 35 hours and 17 cups of decaf (and not) coffee later, we have a functioning app.

What we learned

Plan ahead, document ahead, and use GitHub Issues instead of a markdown checklist- no matter how few tickets you erroneously think you'll have in your project scope.

Next steps for the project after Hackathon

The next priority is evaluating the system with representative photographs and questions staff would actually ask. From there, mass batching photos will likely be a desired trait; we would like to optimize the search algorithms behind the scenes to make batching photos and their attributes quicker. Lastly, I want expected relevant results defined before searching, then measured ranks, misses, and false matches that work together to establish confidence intervals that make photo relevance more accurate; after all, we want users to win back time in their day, not going through their 31st photo searching for that Tom Brady photo next to a superhero whose name you forgot.

Built With

Share this project:

Updates

Submission history