What we learned
Inspiration
Most of us have stood over a bin holding a jar, a broken charger or a takeout container, not sure where it goes. Recycling rules change from town to town, and "just toss it" usually wins. We were inspired by Pixie Hollow's tinker fairies, who turn lost human things into something useful. We wanted something that would make sorting trash feel less like a chore and more like a bit of magic.
What it does
Fixie is a mobile-first web app. You point your phone camera at a piece of junk and tap Scan. A fairy matched to the item's material (glass, paper, metal, plastic, textile, organic, electronic or mixed) appears and tells you:
- What the item is and what it's made of
- Whether you can recycle it where you live: yes, no, or special drop-off, with steps like "rinse it, remove the lid"
- Upcycling ideas you can actually make, with step-by-step instructions
You can tell the fairies about yourself: your space (indoors, balcony or yard), your interests and the craft tools you have. Fixie then tailors the ideas to you. Every scan also grows a new branch on your Grove, a tree that fills in as you keep things out of landfill.
How we built it
- Frontend: Next.js and React with Tailwind and Framer Motion. It includes a live camera view, a swipeable result card, fireflies, a petal shower and a first-launch intro.
- AI: A server route sends the camera frame to Claude's vision model and gets back structured JSON. If there's no Claude key, it falls back to Gemini's free tier, and with no key at all it serves demo results.
- Grounding: For New Jersey, we checked the recycling rules by hand and kept them in a knowledge base (an Obsidian vault). Those rules go into the prompt so answers come from real local guidance, not guesses.
- Safety and reliability: We validate every request, model response and setting with Zod. Image size is capped, the scan endpoint is rate-limited per IP with Upstash, and repeat scans are cached.
- Quality: TypeScript throughout, a Vitest test suite, and a typecheck, lint and test gate before every merge.
Challenges we ran into
- Logos fooled the model. It would read the brand on a bottle and miss the material, so we changed the prompt to identify items by shape and material.
- Gemini often answered "unsure." Switching to a newer Gemini Flash model fixed it.
- Safe advice. A wrong answer about a battery is worse than no answer. We made sure Fixie never suggests reusing hazardous items and keeps small parts out of kid-focused ideas.
- One screen, no scrolling. We had to fit the camera, results and ideas on a phone screen without making it feel cramped.
- Personalization that matters. Our first version collected your preferences but barely changed the ideas, so we went back and made the profile actually shape them.
Accomplishments that we're proud of
- The whole loop works on a real phone: camera, scan, fairy, result.
- Recycling answers come from verified local rules, not just a model's best guess.
- Fixie stays whimsical without giving up on correctness or safety.
- The Grove gives people a reason to come back and scan again.
What we learned
- Keeping an AI accurate is mostly about grounding it in real data and validating its output, not clever prompts.
- Recycling rules are very local, which is exactly why a tool like this helps.
- Delight matters: the fairies and fireflies are what make people want to use it.
- Agreeing on a clear spec and a shared quality bar early made it much easier for our team to build in parallel.
What's next for Fixie
- Streaks that reward daily scanning and make your Grove more magical
- More regions beyond New Jersey, each with verified local rules
- A Tinker Journal for saving upcycling ideas and checking off the ones you've made
- A "fairy ring" that outlines objects on the device before you tap Scan
- A community counter: "1,204 items saved from landfill" ## What's next for Fixie
Built With
- anthropic-api
- claude
- eslint
- framer-motion
- gemini
- next.js
- node.js
- obsidian
- pnpm
- react
- react-testing-library
- redis
- tailwind-css
- typescript
- upstash
- vitest
- yaml
- zod
Log in or sign up for Devpost to join the conversation.