
Purrfect Match
PurrfectMatch is a playful pet adoption web app created for my Expert System Design Theory class. Built with Flask and Tailwind CSS, it connects to real-time animal shelter datafrom the RescueGroups API and guides users through a short quiz to find adoptable pets that match their lifestyle and preferences. To reduce processing time, the system uses Prolog logic to match users to a category of pets, then fetches the filtered results from the API. I wanted to design something that could support people during an important life decision such as choosing a furry friend that fits their life.
Purrfect Match
PurrfectMatch is a playful pet adoption web app created for my Expert System Design Theory class. Built with Flask and Tailwind CSS, it connects to real-time animal shelter datafrom the RescueGroups API and guides users through a short quiz to find adoptable pets that match their lifestyle and preferences. To reduce processing time, the system uses Prolog logic to match users to a category of pets, then fetches the filtered results from the API. I wanted to design something that could support people during an important life decision such as choosing a furry friend that fits their life.
Expert System Design Theory Class Project
Web Development Contributor
UX/UI Designer
Problem Statement
Pet adoption platforms often present users with cluttered interfaces, inconsistent pet profiles, and overwhelming amounts of unorganized information. For first time adopters, this makes an already emotional process feel confusing and discouraging. Many sites rely on long filter lists and endless scrolling, but fail to offer meaningful guidance or updated, trustworthy pet information. My team and I set out to design a more focused and supportive experience, one that uses clear visual hierarchy, listings, and a lifestyle-based quiz to match users with compatible pets in a calm, welcoming interface.

Purrfect Match Team
Goals
Our primary goals were to design a user-friendly flow that matches users with adoptable pets, create an interface that's accessible and intuitive, and explore how logic-driven systems could be integrated with an API. We also aimed to build user trust through clean UI design and clear pet profiles.
Research & Planning Process
My initial motivation for PurrfectMatch came from a personal pain point: my partner and I struggled to find accurate, trustworthy pet adoption information. The process was slow, frustrating, and often led to dead ends. I wanted to understand if others also faced similar issues and how design could solve them.
Approach
I used a mix of user interviews, online community analysis and competitor reviews to uncover the main adoption journey pain points.
Methods
- Interviewed 2 participants in Orange County who had recently adopted a pet.
- Reviewed posts on Reddit.
- Evaluated 3 major platforms (Petfinder, Adopt-a-Pet, and local shelter sites) for usability, content clarity, and search efficiency.
Key Insights & Design Implications
Insight | Design Response | Source |
---|---|---|
Users feel overwhelmed by too many filters and irrelevant matches | Created a quiz-based flow to personalize results instead of filter overload | Interviews, Reddit |
Pet profiles often lack essential info (personality, compatibility) | Structured profiles to include personality tags and compatibility icons | Surveys, Competitor Reviews |
People want to know upfront if a pet is good with kids, cats, or has special needs | Added clear compatibility indicators in every profile | Interviews |
Adoption process is unclear and frustrating | Built transparent process timelines into the UI | |
Overwhelming filters and outdated listings reduce trust | Integrated real-time shelter data to keep listings accurate | Competitor Analysis |
Minimal emotional engagement in profiles | Designed story-driven profiles with multiple high-quality photos | Competitor Analysis |
User Persona

PurrfectMatch User Persona
Due to scope and access, this case study focuses on the experience of first-time adopters, represented by our persona, Maria. Future iterations could benefit from incorporating insights from shelter staff or experienced adopters.
My Role
As the primary UX/UI Designer and web development contributor, I worked on both the structure and visuals of the application. My contributions include:
UX/UI Design
I led the design direction for the project and guided the team in aligning design with logic-driven system capabilities. I also designed wireframes and mockups using Figma, ensuring readable typography and balanced layout spacing.
Front-End Development
Built the Quiz, Results, Browse, and Pet Profile pages. I worked closely with back-end teammates to display live API dataand debugged layout and spacing issues.
Backend Logic
I contributed to writing Prolog rules that matched user quiz answers to pet traits. I helped design the mapping logic that categorized pets (e.g., high-energy dogs) before fetching results from the API.

Purrfect Match Quiz

Purrfect Match Profile
Challenges Faced
API Issues
Learning how to fetch and display dynamic data from RescueGroups.org. I also had challenges of linking that dynamic API data to my Prolog-driven matching data.
Consistent UI
Keeping the UI consistent and readable across varying amounts of pet data.
Delegating Tasks
As the project progressed, it was challenging to delegate tasks effectively since team members had varying strengths in design, logic, and coding. We had to figure out how to split work fairly while playing to each person's strengths without leaving anyone behind.
Lessons Learned
API Integration Confidence
I learned how to fetch and display data from RescueGroups.org and more importantly, how to connect that dynamic data to other logic layers in my web application.
Bridging Logic and UX
Connecting the Prolog recommendation logic with the API data made me realize how deeply technical structures shape user experience.
Importance of Documentation
I gained practice in reading and interpreting API documentation to identify which variables and endpoints would support my design goals.
Designing with Constraints
Working within the limits of a class timeline and partial data sources showed me the importance of prioritization and scoping.
Gallery

PurrfectMatch Home Page

PurrfectMatch Personal Quiz Results

PurrfectMatch Browse Pets
Reflection
This project taught me how technical decisions shape the user experience. For example, the way I structured the quiz and Prolog rules directly determined whether adopters received helpful or confusing pet matches. Working within the limits of a short class timeline also showed me the importance of scoping: focusing on the core quiz → match → profile flow rather than trying to build every feature. If I were to continue this project, I would refine the quiz logic with more nuanced variables, add pet characteristics to support ongoing searches, ensure a mobile-first design, and improve data trust by flagging incomplete or outdated listings. Overall, the case study reinforced that good UX is about more than clean visuals. It's about building trust and reducing friction in an emotional and complex process like adoption.