My Friend Started a Bakery. I Built Thooriga with Gemma to Make Picking Photos Less of a Chore. 🎨
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.
What I Built
The cake was ready. The Instagram post wasn't.
A friend of mine recently started a small bakery.
She enjoys experimenting with recipes, decorating cakes, and getting creative with her products. But running a small business also means handling all the little things that come afterward.
One of them is choosing photographs for social media.
Think about a Halloween cake promotion.
You take a photograph from the front. Then another from the side. A close-up of the decorations. One with better lighting. Another where the background looks nicer.
Before you know it, your gallery is full of slightly different photographs of the same cake.
And now you have to pick the right ones.
Not necessarily the sharpest ones, but the ones that actually work for what you're trying to post.
Maybe you want to highlight the frosting details. Maybe you want a festive atmosphere. Or maybe you need enough empty space in the photograph to add some promotional text.
The problem isn't that you don't know what you want.
It's that you have to keep searching through photographs you've already taken.
That small, repetitive frustration became the starting point for Thooriga.
Meet Thooriga
Thooriga is a local-first, AI-powered photo-curation workspace that helps people find photographs matching a specific creative purpose.
The name is inspired by the Tamil word தூரிகை (Thoorigai), meaning paintbrush.
I liked that connection because a paintbrush doesn't decide what an artist creates. It's simply a tool that helps bring an idea to life.
That's what I wanted Thooriga to be.
Instead of asking AI to decide which photograph is objectively the best, you tell it what you're looking for.
For example:
"Find photos that highlight the Halloween cake decorations, have a warm festive feel, and work well for my bakery's Instagram post."
Thooriga assesses photographs against that request and organizes relevant candidates into an explainable shortlist.
Users can compare results, restore photographs that weren't shortlisted, change the order, and export the ones they actually want.
AI helps with the search. The creative decision stays with the person.
Who is it for?
I started with the idea of helping small business owners, especially people who handle their own product photography and social media.
But I didn't want to build something that only works for bakeries.
Thooriga can be used for different creative briefs, from showcasing handmade crochet details and café products to selecting festive photographs or finding an image suitable for a professional profile.
The same photograph might be useful for one purpose and unsuitable for another.
And that's the part I wanted the AI to understand.
Less Searching. More Creating.
Demo 🎬
From an Idea to a Working Application
Here's Thooriga in action, starting with a visual walkthrough of the idea and ending with a real demonstration of the application.
Part 1 — Concept Walkthrough: A small bakery owner's struggle with photo selection and how Thooriga simplifies the process using AI.
Part 2 — Real Application Demo: A screen recording of the actual Thooriga workspace, showcasing its photo-curation features and workflow.
From endless scrolling to smarter shortlists — powered by Gemma 3.
How Thooriga Works
The workflow is designed to be straightforward:
- Upload — Add photographs to a local collection.
- Describe — Enter a creative brief and select the intended output format.
- Analyze — Gemma vision and image-processing techniques assess the photographs.
- Shortlist — Review ranked candidates, near-duplicate groups, explanations, and crop previews.
- Decide — Compare, select, reorder, and export the final photographs.
The application supports JPEG, PNG, and WebP, with a default limit of 15 photographs per collection.
It also supports output formats including Story, Square, Portrait, Carousel, Profile, and Original, allowing users to consider how their photographs will be presented.
Explore the Project
Code
GitHub Repository
github.com/thooriga24/Thooriga
Thooriga is an open-source project released under the MIT license, with Gemma model weights downloaded separately under Google's applicable terms.
The repository includes the React frontend, FastAPI backend, Gemma/Ollama integration, image-processing pipeline, ranking logic, tests, and setup documentation.
Getting Started — Windows
Thooriga combines a React frontend, FastAPI backend, and locally running Gemma 3 4B vision model.
Requirements: Windows 11, Python 3.12, Node.js 22+, Git, and Ollama.
1. Clone the repository
git clone https://github.com/thooriga24/Thooriga.git
cd Thooriga
2. Set up the project
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\setup.ps1
3. Download Gemma 3 4B
ollama pull gemma3:4b
Ensure Ollama is running.
4. Start the backend
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\start-backend.ps1
5. Start the frontend
In another PowerShell terminal, from the project directory:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\start-frontend.ps1
6. Open Thooriga
- Application: http://127.0.0.1:5173
- API documentation: http://127.0.0.1:8000/docs
The repository also provides scripts/smoke_gemma.py for checking real Gemma vision inference using a public-domain sample photograph.
How I Built It
I wanted AI to understand the purpose, not just the pixels.
One of the key ideas behind Thooriga is that the best photograph isn't always the most technically perfect one.
A sharp product close-up might be ideal for showcasing intricate details, while a wider photograph with warm lighting and negative space might be more suitable for an advertisement.
The difference is intent.
That's why I built Thooriga around Gemma 3 4B, a vision-capable open-weight model that can evaluate photographs in the context of a natural-language creative brief.
Rather than sorting images solely by sharpness or resolution, Thooriga combines multimodal AI with traditional computer vision to make shortlisting more purposeful.
The Tech Stack ⚙️
| Layer | Technology |
|---|---|
| Frontend | React, TypeScript, Vite, Tailwind CSS |
| Backend | Python, FastAPI |
| AI Model | Gemma 3 4B Vision |
| Local Inference | Ollama |
| Image Processing | Pillow, OpenCV |
| Response Validation | Pydantic |
| Testing | Pytest, Vitest |
How the Pipeline Works
1. Image Preparation
FastAPI validates uploaded images, checks dimensions and formats, handles orientation, and creates temporary processing copies.
Original photographs remain unchanged.
2. Similarity Detection
Thooriga uses OpenCV-based perceptual hashing to identify near-duplicate images.
This helps prevent a shortlist from being filled with almost identical photographs and encourages more useful variety.
3. Gemma-Powered Visual Understanding
This is where open-weight AI becomes central to the application.
The backend sends resized photographs, along with the user's creative brief, to Gemma 3 4B through Ollama.
Gemma evaluates how well each photograph matches the requested purpose, considering visible content, composition, and relevant visual details.
Its assessment contributes directly to the recommendation process rather than merely producing an image caption.
4. Explainable Ranking
Thooriga combines Gemma's structured assessments with technical image characteristics through a weighted ranking system.
| Ranking Factor | Weight |
|---|---|
| Creative-brief relevance | 60% |
| Visual suitability | 25% |
| Crop compatibility | 10% |
| Image resolution | 5% |
Pydantic validates the structured model responses before they enter the ranking pipeline.
The resulting fit index organizes photographs according to the user's intended purpose, while near-duplicate handling helps diversify the shortlist.
This is a measure of how well a photograph fits a brief, not an objective beauty rating.
5. Human Review and Export
Once the recommendations are available, users remain in control.
They can compare photographs, review explanations, restore lower-ranked images, manually reorder selections, and export their chosen collection as a ZIP.
Exported copies have image metadata removed, while original files remain untouched.
The Engineering Approach
What interested me most was combining traditional computer vision with multimodal AI.
Image-processing algorithms are useful for measurable characteristics like resolution, similarity, and crop geometry.
But understanding whether an image matches someone's creative intention requires more context.
So I designed the pipeline around two complementary approaches:
- OpenCV + Pillow: Image preparation, similarity detection, and technical analysis.
- Gemma 3 4B: Purpose-aware visual assessments based on natural-language requests.
FastAPI connects these components, validates model responses, and organizes the results for the React interface.
I also designed Thooriga around local-first processing, allowing Gemma inference through Ollama without requiring a third-party hosted vision API.
The entire workflow follows a simple pattern:
Upload → Describe → Analyze → Compare → Export
Testing and Verification
Testing covered image uploads, near-duplicate detection, crop calculations, model-response validation, ranking, collection management, and exports.
The repository's October 24 verification recorded 29 passing backend tests.
A later local smoke test also successfully returned a structured visual assessment using gemma3:4b and a public-domain sample image.
The result is a local photo-curation workspace that brings together image understanding, explainable recommendations, and human-controlled selection.
My goal was simple: use AI for repetitive searching and analysis, while leaving creative decisions in human hands.
Why Does Open Innovation Matter?
Because creativity shouldn't require giving up control over your photographs.
Photographs can be personal.
They might contain someone's home, family celebrations, unreleased products, private moments, or customer-related work.
For Thooriga, I wanted local image processing to be part of the design from the beginning.
Using Gemma 3 4B through Ollama allows visual assessments to run on the user's own computer without requiring a hosted commercial vision API.
That matters to me for three reasons.
1. Privacy and Control
Thooriga uses local FastAPI and Ollama endpoints.
Once the model and dependencies are installed, users can process photographs locally without sending them to a remote inference provider.
This gives the application a foundation for keeping sensitive photo processing on the user's computer, while still requiring responsible temporary-file handling and security practices.
2. An Inspectable Pipeline
The ranking rules, duplicate detection, processing logic, and export functionality are available in the source code.
Developers can inspect how recommendations are produced, modify scoring rules, and experiment with improvements.
That flexibility matters when building AI intended to support different creative preferences rather than impose one definition of the best photograph.
3. Experimentation Without Per-Image API Pricing
With the model installed locally, image inference doesn't require a hosted AI API payment for every photograph assessed.
Local computing still uses processing time, memory, and electricity, but an open-weight approach gives developers direct control over how inference is integrated and optimized.
For me, open innovation means having the flexibility to build AI around the user, rather than forcing the user to adapt to a closed AI service.
The Lazy Payoff 🦥
Less Scrolling, More Creating
Running a small business already means juggling product creation, photography, marketing, and customer orders.
Spending extra time comparing dozens of similar product photographs shouldn't be another job.
Thooriga tackles repetitive searching through Gemma 3 4B's vision-based analysis, which evaluates each photograph against a natural-language creative brief.
OpenCV-based perceptual hashing identifies near-duplicates, while the weighted ranking system combines AI relevance, suitability, crop compatibility, and resolution to organize relevant candidates.
Instead of repeatedly searching through the entire collection, business owners can focus on an explainable shortlist, compare their favorites, and export the final selections.
That's my take on the Slow and Steady theme: finding smarter ways to handle repetitive work without automating away creativity.
Less time sorting. Smarter shortlists. More time building the business.
Prize Categories
Best Use of Gemma
Gemma 3 4B is the core vision model used for Thooriga's purpose-aware image assessments.
- Evaluates photographs against natural-language creative briefs.
- Contributes directly to recommendation scoring.
- Runs locally through Ollama, supporting the local-first design.
- Connects multimodal image understanding with an inspectable ranking pipeline.
Gemma is a central part of Thooriga's photo-discovery workflow, not simply an optional chatbot feature.
Final Thoughts
When I started building Thooriga, I wasn't trying to replace a photographer, an editor, or anyone's creative judgment.
I was thinking about all the little tasks that take up our time without really adding anything to the creative process.
Someone spends hours baking and decorating a cake.
Then takes photographs of it from every possible angle.
And somehow, choosing just a few pictures to post becomes another task altogether.
That's where I thought AI could help.
And that's what Hacktoberfest's Slow and Steady theme means to me.
Sometimes, being a little lazy isn't about avoiding work. It's about finding smarter ways to handle repetitive tasks so we can spend our energy on things that actually matter.
With Thooriga, I wanted to make that small but frustrating task easier.
Let AI help find the relevant photographs, while the person behind the camera decides which ones tell their story best.
AI doesn't always need to do the creative work for us. Sometimes, the best thing it can do is take care of the boring bits and let us get back to creating.
That's the kind of laziness I'm building for.
Thooriga — Less Searching. More Creating.
Source code: Thooriga on GitHub
Project Contributors: Divya Sree (@divya_sree_r_) and Ayesha Siddiqa (@ayesha_siddiqa_06)
Built for Hacktoberfest 2026 — Week 3: Slow and Steady.
Top comments (0)