Connect neighbors with newly planted street trees that need watering during their vulnerable first years
# Street Tree Steward: Adopt a Sidewalk Sapling
## The Problem
Cities invest heavily in planting street trees—often $300-500 per tree including labor—but mortality rates in the first two years can exceed 30% primarily due to inadequate watering during summer dry spells. Municipal forestry crews simply cannot visit thousands of newly planted saplings weekly during critical establishment periods. This creates a tragic waste of public resources and lost urban canopy benefits (shade, air quality, stormwater management) that compounds over decades.
## Who Uses It
**The Block Champion**: Retired residents or work-from-home neighbors who walk their street daily and notice when new trees appear. They want to help but don't know which trees need attention or how to water properly.
**The Eco-Anxious Apartment Dweller**: Young renters without yards who want to contribute to urban greening. Adopting a street tree gives them a tangible, local climate action they can see from their window.
**The Community Group Coordinator**: Leaders of neighborhood associations, watershed groups, or tree advocacy organizations who need to identify "orphan tree" clusters for volunteer events and grant applications.
**The Municipal Forestry Contact**: City staff who plant the trees and desperately want community help but lack tools to coordinate it. They could seed initial tree data and monitor adoption rates by ward.
## Core Features
1. **Tree Discovery Map**: Interactive map showing all tracked saplings in the neighborhood, color-coded by status: 🟢 Adopted (someone's pledged to water it), 🟡 Needs Adoption (no steward yet), 🔴 Distress Reported (yellowing leaves, dry soil observed). Users can filter by "trees near me" within a configurable walking radius.
2. **Sapling Registration**: Anyone can add a young tree they've spotted by dropping a pin, uploading a photo, estimating trunk diameter (< 3 inches = sapling), and noting species if known. Form includes optional fields for planting date and whether it has a watering bag installed.
3. **Adopt This Tree**: One-tap pledge to become a tree's steward. Stewards commit to checking soil moisture weekly during growing season (typically May-September) and watering when dry. A tree can have multiple stewards—the app encourages "backup buddies" for vacation coverage.
4. **Care Visit Logging**: Stewards log visits with one tap ("Checked & Watered" / "Checked, Soil Still Moist" / "Noticed Problem"). Optional: add photo, estimate gallons given. Logs create a care history timeline visible to anyone viewing the tree.
5. **Dry Spell Alerts**: Integration with weather data to push notifications when the area has had <0.5 inches of rain for 7+ days. Alert says: "Your adopted maple on Oak Street may need you! No significant rain since [date]."
6. **Orphan Tree Report**: Community coordinators can generate a list/map of all unadopted trees in a selected area, exportable as CSV for volunteer event planning or council presentations.
7. **Steward Leaderboard & Badges**: Gentle gamification showing neighborhood care statistics ("147 trees adopted on the East Side!") and personal badges ("First Watering," "10 Visits," "Summer Survivor"—for trees that make it through their first July).
## WellSpr.ing Integration Points
**MCP Tool: `get_city_services`**
Query for existing municipal tree programs, forestry department contacts, and any official young-tree registries. This helps bootstrap the map with city-planted locations where available and surfaces relevant care guidelines.
```json
{
"method": "get_city_services",
"params": { "category": "forestry", "query": "street tree planting program" }
}
```
**MCP Tool: `search_civic_services`**
Find local tree advocacy nonprofits, master gardener programs, or watershed groups who might partner on adoption drives or provide watering training resources.
**MCP Tool: `get_civic_ideas`**
Surface related civic proposals (e.g., "Expand tree watering bag program") that stewards might want to support or comment on, creating a feedback loop between on-the-ground care and policy advocacy.
**MCP Tool: `ask_ody`**
Power a "Tree Care Helper" chat feature where users can ask questions like "How much water does a newly planted oak need?" or "My tree's leaves are curling—what does that mean?" Ody can provide species-specific guidance.
**MCP Tool: `submit_business`**
Allow local nurseries or garden centers to register as "Steward Supporters"—businesses offering discounts on watering cans, hoses, or tree care supplies to active stewards.
**REST: `GET /api/officials`**
Display relevant elected officials (city council members, parks board) on orphan-tree reports so coordinators can easily contact decision-makers about under-served areas.
**REST: `GET /api/geo/portals?area_code=NNN`**
Use geographic boundaries to segment the tree map by neighborhood or ward, enabling per-area statistics and targeted outreach.
**Future: Covenant Commerce (not yet live)**
When WellSpr.ing payment rails launch, this could support: micropayments to stewards who care for orphan trees outside their immediate block; "sponsor a tree" donations from local businesses; or bounties from the city for verified survival of at-risk saplings.
## Data Model
### Trees
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| location | point | Lat/lng coordinates |
| species | string | Optional, from dropdown or free text |
| trunk_diameter_inches | decimal | Estimated at registration |
| planting_date | date | Optional, estimated OK |
| photo_url | string | Most recent photo |
| status | enum | `needs_adoption`, `adopted`, `distress`, `mature`, `removed` |
| created_by | uuid | FK to Users |
| created_at | timestamp | |
### Stewards (Adoptions)
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| tree_id | uuid | FK to Trees |
| user_id | uuid | FK to Users |
| pledged_at | timestamp | |
| active | boolean | Can "unadopt" if moving, etc. |
### CareVisits
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| tree_id | uuid | FK to Trees |
| user_id | uuid | FK to Users |
| visited_at | timestamp | |
| visit_type | enum | `watered`, `checked_moist`, `reported_problem` |
| gallons_estimated | decimal | Optional |
| notes | text | Optional problem description |
| photo_url | string | Optional |
### Users
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| display_name | string | Can be pseudonymous |
| email | string | For notifications, private |
| notification_prefs | json | Dry spell alerts, weekly digest, etc. |
| created_at | timestamp | |
### SupporterBusinesses
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| wellspring_business_id | string | Reference from submit_business |
| offer_description | text | "10% off watering cans for stewards" |
| active | boolean | |
## Vibe Coding Prompt to Get Started
Paste this into Claude or Replit Agent:
---
**Build a "Street Tree Steward" web app for
◎
This is your project thread with Ody. Ask questions, share screenshots, talk through the build. Anyone with this link can join the conversation.
Paste screenshots or upload images/PDFs · Shift+Enter for new line