← back to Animals

agents/animal-yolo/task-pool.json

68 lines

[
  {
    "id": "yolo.dog-park-from-mypets",
    "title": "Wire /my-pets to /dog-park — auto-fill avatar",
    "prompt": "In ~/Projects/animals: when a logged-in user goes to /dog-park, pre-fill the join form with their first owner_pets row (name, hero_image_url, breed-to-color mapping). The dog-park already accepts dogName + dogColor on join; add an /api/dog-park/me endpoint that returns this user's first pet, and have public/dogpark/dogpark.js call it before showing the join modal so it's pre-populated. If user has multiple dogs, show a picker. Don't break unauthenticated flow — anonymous users still see the manual form."
  },
  {
    "id": "yolo.shelter-adoption-feed",
    "title": "Adoption events on /shows page",
    "prompt": "In ~/Projects/animals: queue a `events` table insert per CA shelter (category='shelter' or 'rescue') with kind='adoption_event' that's a recurring weekly Saturday 11am-3pm 'Open adoption hours' tied to that shelter's lat/lng. Idempotent — only insert one per shelter per month. The /shows route already renders events; check it's surfacing adoption events with a heart marker color."
  },
  {
    "id": "yolo.pound-detail-photos",
    "title": "Surface adoptable animals on pound/shelter detail pages",
    "prompt": "In ~/Projects/animals: on /clinic/:id pages where category in ('shelter','rescue','pound'), query shelter_animals table for that business_id and show available animals as cards (name, breed, photo if any, age_class). The query is already there in renderBusiness — just add a section before the lead form."
  },
  {
    "id": "yolo.breed-page-related-businesses",
    "title": "Breed page: nearest businesses that work with this breed",
    "prompt": "In ~/Projects/animals: /breeds/:slug currently shows top-rated vets generally. Replace with a query that prefers vets in the visitor's home_zip (if logged in) or top-rated for that species. Also add a 'Find a {breed_name} breeder near you' lead-form CTA that pre-fills category_wanted='breeder' and species_wanted=this breed."
  },
  {
    "id": "yolo.email-verify-gate",
    "title": "Email verification on signup",
    "prompt": "In ~/Projects/animals: when a user signs up, send a verification link via George (localhost:9850 /api/send) and require click before they can post marketplace listings or send friend requests. Store verification token in app_users (you may need a new column). Don't break existing unverified accounts — grandfather them with email_verified_at=created_at."
  },
  {
    "id": "yolo.dog-park-dog-photo",
    "title": "3D dog park: use dog's actual photo as billboard texture",
    "prompt": "In ~/Projects/animals: in public/dogpark/dogpark.js, when an owner_pets photo URL is provided in the join message, build a Three.js Sprite from a CanvasTexture that loads that photo + the dog's name underneath. Show that sprite floating above the dog avatar so users recognize who's who in multiplayer. Anonymous users still see the colored capsule dog."
  },
  {
    "id": "yolo.pet-store-products",
    "title": "Pet store detail: 'what they sell' section",
    "prompt": "In ~/Projects/animals: /clinic/:id pages where category='pet_store' should show a generic services/inventory blurb. Add a `products_carried` text[] column to businesses (migration needed). Default common items (Chewy, Blue Buffalo, Kong, Petco-house-brand). On detail pages, render that as chips."
  },
  {
    "id": "yolo.business-claim-flow",
    "title": "Business owners can claim their listing",
    "prompt": "In ~/Projects/animals: add a /clinic/:id/claim route. If logged-in user submits, it sends a verification email to the email already on file for that business. Click the link, businesses.claimed_by gets set. Claimed businesses get a green badge + the owner can edit hours/website/phone via /clinic/:id/edit (auth-gated to claimed_by)."
  },
  {
    "id": "yolo.weekly-newsletter",
    "title": "Weekly newsletter: top breed photos + nearest events",
    "prompt": "In ~/Projects/animals: add agents/animal-agent task type 'weekly_newsletter' that runs every Sunday and emails registered users a digest of: 5 random breed gallery photos, upcoming dog shows in their home_state, latest 3 marketplace listings in their home_zip area. Send via George (localhost:9850 /api/send). Use unsubscribe_token in app_users (new column)."
  },
  {
    "id": "yolo.lost-pet-alerts",
    "title": "Lost-pet listing → SMS alert to neighbors in ZIP",
    "prompt": "In ~/Projects/animals: when a marketplace listing of type='lost_pet' is posted, find all app_users with home_zip matching listing.zip OR within ZIP-3 prefix, AND who opted in (new column: alert_lost_pets). Send them an email via George with the listing photo + last-seen location + contact info. Never SMS without an opt-in."
  },
  {
    "id": "yolo.upgrade-stripe-real",
    "title": "Wire Stripe Checkout for upgrade orders",
    "prompt": "In ~/Projects/animals: the upgrade_orders table currently goes to 'pending_payment' manually. Wire actual Stripe Checkout: when an order is placed, create a Stripe checkout session with the right line items ($499 starter / $999 pro / $49 monthly hosting), redirect user to it. On success webhook, mark order paid. Use STRIPE_SECRET_KEY from .env. Test mode is fine — don't try to use the live key."
  },
  {
    "id": "yolo.directory-sitemap",
    "title": "Generate sitemap.xml + robots.txt",
    "prompt": "In ~/Projects/animals: generate a /sitemap.xml route that lists every breed, every business detail page, every shows event, every breed gallery page. Cache at agent level — regenerate every 6h. Add /robots.txt that allows everything except /admin/* and /api/*. Goal: get indexed by Google for the long-tail breed + city queries."
  },
  {
    "id": "yolo.codex-debate-on-self",
    "title": "Codex debate on agent's own diff",
    "prompt": "In ~/Projects/animals: trigger a 4-round claude-codex apply-mode debate on whatever the YOLO loop has produced in the last 6 hours. Use ~/.claude/skills/claude-codex/scripts/start.sh. Name the run with a date stamp. Just kick the debate — don't wait for it (it forks)."
  }
]