ConversionAI

Decide which module to render in each slot on a page, so the placement earns the most engagement.

You describe the slots on the page. Miso returns what to put in each one, already filled with content, and learns from the impressions and clicks you report back.

How it works

Miso runs a bandit over the module families available for a slot. Each family has UI styles (a carousel, a thumbnail list). Miso samples the combination likely to earn the most value, hydrates it with real content, and returns it.

The payload inside each slot is the same shape the matching API already returns, so your existing renderers work unchanged. Only the outer wrapper is new.

Reporting back

Echo miso_id, slot_id, type and variant on your impression and click events. That is what attributes the outcome to the right choice and lets the model improve.

Availability. ConversionAI is enabled per app. Contact your Miso representative.


Examples

Example 1 — Two slots on an article page

POST /v1/ask/conversion
{
  "anonymous_id": "visitor-8f3a1c",
  "product_id": "art-20260612-rates",
  "slots": [
    { "slot_id": "slot_top" },
    { "slot_id": "slot_inline" }
  ]
}
{
  "message": "success",
  "data": {
    "miso_id": "550e8400-e29b-41d4-a716-446655440000",
    "slots": [
      {
        "slot_id": "slot_top",
        "type": "recirculation",
        "variant": "carousel",
        "data": { "recommendations": [] }
      },
      {
        "slot_id": "slot_inline",
        "type": "related_questions",
        "variant": "default",
        "data": { "related_questions": ["…", "…"] }
      }
    ]
  }
}

Render each slot by its type. Keep miso_id, slot_id, type and variant so you can attach them to the events you send back.

Example 2 — Scope what can be recommended

fq restricts the eligible articles and fl shapes the fields returned:

POST /v1/ask/conversion
{
  "anonymous_id": "visitor-8f3a1c",
  "product_id": "art-20260612-rates",
  "slots": [{ "slot_id": "slot_top" }],
  "fq": "section:\"markets\"",
  "fl": ["title", "url", "cover_image"]
}

Example 3 — Multi-brand pages

Pass the brand so the model learns per site:

POST /v1/ask/conversion
{
  "anonymous_id": "visitor-8f3a1c",
  "product_id": "art-20260612-rates",
  "slots": [{ "slot_id": "slot_top" }],
  "metadata": { "site": "markets" }
}

Example 4 — Force a module while designing

Set both type and variant on a slot and Miso serves exactly that, skipping the decision. Use it to preview a layout — not in production, because a forced slot teaches the model nothing:

POST /v1/ask/conversion
{
  "product_id": "art-20260612-rates",
  "slots": [
    {
      "slot_id": "slot_top",
      "type": "recirculation",
      "variant": "thumbnail_list"
    }
  ]
}
ConversionAI Operations