> ## 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.

# Team Management

> Give every internal user and partner contact exactly the access they need - role-based permissions for your team, scoped access to assigned partners, and custom partner team roles.

export const Headless = ({prompts = []}) => {
  const PromptRow = ({prompt}) => {
    const [copied, setCopied] = useState(false);
    const copy = () => {
      try {
        navigator.clipboard?.writeText(prompt);
      } catch {}
      setCopied(true);
      setTimeout(() => setCopied(false), 1600);
    };
    return <div className="group flex items-center justify-between gap-3 px-4 py-3 transition-colors hover:bg-[#FD90FF]/[0.06]">
        <span className="text-sm leading-relaxed text-zinc-700 dark:text-zinc-200">{prompt}</span>
        <button type="button" onClick={copy} aria-label={copied ? "Copied to clipboard" : "Copy prompt"} className={`shrink-0 rounded-md p-1.5 transition-all hover:bg-[#FD90FF]/10 focus:opacity-100 focus:outline-none ${copied ? "text-[#FD90FF] opacity-100" : "text-zinc-400 opacity-0 group-hover:opacity-100 dark:text-zinc-500"}`}>
          {copied ? <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M20 6L9 17l-5-5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg> : <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <rect x="9" y="9" width="11" height="11" rx="2" stroke="currentColor" strokeWidth="2" />
              <path d="M5 15V5a2 2 0 0 1 2-2h10" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>}
        </button>
      </div>;
  };
  return <>
      <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>

      {prompts.length > 0 ? <div className="not-prose my-6 overflow-hidden rounded-2xl border border-zinc-200/80 bg-white shadow-sm dark:border-white/10 dark:bg-white/[0.02]">
          <div className="flex items-center gap-2 border-b border-zinc-200/80 bg-gradient-to-r from-[#FD90FF]/10 via-[#FD90FF]/5 to-transparent px-4 py-2.5 dark:border-white/10">
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4 text-[#FD90FF]" aria-hidden="true">
              <path d="M12 2.5l2 5.5 5.5 2-5.5 2-2 5.5-2-5.5L4.5 10l5.5-2 2-5.5z" fill="currentColor" />
              <path d="M18.5 14l1 2.6 2.6 1-2.6 1-1 2.6-1-2.6-2.6-1 2.6-1 1-2.6z" fill="currentColor" opacity="0.55" />
            </svg>
            <span className="text-xs font-semibold uppercase tracking-wider text-zinc-500 dark:text-zinc-400">
              Try it from your LLM
            </span>
          </div>

          <div className="flex flex-col divide-y divide-zinc-100 dark:divide-white/[0.06]">
            {prompts.map(prompt => <PromptRow key={prompt} prompt={prompt} />)}
          </div>

          <a href="/headless" className="flex items-center justify-between gap-2 border-t border-zinc-200/80 px-4 py-2.5 text-sm font-medium text-zinc-600 no-underline transition-colors hover:text-[#FD90FF] dark:border-white/10 dark:text-zinc-300">
            <span>See the full headless playbook</span>
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
          </a>
        </div> : <Card title="See the headless motion" icon="wand-magic-sparkles" href="/headless">
          The agentic playbook - lifecycle deep dives and a Claude Code skill library that run your partner program
          from Claude, ChatGPT, Slack, and your CRM.
        </Card>}
    </>;
};

> As a program grows, so does the list of people who touch it. Team management lets you grant precise access to your internal team and define who manages each partner, all from clear permission categories you control without engineering.

## What it does

Team management is where you invite your internal team and assign each person a role. Roles are built
from readable permission categories, partners, commissions, courses, integrations, SSO, and more, so
you grant exactly what a person needs. You can give a user full admin access, a custom permission set,
or limit them to only the partners they are assigned.

On the partner side, you define partner team roles and assign the people responsible for each partner.
That keeps ownership clear, and because roles can map to your CRM, the right relationships stay
reflected in the system of record.

## The problem it solves

Loose access is a liability, and rigid access is a bottleneck:

* **Everyone has more access than they should** → Roles grant only the permission categories a person needs.
* **Reps see partners that are not theirs** → Users can be limited to their assigned partners.
* **Adding a teammate means an IT ticket** → Partner ops invites and assigns roles directly, no engineering.
* **Partner ownership is unclear** → Partner team roles make who-manages-whom explicit and CRM-synced.

## From problem to solution

Create roles once from the permission categories, invite your team into them, and assign partner team
roles to keep ownership clear. Access stays tight and current, and your team manages all of it without
waiting on engineering.

## Use cases

<CardGroup cols={2}>
  <Card title="Onboard internal users" icon="circle-check">
    Invite teammates into the right role.
  </Card>

  <Card title="Scope access" icon="circle-check">
    Limit users to their own partners.
  </Card>

  <Card title="Right-size permissions" icon="circle-check">
    Grant only the categories a role needs.
  </Card>

  <Card title="Assign partner ownership" icon="circle-check">
    Put the right people on each partner.
  </Card>
</CardGroup>

## Impact

* **Low total cost of ownership** - Your team configures roles and access with no code.
* **CRM-native** - Partner team roles can map to your CRM, keeping ownership in sync.

## Who it's for

<CardGroup cols={2}>
  <Card title="Partner Operations" icon="user">
    Configures roles and partner ownership.
  </Card>

  <Card title="CRM Administrator" icon="user">
    Controls access and scoped permissions.
  </Card>
</CardGroup>

## Works with

{/* CONNECTS:START - generated content goes here */}

<CardGroup cols={2}>
  <Card title="Partner Team" icon="users" href="/features/partners/team">
    Partner team roles defined here get assigned to partners.
  </Card>

  <Card title="Single Sign-On" icon="shield-halved" href="/features/access/sso">
    SSO authenticates; roles authorize.
  </Card>

  <Card title="Partner Management" icon="users" href="/features/partners/partner-management">
    Limit users to the partners they manage.
  </Card>
</CardGroup>

## Headless

<Headless
  prompts={[
"Reassign Acme's partner manager to another team member.",
]}
/>

## Going deeper

<CardGroup cols={2}>
  <Card title="How to" icon="screwdriver-wrench" href="./technical">
    Setup, configuration, and all how-to guides.
  </Card>

  <Card title="API reference" icon="code" href="/general/introduction">
    Integration surface and code.
  </Card>
</CardGroup>
