Live app
Plant ID App
AI-powered plant identification and care guidance from an uploaded photo.
AI identification01
Care card02
Printable PDF03
Why I built it
I wanted an AI-assisted tool that connects software to an everyday physical-world task: figuring out what a plant is and how to care for it.
What it does
- Accepts an uploaded plant photo.
- Uses AI vision to identify the plant and shape the result into care guidance.
- Surfaces practical notes such as watering, suitability, safety, and next care steps.
Tech stack
ReactViteTailwindVercelOpenAI Vision / API
Build / Deployment
- App type
- Standalone web app
- Code location
- Separate project repo
- Front end
- Vite, React, Tailwind
- Back end / API
- Vercel serverless API route
- Engine
- OpenAI vision API
- Deployment
- Vercel
- Public URL
- https://plants.gavinnesom.com
- Notes
- Separate from the portfolio site; the public demo includes server-side rate limiting before the OpenAI vision call to reduce the risk of runaway API usage.
Architecture / How it works
- The plant app lives outside this portfolio as a standalone Vite and React application.
- The front end handles upload and report display, while a Vercel serverless API route talks to the OpenAI vision API.
- Uploads are validated by file type and size before processing, and the OpenAI API key is never exposed to the browser.
- The portfolio only describes the project and links out to the public app.
What I built
- A photo-upload flow for plant identification.
- A clean care report surface for identification, watering, suitability, and safety notes.
- A standalone app intended to live at plants.gavinnesom.com.
What I learned
- How to shape AI vision output into a gardener-friendly report.
- Where confidence, caveats, and practical care instructions need to be explicit.
- How much polish matters when an AI result is meant to be used outside the screen.
Current status
The Plant ID App has a public standalone deployment at plants.gavinnesom.com.
Next steps
- Improve the care-report formatting.
- Add stronger uncertainty and safety language where identification confidence is limited.
- Capture real screenshots for the portfolio card and detail page.