> ## Documentation Index
> Fetch the complete documentation index at: https://docs.patchline.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Artist intelligence profile

> Open any artist on your roster to a deep intelligence view — streaming, audience, similar artists, genres, top markets, engagement, credibility — plus an AI-generated bio. Refresh the profile any time from the UI.

export const MCPToolCard = ({name}) => {
  const t = MCP_TOOLS[name];
  if (!t) {
    return <div style={{
      padding: "12px",
      border: "1px dashed #f87171",
      borderRadius: "8px"
    }}>
        Unknown MCP tool: <code>{name}</code>
      </div>;
  }
  const badges = {
    Onboarding: "#00E6E2",
    Dispatch: "#818CF8",
    Catalog: "#22D3EE",
    Audience: "#2DD4BF",
    Artists: "#60A5FA",
    Roster: "#60A5FA",
    Releases: "#C084FC",
    Playlists: "#4ADE80",
    "Smart Links": "#FACC15",
    Storefront: "#F59E0B",
    "Music Data": "#FB923C",
    "AI Generation": "#F472B6",
    "Asset Upload": "#A78BFA",
    Projects: "#E879F9"
  };
  const color = badges[t.category] ?? "#A1A1AA";
  return <div style={{
    padding: "16px",
    borderRadius: "12px",
    border: "1px solid rgba(255,255,255,0.10)",
    background: "rgba(255,255,255,0.03)",
    marginBottom: "12px"
  }}>
      <div style={{
    display: "flex",
    justifyContent: "space-between",
    alignItems: "center",
    gap: "12px",
    marginBottom: "6px"
  }}>
        <code style={{
    fontFamily: "var(--font-family-mono)",
    fontSize: "15px",
    fontWeight: 600
  }}>
          {name}
        </code>
        <span style={{
    fontSize: "11px",
    fontWeight: 600,
    padding: "2px 10px",
    borderRadius: "999px",
    border: `1px solid ${color}40`,
    background: `${color}1A`,
    color: color
  }}>
          {t.category}
        </span>
      </div>
      {t.callFirst && <div style={{
    fontSize: "11px",
    color: "#00E6E2",
    fontWeight: 600,
    marginBottom: "6px"
  }}>
          ★ Call this FIRST
        </div>}
      <div style={{
    fontSize: "14px",
    lineHeight: 1.5,
    color: "inherit"
  }}>{t.summary}</div>
    </div>;
};

export const AriaPromptCard = ({prompt, surface = "web"}) => {
  const surfaces = {
    web: {
      href: "https://patchline.ai/dashboard",
      label: "Try in dashboard"
    },
    telegram: {
      href: "https://t.me/AriaMusicBizBot",
      label: "Try in Telegram"
    },
    claude: {
      href: "https://patchline.ai/claude",
      label: "Try in Claude"
    },
    mcp: {
      href: "https://patchline.ai/mcp",
      label: "Install MCP first"
    }
  };
  const s = surfaces[surface] ?? surfaces.web;
  return <div style={{
    display: "flex",
    justifyContent: "space-between",
    alignItems: "center",
    gap: "16px",
    padding: "12px 16px",
    marginBottom: "12px",
    borderRadius: "10px",
    border: "1px solid rgba(255,255,255,0.10)",
    background: "rgba(255,255,255,0.03)"
  }}>
      <code style={{
    fontFamily: "var(--font-family-mono)",
    fontSize: "14px",
    color: "inherit",
    flex: 1
  }}>
        "{prompt}"
      </code>
      <a href={s.href} target="_blank" rel="noopener noreferrer" style={{
    fontSize: "12px",
    fontWeight: 600,
    padding: "6px 12px",
    borderRadius: "999px",
    background: "linear-gradient(92deg, #00E6E2, #0068FF)",
    color: "#FFFFFF",
    textDecoration: "none",
    whiteSpace: "nowrap"
  }}>
        {s.label} →
      </a>
    </div>;
};

