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

# AI Announcements

> Draft partner announcements from a URL or prompt in seconds, refine them conversationally, and receive proactive drafts from your recent content.

export const Headless = ({children, intro = true}) => {
  const [copied, setCopied] = useState(null);
  const copy = event => {
    const row = event.target.closest("li");
    if (!row) return;
    const text = row.textContent.trim();
    try {
      navigator.clipboard?.writeText(text);
    } catch {}
    setCopied(text);
    setTimeout(() => setCopied(null), 1600);
  };
  return <>
      {intro ? <p>
          Introw is <strong>headless</strong> by design: run everything here in plain language from Claude, ChatGPT,
          Slack, Teams, or your own CRM through Introw's <a href="/features/developer/mcp">MCP server</a>, with every
          action written straight back to your CRM source of truth. The portal is one surface, never the only one.
        </p> : null}

      {children ? <div className="not-prose" data-prompts="block">
          <div data-prompts="head">
            <span>{copied ? "Copied" : "Try it from your LLM"}</span>
          </div>
          <div data-prompts="rows" onClick={copy}>
            {children}
          </div>
          <a href="/headless/prompts" data-prompts="more">
            See all prompts
          </a>
        </div> : <Card title="See the headless motion" icon="wand-magic-sparkles" href="/headless">
          The agentic motion - lifecycle deep dives and a Claude Code skill library that run your partner program from
          Claude, ChatGPT, Slack, and your CRM.
        </Card>}
    </>;
};

export const Tour = ({children}) => {
  const [active, setActive] = useState(0);
  const wrappers = (Array.isArray(children) ? children : [children]).filter(c => c && c.props);
  const frames = wrappers.length === 1 && Array.isArray(wrappers[0].props.children) ? wrappers[0].props.children.filter(c => c && c.props) : [];
  if (frames.length < 2) {
    return <div className="not-prose" data-overview="tour">
        {children}
      </div>;
  }
  const thumb = (frame, index) => <button key={index} type="button" onClick={() => setActive(index)} aria-label={`Frame ${index + 1}`} data-active={index === active ? "true" : "false"} data-index={index + 1}>
      {frame}
    </button>;
  return <div className="not-prose" data-overview="tour">
      <div data-tour="hero">{frames[active] ?? frames[0]}</div>
      <div data-tour="strip">{frames.map((frame, index) => thumb(frame, index))}</div>
    </div>;
};

export const Impact = ({children}) => <div className="not-prose" data-overview="impact">
    {children}
  </div>;

export const Personas = ({children}) => <div className="not-prose" data-overview="personas">
    {children}
  </div>;

export const Pains = ({children}) => <div className="not-prose" data-overview="pains">
    {children}
  </div>;

> Partner communication slips because writing each update is a task no one has time for. AI Announcements drafts the update for you - from a link or a prompt - and even suggests the ones you should send.

## The problem it solves

Keeping partners informed loses to everything else on the list:

<Pains>
  | Without Introw                 | With Introw                  |
  | ------------------------------ | ---------------------------- |
  | Writing each update is a chore | AI drafts it from a link     |
  | The blank page stalls it       | Presets and suggested drafts |
  | You forget to tell partners    | It recommends what to send   |
  | Editing is fiddly              | Refine it conversationally   |
</Pains>

## Impact

Partners sell what they know about, and they only know what you told them. Removing the blank page is the difference between a program that communicates and one that means to.

<Impact>
  for your business

  * **AI, not admin**
    AI drafts from a URL or a prompt, and proactively recommends announcements from your recent content
  * **Cost to run**
    Partner marketing keeps partners informed without extra headcount, and always reviews before sending

  for your partners

  * **Self-serve**
    They hear about the release, the webinar and the promotion without chasing anyone for it
  * **Enabled**
    Drafts pull from your knowledge base, so what reaches them sounds like your program
  * **Efficient**
    Regular, short updates rather than one long recap when somebody finds the time

  [A day in the life of your partners](/days-in-the-life)
</Impact>

<Personas>
  * **Partner Marketing** - informed partners, no grind
  * **Partner Operations** - updates that actually go out
  * **Partners** - hearing about it in time
</Personas>

## See it work

<Tour>
  * ![An announcement being started from the AI generator rather than a blank editor.](https://assets.introw.io/docs/features/engagement/announcements/guides/generate-an-announcement-with-ai/steps/03.png)

    **Start with AI**

    The draft comes first, the editing second.

  * ![The AI announcement generator with presets for a webinar, a product update and a blog post, and a source to draft from.](https://assets.introw.io/docs/features/engagement/announcements/guides/generate-an-announcement-with-ai/steps/04.png)

    **Point it at a source**

    A webinar, a product update, or a blog post.

  * ![An AI-generated announcement draft being refined before it is published.](https://assets.introw.io/docs/features/engagement/announcements/guides/generate-an-announcement-with-ai/steps/08.png)

    **Refine it**

    Adjust the draft the way you would with a colleague.
</Tour>

## How it works

AI Announcements drafts [partner announcements](/features/engagement/announcements) for you. Start from a URL - a blog post, a release note, a webinar page - or from a prompt and a preset: product update, webinar, blog post. The AI writes the announcement, ready to refine. From there you edit it conversationally, the same way you'd tweak a draft with a colleague, then publish and target it like any other announcement.

It's also proactive: Introw watches your recent content and recommends announcements you should send, surfacing them as ready-to-review drafts on your home screen. You accept, tweak, or dismiss - the blank page is gone. Drafts pull from your [knowledge base](/features/ai/knowledge-base), so they sound like your program, and you always review before anything reaches partners.

Partner marketing used to write every update from scratch, and forget half of them. Now the AI drafts from your content and suggests what to send, so partners stay informed without the manual grind.

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  source["URL, prompt, or recent content"] --> draft["AI drafts the announcement"]
  draft --> refine["Refine and publish"]
```

## Run it from your AI assistant

<Headless>
  * Draft a partner announcement from this release-notes URL.
  * Write a webinar invite for next month's partner enablement session.
  * What should I announce to partners based on our recent updates?
</Headless>

## Going deeper

<CardGroup cols={2}>
  <Card title="How to" icon="screwdriver-wrench" href="./technical">
    How drafting and recommended announcements work.
  </Card>

  <Card title="Announcements" icon="bullhorn" href="/features/engagement/announcements">
    Publish, schedule, and target partner announcements.
  </Card>
</CardGroup>

**Works with**

<CardGroup cols={2}>
  <Card title="Announcements" icon="bell" href="/features/engagement/announcements">
    Publish and target the announcement.
  </Card>

  <Card title="Knowledge Base" icon="robot" href="/features/ai/knowledge-base">
    Drafts pull from your content.
  </Card>
</CardGroup>
