This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
OffMarket Writer is a local app for real estate agents. Upload up to six property photos, add the basic facts (price, beds, baths, location, extras), pick a tone, and it writes a headline, description, and highlights ready to paste into a listing.
Agents would pay for it because writing listings is repetitive, and unlisted properties and client photos are things they often don't want on a third party server. It could be sold as a flat price tool instead of a per listing subscription.
Demo
Code
🏠 OffMarket Writer
Turn property photos into polished real estate listings, 100% locally Your photos and unlisted property details never leave your laptop.
Built with Gemma 3 (open-weight) running through Ollama and a Streamlit interface.
What it does
- Upload up to 6 property photos
- Add basic facts (price, beds, baths, location, extras)
- Pick a tone (warm, luxury, concise, investor-focused)
- Get a headline, description, and highlights ready to copy
How it works
Two passes with gemma3:4b:
- Look: describes only what is visible in each photo
- Write: combines those notes with the agent's facts into a listing
The prompt forbids inventing features and follows fair housing guidelines.
Why local?
- Client photos and unlisted properties stay private
- No per-listing API fees
- Open-weight model that can be swapped or fine-tuned
Setup
- Install Ollama and pull the model:
ollama pull gemma3:4b
- Install dependencies:
pip install -r requirements.txt
- Run the app:
streamlit run app.py
- …
How I Built It
- Model: Gemma 3 (4B, open weight) running locally through Ollama
- Interface: Streamlit
- Two pass pipeline: First, Gemma looks at each photo and describes only what is visible. Second, it combines those notes with the agent's facts to write the listing.
- Prompt guardrails: A strict "use only provided information" rule, a ban on unsupported claims like "secure" or "newly renovated," and a fair housing rule that forbids language about who should or shouldn't live in a home.
What I learned testing it: I ran six photos of a stone villa (exterior, courtyard, terrace, pool, bathroom, bedroom). It identified each space correctly and used my numbers (2 bed, 2 bath, 1500 sq ft) accurately. Early output had two problems: chatty intros like "Here's a description of..." and flowery adjectives the photos didn't support. Tightening the prompts fixed most of it. A 4B model needs firm rules to stay factual. Generation took about [X seconds] for six photos on my [MacBook Pro].
Why Does Open Innovation Matter?
- Privacy: Property photos and pricing for unlisted homes never leave the agent's laptop. It works with wifi off.
- Cost: No per listing API fees, so a flat price is viable.
- Control: Because the model is open weight, I can edit its behavior through prompts today and fine tune or swap it later for a specific market or brand voice.
Prize Categories
- Best Use of Gemma
Top comments (0)