A decision card for the chat you already use

Give the group
one scene to choose.

Copy one small payload into Slack, Microsoft Teams, or Telegram. The card gives a group a useful two-scene decision before anyone sends a portrait, then carries a platform-specific handoff when they are ready.

Three surfaces, one useful loop

Copy the format
your group already trusts.

Slack Block Kit

A quiet App Home prompt.

A compact App Home or message block with one user-controlled browser handoff.

TogetherLens Vibe DuelChoose a scene togetherOpen Vibe Duel
Slack Block Kit reference

Show payload
{
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "TogetherLens Vibe Duel"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "Choose one public scene with the group before anyone shares a portrait.\n_No roster, account, or portrait access._"
      }
    },
    {
      "type": "actions",
      "elements": [
        {
          "type": "button",
          "text": {
            "type": "plain_text",
            "text": "Open Vibe Duel"
          },
          "url": "https://togetherlens.app/duel/?round=17&utm_source=slack&utm_medium=app_home&utm_campaign=slack_vibe_room&utm_content=home_card",
          "action_id": "togetherlens_open_duel"
        }
      ]
    },
    {
      "type": "context",
      "elements": [
        {
          "type": "mrkdwn",
          "text": "A user-controlled browser handoff · TogetherLens"
        }
      ]
    }
  ]
}
Attributionslack / app_home / slack_vibe_room / home_card

Microsoft Teams Adaptive Card

A clear Adaptive Card.

A standards-shaped Adaptive Card for a channel, chat, or meeting companion.

TogetherLens Vibe DuelChoose a scene togetherOpen Vibe Duel
Adaptive Cards OpenUrl reference

Show payload
{
  "type": "AdaptiveCard",
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.5",
  "body": [
    {
      "type": "TextBlock",
      "text": "TogetherLens Vibe Duel",
      "size": "Large",
      "weight": "Bolder"
    },
    {
      "type": "TextBlock",
      "text": "Choose one public scene with the group before anyone shares a portrait.",
      "wrap": true
    },
    {
      "type": "TextBlock",
      "text": "No roster, account, or portrait access.",
      "isSubtle": true,
      "wrap": true,
      "spacing": "Small"
    }
  ],
  "actions": [
    {
      "type": "Action.OpenUrl",
      "title": "Open Vibe Duel",
      "url": "https://togetherlens.app/duel/?round=17&utm_source=microsoft_teams&utm_medium=adaptive_card&utm_campaign=teams_vibe_room&utm_content=space_card"
    }
  ]
}
Attributionmicrosoft_teams / adaptive_card / teams_vibe_room / space_card

Telegram Mini App button

A fast Mini App button.

An inline web_app button that opens the same public duel inside Telegram.

TogetherLens Vibe DuelChoose a scene togetherOpen Vibe Duel
Telegram Mini Apps reference

Show payload
{
  "text": "TogetherLens Vibe Duel — choose one public scene with the group before anyone shares a portrait.",
  "reply_markup": {
    "inline_keyboard": [
      [
        {
          "text": "Open Vibe Duel",
          "web_app": {
            "url": "https://togetherlens.app/duel/?round=17&utm_source=telegram&utm_medium=mini_app&utm_campaign=telegram_vibe_room&utm_content=mini_app_handoff"
          }
        }
      ]
    ]
  }
}
Attributiontelegram / mini_app / telegram_vibe_room / mini_app_handoff

The free loop

A chat message
becomes a handoff.

  1. 01
    Copy one card

    Use the standards-shaped payload in an App Home, channel message, bot reply, or Mini App button.

  2. 02
    Let the group decide in context

    The button opens a bounded, browser-local duel. No people, spaces, meetings, or message history are read.

  3. 03
    Continue only when ready

    The browser handoff preserves the exact channel cohort before offering the explicit iOS and Android paths.