Lori Cha

Purrfect Match Banner

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.

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

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

InsightDesign ResponseSource
Users feel overwhelmed by too many filters and irrelevant matchesCreated a quiz-based flow to personalize results instead of filter overloadInterviews, Reddit
Pet profiles often lack essential info (personality, compatibility)Structured profiles to include personality tags and compatibility iconsSurveys, Competitor Reviews
People want to know upfront if a pet is good with kids, cats, or has special needsAdded clear compatibility indicators in every profileInterviews
Adoption process is unclear and frustratingBuilt transparent process timelines into the UIReddit
Overwhelming filters and outdated listings reduce trustIntegrated real-time shelter data to keep listings accurateCompetitor Analysis
Minimal emotional engagement in profilesDesigned story-driven profiles with multiple high-quality photosCompetitor Analysis

User Persona

PurrfectMatch 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.

PurrfectMatch Quiz

Purrfect Match Quiz

PurrfectMatch Porfile

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 Home Page

Personal Quiz Results Page

PurrfectMatch Personal Quiz Results

Browse Pets Page

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.