Inspiration

We wanted to connect people with the trees they walk past every day. Planting a tree is only the beginning; keeping it alive requires continued attention. That led us to a question: what if a tree could tell you how it feels—and caring for it became a game you could play with your community?

Branch Out gives trees a voice and makes their needs visible, creating a personal reason to return and care for them.

What It Does

Players discover trees on a map, scan them for species identification, and talk to them through text or voice. Each tree has stable character traits, but its mood changes with available moisture, temperature, light, and trend information. A thirsty tree can sound concerned; a recovering tree can sound relieved.

Players can start nearby care sessions and earn points and ownership after authenticated device evidence and sensor recovery satisfy the game’s rules. Leaderboards and territory control make individual care part of a shared competition.

How We Built It

We built a React/Vite web app and an Expo mobile app, with shared TypeScript contracts and validation. Supabase provides authentication, PostgreSQL game state, storage, and realtime updates.

Our hardware setup uses an Arduino moisture sensor and a Raspberry Pi Python bridge to send JSON readings to the backend. A mapping function converts available readings into structured personality parameters, which guide Gemini’s responses. Gemini also handles image-based species identification, while ElevenLabs provides speech transcription and spoken replies.

The personality pipeline follows:

Sensor JSON → calibrated measurements → personality parameters → prompt → Gemini response

We also built a Tiger Data historical-storage integration for “Ask My Trees,” designed to support questions such as “How are my trees doing this week?” Connected historical analytics still requires the Tiger service to be configured.

Rewarding Responsible Watering

Our watering reward starts with:

$$ P=\operatorname{round}\left[B(1+0.6N+0.4\sqrt{G})(1-O)^2\right] $$

  • B: Base award, currently 10.
  • N: Initial dryness.
  • G: Useful moisture gain toward recovery.
  • O: Excess moisture beyond the recovery target.

The implementation caps the award between 0 and 2B. Useful recovery increases points with diminishing returns, while excess watering reduces them. Points are awarded only after a verified recovery.

Challenges We Faced

One major challenge was translating raw sensor numbers into meaningful tree states. Moisture readings require calibration, and missing measurements must remain unknown. We built validation and uncertainty handling so a tree’s personality reflects the information actually available.

Another challenge was keeping the game trustworthy. Receiving a sensor packet alone should not award points. We separated raw uploads from calibrated readings and required authenticated evidence, fresh measurements, proximity, and recovery before awarding care points.

Connecting hardware, cloud services, voice, and mobile clients also introduced integration challenges, including network reliability, permissions, and sensor freshness.

What We Learned

We learned how to connect physical measurements to an interactive AI experience while keeping facts and game rules under backend control. Gemini gives trees expressive voices; database transactions decide measurements, ownership, and rewards.

We also learned that incentives shape behavior. Rewarding verified recovery—and reducing rewards for excess watering—helped us design a game around thoughtful care. Our goal is to make caring for a tree feel like maintaining a relationship.

Share this project:

Updates

Submission history