export const TierBadge = ({tier}) => {
  const styles = {
    free: {
      label: "Free",
      color: "#A1A1AA"
    },
    starter: {
      label: "Starter+",
      color: "#00E6E2"
    },
    pro: {
      label: "Pro+",
      color: "#0068FF"
    },
    scale: {
      label: "Scale+",
      color: "#7A5BFF"
    },
    enterprise: {
      label: "Enterprise",
      color: "#FF7A59"
    },
    all: {
      label: "All plans",
      color: "#22C55E"
    }
  };
  const t = styles[tier?.toLowerCase()] ?? styles.all;
  return <span style={{
    display: "inline-flex",
    alignItems: "center",
    gap: "4px",
    padding: "2px 10px",
    borderRadius: "999px",
    border: `1px solid ${t.color}40`,
    background: `${t.color}1A`,
    color: t.color,
    fontSize: "12px",
    fontWeight: 600,
    fontFamily: "var(--font-family-mono)",
    verticalAlign: "middle"
  }}>
      {t.label}
    </span>;
};

export const AICallout = ({page}) => {
  const slug = page ?? "";
  const mdUrl = `https://docs.patchline.ai${slug}.md`;
  return <div style={{
    marginTop: "32px",
    padding: "16px 20px",
    borderRadius: "12px",
    border: "1px solid rgba(0,230,226,0.25)",
    background: "linear-gradient(135deg, rgba(0,230,226,0.08), rgba(0,104,255,0.05))",
    color: "inherit",
    fontSize: "14px",
    lineHeight: 1.6
  }}>
      <strong style={{
    display: "block",
    marginBottom: "6px",
    color: "#00E6E2"
  }}>
        For AI agents reading this page
      </strong>
      The canonical machine-readable version of this page is at{" "}
      <a href={mdUrl}>
        <code>{mdUrl}</code>
      </a>
      . For product actions, connect to{" "}
      <code>www.patchline.ai/api/mcp/v1</code>
      {" "}and call MCP <code>tools/list</code> for the current tool schema.
      Rules for navigating these docs:{" "}
      <a href="https://docs.patchline.ai/AGENTS.md">
        <code>docs.patchline.ai/AGENTS.md</code>
      </a>
      .
    </div>;
};

Open any artist on your roster to a full intelligence view: streaming
numbers, social audience, genres, top markets, similar artists,
engagement signal, credibility — plus an AI-generated bio you can
reuse for press, smart links, and social.

<TierBadge tier="all" />   Free and Starter see the basic profile; Pro+ unlocks the deeper intelligence view (similar artists, momentum graphs, market breakdown).

## What's inside a profile

