Turn scattered lost pet flyers into a searchable neighborhood watch network that actually brings pets home.
# Lost Pet Poster Patrol: Reunite Missing Animals
## The Problem
Every neighborhood has a silent tragedy playing out on telephone poles: faded lost pet flyers that reach maybe 50 people before the rain takes them. Meanwhile, someone three blocks over saw that exact tabby yesterday but has no way to connect with the desperate owner. The information exists—it's just scattered, ephemeral, and trapped in physical space when it needs to flow through a network.
## Who Uses It
**Pet owners in crisis** — The person who just realized their dog slipped out the back gate and needs to broadcast quickly while also searching reports of found animals in the area.
**Neighborhood walkers and joggers** — People who cover ground daily and notice things: a new flyer on a pole, a cat hiding under a porch that doesn't look like it belongs, a dog wandering without tags.
**Local business owners** — Shop owners who often become informal lost pet bulletin boards and want a better way to help than just taping flyers to their window.
**Animal rescue volunteers** — Folks already networked into the local animal welfare community who can amplify matches and suggest resources.
## Core Features
1. **Report a Lost Pet** — Owner submits pet details: photo, name, physical description (color, size, breed, distinctive markings), last seen location and time, microchip status, and contact preference (phone, email, or anonymous relay through the app).
2. **Report a Sighting** — Anyone can log "I saw a lost pet flyer at [location]" (transcribing details or snapping a photo) OR "I spotted a wandering animal at [location]" with description, photo if possible, and timestamp.
3. **Automatic Match Suggestions** — When a new sighting comes in, the system scans active lost pet reports and surfaces potential matches based on: animal type, coloring keywords, size, location proximity (within configurable radius), and timeframe. Both reporter and owner see the match card and can initiate contact.
4. **Neighborhood Feed** — A scrollable local feed combining: active lost pets in your area, recent sightings, relevant local news items (pulled from WellSpr.ing), and free item listings that might help (carriers, crates, food).
5. **Resource Hub** — Searchable directory of local animal services: shelters, vets who scan microchips for free, animal control contacts, rescue organizations. Populated from WellSpr.ing civic services data plus community submissions.
6. **Reunion Button** — When a pet is found, owner marks the case "Reunited!" which archives it, optionally posts a happy update to the feed, and prompts the owner to suggest a civic improvement (like "we need more microchip clinics").
7. **Civic Ideas Pipeline** — Suggestions from reunited owners (and anyone) flow into WellSpr.ing's civic ideas channel: requests for microchip clinics, better-lit parks, fence repair programs for low-income pet owners, etc.
## WellSpr.ing Integration Points
### MCP Tools (via POST to `https://wellspr.ing/mcp` using JSON-RPC 2.0)
| Tool | Usage |
|------|-------|
| `get_local_news` | Pull animal-related community news into the neighborhood feed. Filter results client-side for keywords: "pet," "dog," "cat," "animal," "found," "lost," "shelter." |
| `get_free_items` | Surface free pet supplies (carriers, crates, food, leashes) that might help someone searching or fostering a found animal. |
| `search_civic_services` | Query for animal-related services: shelters, animal control, vets, rescue orgs. Use search terms like "animal shelter," "veterinarian," "pet." |
| `get_city_services` | Retrieve official city animal services (animal control hotline, licensing info, municipal shelter details). |
| `get_civic_ideas` | Display existing civic improvement ideas related to animals/pets so users can upvote rather than duplicate. |
| `submit_business` | Allow rescue organizations and pet-friendly businesses to add themselves to the directory. |
| `ask_ody` | Power a "Pet Search Helper" chat feature where users can ask questions like "What should I do if I find a stray dog?" or "How do I read a microchip?" |
| `get_adjacent_nodes` | For sightings near neighborhood boundaries, check if the pet might have wandered into an adjacent area and suggest cross-posting. |
| `reach_number` | Generate a privacy-preserving contact relay so finders and owners can connect without exposing personal phone numbers. |
### REST Endpoints
| Endpoint | Usage |
|----------|-------|
| `GET /api/geo/portals?area_code=NNN` | Determine the user's neighborhood context and scope searches appropriately. |
### WCIB Endpoints
| Endpoint | Usage |
|----------|-------|
| `POST /api/wcib/ody-ask` | Alternative path for the Pet Search Helper AI assistant if building through WCIB infrastructure. |
| `GET /api/wcib/ideas` | Fetch civic ideas to display in the app's civic improvement section. |
### Future Capabilities (Roadmap: not yet live)
- **Covenant Commerce for microchip sponsorships** — Allow neighbors to sponsor microchipping for low-income pet owners. (Label any UI for this as "coming soon.")
- **Verified shelter integration** — Direct API connections to local shelter intake databases for automatic matching against shelter arrivals.
## Data Model
### `lost_pets`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| owner_contact | string | Phone, email, or "relay" |
| pet_name | string | Optional |
| animal_type | enum | dog, cat, bird, rabbit, other |
| description | text | Freeform: breed, color, size, markings |
| photo_url | string | Nullable |
| last_seen_location | point | Lat/lng |
| last_seen_time | timestamp | |
| microchipped | boolean | |
| status | enum | active, reunited, archived |
| created_at | timestamp | |
| neighborhood_code | string | From geo/portals |
### `sightings`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| sighting_type | enum | "flyer" or "animal" |
| animal_type | enum | dog, cat, bird, rabbit, other, unknown |
| description | text | What they saw |
| photo_url | string | Nullable |
| location | point | Lat/lng |
| sighted_at | timestamp | When they saw it |
| reporter_contact | string | Optional |
| created_at | timestamp | |
| neighborhood_code | string | |
### `matches`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| lost_pet_id | uuid | FK to lost_pets |
| sighting_id | uuid | FK to sightings |
| confidence | float | 0-1, based on matching algorithm |
| status | enum | pending, contacted, confirmed, dismissed |
| created_at | timestamp | |
### `civic_suggestions`
| Field | Type | Notes |
|-------|------|-------|
| id | uuid | Primary key |
| suggestion_text | text | "We need a microchip clinic" |
| submitted_to_wellspring | boolean | Synced via get_civic_ideas |
| created_at | timestamp | |
## Vibe Coding Prompt to Get Started
Paste this
◎
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