

RescuePawtal
- Product Definition
- Interaction Design
- Platform Strategy
- Privacy Design
- Flutter Build
- Store Release
What we're solving
RescuePawtal lets anyone report an animal in distress in under two minutes. You describe what you have found, the app captures your location with consent, matches you to the nearest rescue organisation from a managed directory, and hands the whole report to that team over WhatsApp. There is no account and no login. Reports live on the device and delete themselves after 30 days, and no photo is ever stored centrally, which is what keeps the running cost near zero.
Why it matters
The report is worthless unless it reaches a specific rescue team with a photo attached. WhatsApp is the only channel these teams reliably answer, so the handoff has to work there. On Android one intent carries the recipient, the caption and the image together. On iOS no route carries all three: the ones that take a phone number take text but no attachment, and the ones that take an image take neither a recipient nor a caption. That forced a choice about which half to keep, and the choice reshaped the whole flow on one platform.
How we got there
Who answers, and where: Small rescue organisations run on WhatsApp and a phone. Building a portal they would have to check was never realistic, so the app had to deliver into a channel they already read.
The recipient is a stranger: The rescue team comes from the app's own directory, not from the reporter's contacts. That single fact decided the iOS trade-off later, because a share sheet would have dropped people into a contact list the team is not in.
Cost as a constraint, not a footnote: Near-zero hosting was a hard requirement. Storing photos centrally would have broken it, which pushed the design toward handing media straight to WhatsApp and keeping the device as the only store.
Who this is for
Members of the public who have just found an animal in trouble and have no idea who to call. On the other end, small rescue organisations who work out of WhatsApp and cannot staff a portal.
Meet the users
The person who stopped
Found an injured dog by the roadside on the way home. Has never contacted a rescue before. Representative rather than interviewed.
- Age:
- 29
- Location:
- Nairobi
- Occupation:
- Retail Supervisor
Goals
- Get someone who can actually help to see the animal
- Send a photo and a location without typing an address
- Not create an account while standing at the roadside
Frustrations
Searching for a local rescue returns numbers that may be dead, and there is no way to tell before calling.
The rescue coordinator
Runs intake for a small rescue on a shared phone. Representative rather than interviewed.
- Age:
- 45
- Location:
- Mombasa
- Occupation:
- Rescue Coordinator
Goals
- Judge urgency from the photo before dispatching anyone
- Get a location that opens straight in a map
Frustrations
Reports arrive as a wall of text with no picture, so the first ten minutes go on asking what the animal actually looks like.
What they need to do
- Report without an account
- Attach a clear photo
- Share location with consent
- Reach the nearest rescue team
- Send everything in one message
- Keep a private local history
- Know when nobody covers the area
Mapping the journey

Sketching the structure


The finished experience