When you open any artist profile (yours or anyone you've added),
you land on a header with the artist's image, name, last-updated
stamp, and the connected platform row (Spotify, Instagram, TikTok,
YouTube, Apple, SoundCloud, Tidal — connect any you have, edit
inline).

You also get two bios side-by-side:

* **AI Generated Bio** — written by Aria from your intelligence data.
* **Online Bio** — pulled from public web sources.

The profile is organized into these tabs:

| Tab                 | What you see                                                                      |
| ------------------- | --------------------------------------------------------------------------------- |
| **Profile**         | Identity, social links, both bios.                                                |
| **Overview**        | Current state at a glance — monthly listeners, top markets, the headline numbers. |
| **Trends**          | Streaming and audience growth over time. Multi-platform.                          |
| **Similar Artists** | Sonic peers and lineage.                                                          |
| **Fanbase**         | Who's listening — geography, demographics.                                        |
| **Engagement**      | How fans are engaging across platforms.                                           |
| **Affinities**      | Genre, scene, and adjacent-artist affinities.                                     |
| **Credibility**     | Editorial coverage, playlist authority, press signal.                             |

## Where to find it

| Surface       | Path                                                                                 |
| ------------- | ------------------------------------------------------------------------------------ |
| Web dashboard | Sidebar → **Profiles** → click an artist row → `/dashboard/artists/[artistId]`       |
| Via Aria      | "Tell me about \[artist]"                                                            |
| Via MCP       | [`get_artist_intelligence`](/for-agents/mcp-tools-reference#get_artist_intelligence) |

## Quick start

<Steps>
  <Step title="Add an artist">
    [Add an artist to your profiles](/artists/roster) by searching for
    them. Intelligence enrichment kicks off in the background.
  </Step>

  <Step title="Wait for enrichment (~1 minute)">
    The basic identity appears immediately. Streaming + social audience
    populate within \~60 seconds. AI bio populates within \~3 minutes.
  </Step>

  <Step title="Open the profile">
    Sidebar → **Profiles** → click the row. All sections render in one
    page.
  </Step>

  <Step title="Query Aria for synthesis">
    <AriaPromptCard prompt="Summarize the last 30 days for [artist]." />

    <AriaPromptCard prompt="Compare [artist A] and [artist B] on growth." />
  </Step>
</Steps>

## The bio

The **AI Generated Bio** is written by Aria during background
enrichment when you add an artist, and cached on the profile. Reading
the bio later (in the UI, via Aria chat, or via the MCP `get_bio`
tool) returns the cached copy — no live LLM call per read.

<MCPToolCard name="get_bio" />

You can edit the bio directly in the profile UI. The Online Bio sits
side by side so you can compare what the public web says about the
artist with what Aria summarized from your intelligence data, and pick
the one that fits the moment.

## Refreshing the profile

Profiles don't auto-refresh on a clock. When you want fresh numbers
— streaming, social audience, top markets, growth trends — click
**Refresh intelligence** on the profile. Aria re-pulls the latest
across all connected sources and updates the profile in place.

Refresh from Aria:

<AriaPromptCard prompt="Refresh intelligence for [artist]." />

<AriaPromptCard prompt="Refresh intelligence for every artist in my roster." />

## Press kit

Patchline does not generate a downloadable PDF EPK. Instead, every
profile can power a **public press kit link** through the
[Launchpad](/launchpad/overview) — a shareable URL that surfaces your
bio, headline streaming numbers, recent releases, and any contact
capture you want from industry visitors. Send the link to press,
curators, or A\&R the same way you'd send a Linktree.

## Examples

### Quick artist lookup

<AriaPromptCard prompt="Who is Mira and what's her current streaming?" />

```text theme={null}
Aria: Mira — indie pop / dreampop artist, based in LA.
      Monthly listeners: 18,420 (+2.1% 30d trend, up from 17,800)
      Top track: "Late Bloom" (4,210 streams last 30d)
      Top markets: USA (62%), UK (8%), Australia (5%)
      Last release: 2026-04-12 ("Late Bloom" single)
      Similar artists: Tessa, Cleo Bell, Sunday Foundation

      Want the full intel page?
```

### Compare two artists

<AriaPromptCard prompt="Compare Tessa and Mira on growth this quarter." />

```text theme={null}
Aria: Q2 growth (Apr-Jun):

  Mira:
    Monthly listeners: 14,200 → 18,420 (+29.7%)
    IG followers:      8,100 → 9,400  (+16.0%)
    TikTok followers:  3,200 → 6,800  (+112.5%)

  Tessa:
    Monthly listeners: 9,800 → 12,100 (+23.5%)
    IG followers:      5,400 → 6,900  (+27.8%)
    TikTok followers:  1,800 → 3,100  (+72.2%)

  Mira leads on listeners + TikTok. Tessa leads on IG growth rate.
  Both trending up — TikTok-driven.
```

## Related pages

* [Roster](/artists/roster) — adding artists
* [Audience](/artists/audience) — deeper fan-graph view
* [Launchpad](/launchpad/overview) — public press kit links

## FAQ

<AccordionGroup>
  <Accordion title="Why is my profile incomplete?">
    Enrichment runs async. Most data populates within 1 minute; the
    AI bio takes \~3 minutes. If after 10 minutes the profile is still
    sparse, the artist may have limited provider coverage. Click
    **Refresh intelligence** to retry.
  </Accordion>

  <Accordion title="Can I edit the AI bio?">
    Yes. Edit it directly in the profile UI. Edits persist.
  </Accordion>

  <Accordion title="How current are the streaming numbers?">
    Data providers refresh on their own cadence. When you click
    **Refresh intelligence** Aria pulls the latest available numbers
    across providers.
  </Accordion>

  <Accordion title="Do profiles auto-refresh?">
    No. You refresh on demand — from the profile UI or by asking Aria.
    This keeps you in control of when credits get spent on a refresh.
  </Accordion>
</AccordionGroup>

<AICallout page="/artists/intelligence-profile" />
