yourType.io

Summary for Non-Technical Readers

We wanted to create a fun and efficient way for users to discover their "type" by swiping through AI-generated profiles of people. This article walks you through the behind-the-scenes process of how we built the system. Here’s the simplified version:

Now, for the tech enthusiasts, here’s a deeper dive into the development process and how it all works!

Getting the Data: Generating Profile Prompts

We started by defining the key characteristics we wanted to include in our dataset. To create the wide variety of profiles displayed on YourType, we generate a detailed prompt for each one. These prompts include essential features like:

The prompt generation tool takes these characteristics as input, which helps build the visual representations of the profiles. Our first step was deciding what attributes should be included in the profiles. Once we identified the important attributes (like hair color, hairstyle, etc.), we structured the prompt generation process to include these elements consistently.

Generating Profiles: Finding the Right Model

Creating realistic, appealing profile images was one of the critical steps. We used a model capable of generating detailed visual representations based on the attribute prompts. The challenge was optimizing the prompts to ensure that the generated images were visually distinct and reflective of the specific characteristics we wanted to highlight.

For example, finding the right balance between hair color, style, and overall look was key to making sure the profiles were representative and varied. After experimentation, we fine-tuned the model’s input prompts to achieve a wide range of diverse and appealing results.

Generating Metadata: Tracking and Analyzing User Interactions

Once the profiles were generated, we needed a way to track how users interact with them. For every profile shown to a user, the system collects metadata. This includes information about which characteristics were present in the profile and how the user responded to it.

Here’s how we handle this:

The Algorithm: Ranking Characteristics

Managing Attributes in Arrays

Each profile characteristic (such as "Hair Color" or "Hairstyle") is managed in its own array. For instance, the "Hair Color" array might look something like this:

HairColor = [blonde, brown, black, red]

Each characteristic has its own array, and we track how often each value is chosen or evaluated positively by the user.

Creating Key Elements for Easy Indexing

Each characteristic in the array is converted into a key element, which helps the algorithm index and rank the characteristics more efficiently. The key elements contain the following information:

Ranking the Key Elements

The next step involves ranking these key elements. To do this, the algorithm looks at several factors:

Refining Your Preferences: Combining Evaluation Data

After showing the user a fixed number of profiles, the algorithm makes a decision. It picks a combination of profiles that reflects the user’s highest-ranked characteristics, ensuring that the user sees more of what they like. However, to avoid overfitting (where the algorithm becomes too focused on one set of characteristics), we also include a few random profiles in the mix.

These random profiles serve two purposes:

How the Algorithm Identifies Your Type

Overall, the algorithm is designed to identify liked characteristics by letting them "bubble up" naturally through repeated positive interactions. As users swipe, the system becomes more confident in their preferences by analyzing patterns in both decision speed and streaks of positive evaluations.

By carefully balancing these factors, the algorithm learns what you’re most likely to be attracted to and starts showing you profiles that reflect those preferences, while still maintaining some variety to keep the experience fresh.

However, it’s important to note that this process is not always accurate. Several factors can contribute to inaccuracies in the algorithm's predictions:

Conclusion

In summary, while the algorithm is designed to learn and adapt to your preferences over time, it may not always provide perfect recommendations. Users are encouraged to explore profiles with an open mind, as their preferences may evolve and change with new experiences and interactions.