Inspiration
PawMates was inspired by my two French Bulldogs, Ramon and Ramona. They have very different personalities: Ramona is energetic and playful, while Ramon is calmer. That made me think about how pets have their own identities, interests, and social needs.
Most social networks are centered around people, and pets are just part of the content. I wanted to explore the idea of a social experience where the pet is the main character and where the app helps dogs discover compatible friends based on who they are.
What PawMates does
PawMates is a pet-centered social app that helps dogs find compatible friends based on:
- personality
- energy level
- shared interests
Each pet has its own profile with traits, interests, breed, age, and a locally generated bio.
The main feature is the friend discovery system. PawMates calculates a compatibility score using deterministic Python rules and explains why two dogs may be a good match.
The app also includes:
- separate profiles for Ramon and Ramona
- editable pet traits and interests
- ranked top-5 matches
- compatibility breakdowns for energy, interests, and personality
- strengths and differences for every match
- saved favorite friends
- local persistence so edits and favorites survive restarts
How I built it
I built PawMates as a Flask web application using:
- Python
- Flask
- Jinja HTML templates
- CSS
- JSON for local data persistence
- Pytest for automated testing
The matching engine is fully deterministic and runs locally. The compatibility score is based on:
- 30% energy compatibility
- 40% shared interests
- 30% personality compatibility
The score, short explanation, detailed breakdown, strengths, and differences all come from the same matching data so they stay consistent.
I also used a plan-first workflow with an AI coding agent. Before writing code, I created a scope, product requirements document, technical specification, and build checklist. Each feature was then built in small slices and tested before moving to the next one.
Challenges
One of the biggest challenges was deciding how much of the original idea to build.
The long-term vision includes feeds, reels, nearby pets, playdates, messaging, and more. For this hackathon, I had to reduce that vision to the smallest working proof of concept that still showed what makes PawMates different.
Another challenge was designing the compatibility system so the results felt meaningful and explainable. Instead of using AI to generate match scores, I chose deterministic Python rules so the same pet profile always produces the same result and the user can understand where the percentage comes from.
During development, I also changed direction and removed an external AI integration. I updated the scope, PRD, technical spec, and checklist before changing the code. That helped me keep the project aligned and avoid breaking the features that were already working.
What I learned
The biggest thing I learned was how valuable a plan-first workflow can be when working with an AI coding agent.
Instead of jumping directly into code, I learned to:
- define the core user journey
- reduce the idea to a realistic proof of concept
- write clear product requirements
- make technical decisions before implementation
- build and test one slice at a time
- update the written plan before making major changes
I also learned more about Flask, HTML templates, CSS, local persistence, testing, and how to design an explainable matching system.
PawMates started as a hackathon project, but I would like to continue developing it into a larger social platform for pets in the future.
Log in or sign up for Devpost to join the conversation.