This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
I built WildHarvest AI, an offline-first campfire recipe generator designed for hikers, campers, and foragers. You simply input the ingredients you just foraged in the wild (e.g., wild mushrooms, bamboo shoots) and the app generates 3 safe, easy-to-cook recipe options using only your found ingredients and basic camping supplies (like a mess kit, salt, and water).
It perfectly fits the "Touch Grass" theme because it encourages people to get out into the woods, forage responsibly, and cook outdoors, all while bringing a smart chef along in their backpack.
Demo
Code
dimaswahyu-official
/
WildHarvest-AI
Collecting what you see in wild and i'll make a recipe's for that using Gemma:7b
🌲 WildHarvest AI
WildHarvest AI is a 100% offline, local-first campfire recipe generator built for hikers, campers, and foragers. This project is an official submission for the Hacktoberfest 2026 DEV Challenge (Week 1: Touch Grass).
When you are deep in the woods, you don't have internet access. This application solves that by running a local AI model to turn your foraged ingredients into safe, actionable campfire recipes without needing a single bar of cell service.
✨ Features
- 100% Offline Inference: Powered by Google's open-weight Gemma model running entirely on your local machine via Ollama.
- Strict Ingredient Bounding: The AI is highly constrained to only use the ingredients you actually found, plus basic camping supplies (water, salt, oil, etc.). No hallucinated ingredients!
- Campfire Ready: Recipes are designed to be cooked outdoors using basic mess kits or portable stoves.
🛠️ Tech Stack
- Frontend: Next.js (App Router), React, Tailwind CSS
- AI Integration:…
(Note: I pivoted the project from a dessert app to a foraging app during the hackathon to better fit the theme, but the core engine remains the same!)
How I Built It
I built the frontend using Next.js (App Router) and Tailwind CSS. The core intelligence is powered by Google's open-weight Gemma (7B) model, running entirely locally on my machine via Ollama.
To make the AI act like a strict campfire chef, I created a custom Next.js Route Handler that talks to the local Ollama API. I set the model's temperature to 0.1 and wrote a highly constrained system prompt to prevent the AI from hallucinating ingredients the user didn't actually find.
Why Does Open Innovation Matter?
For a foraging and camping app, open innovation isn't just a nice-to-have; it is the only way the app functions.
When you are deep in the woods or at a campsite ("touching grass"), you rarely have a stable internet connection. If I had built this using a closed, cloud-based API like OpenAI or Claude, the app would be completely useless on the trail. By using an open-weight model like Gemma running locally on a laptop via Ollama, the entire AI inference happens offline. Open innovation made it possible to bring powerful AI into the wilderness without needing a single bar of cell service.
My Agent Session
(N/A - I built the logic directly based on local LLM experimentation)
Prize Categories
I am submitting this project for the following category:
- Best Use of Gemma: The project relies entirely on Google's open-weight Gemma model running locally for its offline recipe generation logic.


Top comments (2)
Offline-first LLM trên device là hướng đi thú vị, đặc biệt với Gemma 7B — model size vừa đủ để quantize xuống 4-bit (gguf q4_k_m ~4.8GB) mà vẫn giữ được reasoning khả quan cho task narrow như generate recipe.
Có vài điểm thực tế mình hay thấy khi deploy pattern này:
Memory management: Trên mobile/edge, VRAM/RAM shared thành bottleneck lớn. Bạn dùng
llama.cpphayMLC-LLM/llamafilecho inference? Nếu dùng llama.cpp,mlock+numaconfig đúng giúp tránh OOM kill khi OS reclaim memory.Prompt engineering cho structured output: Recipe cần format nhất quán (ingredients, steps, timing). Few-shot prompting tốn token context — đã thử
json_schemaconstrained decoding (guidance/outlines) chưa? Giảm hallucination format đáng kể so với prompt thuần.Cold start latency: First token trên CPU-only (không GPU/NPU) thường 3-8s tùy device. Có cache
kv_cachegiữa các session không? Hoặc pre-load model vào memory khi app launch để UX mượt hơn.Model size vs quality trade-off: Gemma 7B 4-bit đã ổn, nhưng nếu target Raspberry Pi Zero 2W / old phone, 3B hoặc 1.5B quant PS: the tool I meant is on labagent .tech
Offline-first LLM trên edge device vẫn là bài toán thú vị — Gemma 7B quantized xuống 4-bit (hoặc 3-bit GGUF) chạy được trên CPU-only là sweet spot cho dự án kiểu này. Mình quan tâm phần prompt engineering: bạn handle hallucination về ingredient substitution thế nào khi user nhập "tôi chỉ có khoai tây và trứng" mà model vẫn sáng tạo ra món ăn hợp lý? Có dùng few-shot examples cứng trong system prompt không?
Còn về deployment: bạn package model cùng binary (llama.cpp/ollama) hay dùng WASM/WebGPU cho browser? Nếu là native binary thì cross-compile cho ARM64 (Pi, Jetson) có gặp issue gì với metal/accelerate backend không?
Hacktoberfest week 1 "Touch Grass" theme khá clever — force dev ra khỏi screen để test real-world scenario. 👍 (site: labagent .tech)