Inspiration

NYC is full of hidden gems, but it’s easy to feel lost among the concrete jungle. We wanted to create a playful way to connect people with the city — and what better way than through trees, restaurants, and parking spots? Tree Huggers was born from the idea that your birthday could guide you to your “twin tree,” a nearby restaurant, and even the perfect parking spot. It’s a fun, location-based adventure that turns mundane city data into a quirky, interactive experience.

What it does

Tree Huggers takes your birthday and creates a three-part NYC adventure:

Find your Birthday Tree – Searches NYC’s tree census to locate the tree planted closest to your birthday.

Pick a Nearby Problem Restaurant – Finds restaurants near that tree with critical or severe health violations.

Locate Parking – Finds the closest available parking space near the restaurant, so your adventure is stress-free.

All results are displayed on an interactive map, giving you a fun and visual experience of your personalized “birthday tour.”

How we built it

Backend: FastAPI + Gradient LLM agents, orchestrating queries across three NYC datasets: trees, restaurants, and parking meters.

Frontend: Interactive map built with Leaflet (or React + Leaflet for modern users) that streams results from the backend in real time.

Data handling: Pydantic schemas ensure structured JSON output from the LLM, so the frontend always receives reliable data.

Environment: Deployed locally with uvicorn and .env configurations for API keys and endpoints.

Challenges we ran into

LLM output formatting: Ensuring the model returns valid JSON every time was tricky — it sometimes returned None or extra whitespace, which broke parsing.

CORS issues: Browsers enforce cross-origin rules, which caused preflight errors when connecting the frontend to the backend.

Data alignment: Mapping tree, restaurant, and parking datasets together in a meaningful, proximity-based way required careful handling of latitude/longitude and edge cases.

Accomplishments that we're proud of

Built a fully functional, end-to-end interactive experience that combines user input, LLM reasoning, and real NYC datasets.

Ensured robust backend handling with JSON validation, avoiding crashes even when the LLM output was imperfect.

Created a playful, visually engaging frontend that turns city data into a fun map-based adventure.

What we learned

How to orchestrate multiple datasets with an LLM acting as the decision-maker.

The importance of structured prompts and strict schemas for reliable agent outputs.

Handling real-world quirks like empty LLM responses, invisible characters in JSON, and CORS issues.

How to integrate backend APIs with an interactive map frontend for a seamless user experience.

What's next for Tree Hugger

Add custom icons and animations for trees, restaurants, and parking spots on the map.

Enable real-time streaming so users see the tree, restaurant, and parking appear step by step.

Deploy to the cloud for easy access outside local machines.

Expand to other cities, add more quirky datasets, and make Tree Hugger a full-fledged urban adventure app.

Built With

Share this project:

Updates