← Back to projects

Animal welfare

Kitten adoption times

Predicting length-of-stay so fosters can prioritize care. Less waiting, more purring. We use tabular models and image embeddings to estimate adoption hazards. We surface the most adoptable kittens and flag those needing a PR boost.

Shelter ops December 2025 Survival modeling

Marwa Bouabid

Why this project?

A few months ago, I went to the Durham Animal Shelter and came back with three fosters. I saw too many animals in distress, so I wanted to build a model that could help shelters prioritize their efforts and reduce the time kittens/puppies spend in foster care.

PyTorch Grad-CAM Survival curves

Demo

Project summary

We combined intake metadata (age, breed), medical records, and raw intake photos to predict days-to-adoption. Shelter staff get a ranked view and intervention tips for the underdogs (or undercats).

Interpretability overlays show exactly which visual cues like a blurry photo or a grumpy expression, are pushing predictions up or down.

Highlights

  • Our hybrid survival model cut median absolute error by ~2.4 days compared to the baseline. That's a lot of saved kibble.
  • Grad-CAM reveals what makes a photo 'adoptable'. Spoiler: good lighting helps.
  • Simple flags for age, weight, and fixed status turn complex model outputs into a to-do list for staff.

Tech stack

  • Python
  • PyTorch
  • FastAPI
  • Pandas

Analytics & methods

  • Survival curves
  • Class balancing
  • Grad-CAM
  • Partial dependence

Download a PDF with all references used for this project.

Download references