# What is 2bttns?

## Collect user data

2bttns *(pronounced as two buttons)* makes data collection an ethical and enjoyable experience by having users play a fun two-button game connected to your app. Easily integrate 2bttns into your applications to gather data seamlessly.

#### Watch: demo app using 2bttns

{% embed url="<https://youtu.be/5sxWzLmAbNA>" %}
2bttns being used to collect data in this app's onboarding
{% endembed %}

Leave the user experience to us, so you can concentrate on the crucial elements of your app. 2bttns is not only powerful, but really, really fun to play.&#x20;

🤔 Don't believe us? Try it out for yourself by clicking **Play** [here](https://www.2bttns.com).

## How is 2bttns ethical?

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/ODX1fudgg77z0wEOlvT9/surveillance-capitalism.jpg" alt=""><figcaption><p>Tracked and traced: the hidden cost of surveillance capitalism.</p></figcaption></figure>

**The past**: [Standard personalization systems](https://medium.com/understanding-recommenders/how-platform-recommenders-work-15e260d9a15a) are based on user surveillance and inferring preferences through behavioral usage data; [however, engagement isn't always a proxy for well-being, or preference. ](https://medium.com/understanding-recommenders/whats-right-and-what-s-wrong-with-optimizing-for-engagement-5abaac021851)

**The future**: Why not just ask them? 2bttns adopts [human-in-the-loop](https://hai.stanford.edu/news/humans-loop-design-interactive-ai-systems) design principles, directly engaging users with algorithms for content, recommendations, and personalizations. 2bttns not only minimizes bias but also enhances the transparency and explainability of your app to end users.

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/Oz5NwCi8QfNITNbEbTHZ/The-WeBuildAI-framework-allows-people-to-participate-in-designing-algorithmic-governance.jpg" alt=""><figcaption><p>Users generate data by playing a 2bttns game. That data is then used for recommendations.<br>Figure from <a href="https://www.researchgate.net/figure/The-WeBuildAI-framework-allows-people-to-participate-in-designing-algorithmic-governance_fig1_335777684">WeBuildAI: Participatory Framework for Algorithmic Governance</a> </p></figcaption></figure>

#### **How'd 2bttns know that?**

2bttns gathers lots of information easily, even without showing everything to users during the game. This means you get more data with less work from the users. Oh, and there's also [a whole field dedicated to this](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0123483).

## Game results = data

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/XaaYPyYSFERXXYnzAIDe/Screenshot%202024-02-26%20at%204.19.57%E2%80%AFPM.png" alt="" width="563"><figcaption><p>Classic Mode (default game) will score items between 0 and 1, indicating strength</p></figcaption></figure>

Users only need to play once to generate data, but can always play more to fine-tune their preferences. 2bttns comes with a comprehensive RESTful API for querying game results. With the API, you can easily fetch specific game results, global scores, and much more directly from your backend.

{% code title="Game results" overflow="wrap" %}

```json
{
  "scores": [
    {
      "gameObject": {
        "id": "76as67f6as78f67asf",
        "name": "Romance-Comedy"
      },
      "score": .976625
    },
    {
      "gameObject": {
        "id": "12312dsf76as267f6as78f67asf",
        "name": "Action/Adventure"
      },
      "score": .825111
    },
    ...
  ]
}
```

{% endcode %}

Everything is stored in your database. 2bttns seamlessly connects to your database to store all things related to 2bttns.

## Customize everything

Build everything in the 2bttns [Console](https://docs.2bttns.com/getting-started/quick-start), and use the [Console's API](https://docs.2bttns.com/references/apis) for everything else.&#x20;

When configuring a game, you can set the **prompt (question)**, **inputs**, **round length**, and optional **CSS styling**.  Essentially, games are built upon *Game Modes*. Game Modes can feature custom interactions and processing mechanisms .

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/v5j1MMRwBxU6G6FwcOB3/Screenshot%202024-02-21%20at%2012.59.58%E2%80%AFAM.png" alt=""><figcaption><p>Game configuration page within the 2bttns Console</p></figcaption></figure>

#### **Classic Mode**

{% hint style="info" %}
[Click here](https://github.com/2bttns/2bttns/tree/main/app/src/modes/classic) to explore the open-source ranking function behind Classic Mode.
{% endhint %}

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/1zk9ClJzakowv4ZR939D/Screenshot%202024-02-21%20at%2012.59.19%E2%80%AFAM.png" alt=""><figcaption><p>Game Modes come with custom configuration parameters. <br>Develop your own Game Modes and custom configurations.</p></figcaption></figure>

Out of the box, 2bttns includes the *Classic Mode*. This game mode offers a simple user interface paired with a powerful backend processing system that ranks items based on user preferences, from most to least favored.&#x20;

<figure><img src="https://content.gitbook.com/content/n2L7ltGlCAKlpbJZ3edj/blobs/k4eR5DNrIAGvGQxyjaiX/Screenshot%202024-02-21%20at%2012.57.24%E2%80%AFAM.png" alt="" width="563"><figcaption><p>Classic Mode's results (https://www.2bttns.com > Show Ranked Game Objects)</p></figcaption></figure>

At 2bttns, we provide a comprehensive open-source platform equipped with everything required to develop your own unique Game Modes. Strapped for time? Worry not. Our soon-to-be-launched Game Shop will feature a vast collection of custom, ready-to-implement game modes by our developer community.&#x20;

## What will you build?
