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

# Reseller dashboard overview

> The three tabs of your reseller console, what each number means, and where every common task starts.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">YOUR CONSOLE</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Three tabs. <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>One place to run every client.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    Once you are certified, Overview, Clients and Revenue unlock under Master Dashboard. This page walks through all three: what each number means, where the recent clients panel and notifications come from, and which button to click for the tasks you do most. Clients and Revenue get the short version here, with a link to the full page for each.
  </p>
</div>

<div className="w-full py-10">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The sub-nav</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Two groups, one navigation.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The Reseller sub-navigation splits into two groups. One is gated on certification, the other never is.
    </p>
  </div>

  <Info>
    Everything below assumes you are already certified. If you have not applied yet, or you are mid-quiz, start with [Getting started](/resellers/getting-started) instead. The Master Dashboard tabs described here will still be locked until you pass.
  </Info>

  <div className="mxp-window">
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">Reseller sub-nav</span>
    </div>

    <div className="mxp-window-body" style={{minHeight:'auto'}}>
      <div className="xrs-mock-label">Master Dashboard</div>
      <div className="xrs-mock-row"><span>Overview</span></div>
      <div className="xrs-mock-row"><span>Clients</span><span className="xrs-mock-tag pro">12</span></div>
      <div className="xrs-mock-row"><span>Revenue</span></div>
      <div className="xrs-mock-label">Learning & client view</div>
      <div className="xrs-mock-row"><span>Certification Hub</span></div>
      <div className="xrs-mock-row"><span>Knowledge Center</span></div>
      <div className="xrs-mock-row"><span>Manage Reseller</span></div>
    </div>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    **Master Dashboard** holds Overview, Clients and Revenue. This is where you run the business side of reselling: invite clients, watch their status, track what you have earned. All three items are locked until you pass the certification quiz. The numeric badge on Clients is the same figure as the Total clients onboarded tile on Overview, just surfaced one level up.
  </p>

  <div style={{marginTop:'14px'}}>
    <div className="xrs-lock-ctl">Clients<span className="xrs-mock-tag pro" style={{marginLeft:8}}>12</span></div>
    <div className="xrs-lock-tip"><strong>Locked until certified</strong>Unlocks after you pass the certification quiz.</div>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'22px'}}>
    **Learning & client view** holds Certification Hub, Knowledge Center and Manage Reseller. None of these are ever locked, because you need them before you are certified and some of them stay relevant after. Certification Hub disappears from the sub-nav the moment you pass, since there is nothing left to study for. Knowledge Center loads these same docs inside the app at `/reseller/docs`, so you never have to leave Actionist to read them. Manage Reseller only appears if your own workspace happens to be managed by another reseller, which is independent of your own reseller status.
  </p>

  <div className="actionist-tight flex flex-col gap-2 mb-3" style={{marginTop:'28px'}}>
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Every item, at a glance.</h3>
  </div>

  | Item              | Group                  | Route                                           | Locked until certified |
  | ----------------- | ---------------------- | ----------------------------------------------- | ---------------------- |
  | Overview          | Master Dashboard       | `/reseller`                                     | Yes                    |
  | Clients           | Master Dashboard       | `/reseller/clients`                             | Yes                    |
  | Revenue           | Master Dashboard       | `/reseller/revenue`                             | Yes                    |
  | Certification Hub | Learning & client view | in-app, hidden once certified                   | No                     |
  | Knowledge Center  | Learning & client view | `/reseller/docs`                                | No                     |
  | Manage Reseller   | Learning & client view | `/reseller/managed-by`, shown only when managed | No                     |

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    The sub-nav header carries a badge and a one-line status once you have a profile. Certified resellers see "Certified reseller" at the top. The subtitle underneath depends on where you are in the programme:
  </p>

  <ul className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'10px', paddingLeft:'20px', lineHeight:1.75}}>
    <li>"Apply to begin" before you have submitted an application</li>
    <li>"Pending certification" from the moment you apply through the quiz</li>
    <li>"Certified · {'{{company}}'}" once you pass, when a company name is on file</li>
    <li>"Certified" once you pass, when no company name is on file</li>
    <li>"Managed workspace" when your own workspace is managed by another reseller</li>
  </ul>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    There is no footer on the sub-nav. If you are looking for a reseller ID here, see [What you will not find here](#what-you-will-not-find-here).
  </p>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Try it</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Switch between the three tabs.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      A compact version of each tab, so you can see how the three fit together before reading the full breakdown below.
    </p>
  </div>

  <div className="xrs-scope-shell exp-tool-shell xc-try">
    <Tabs>
      <Tab title="Overview" icon="trending-up">
        Your landing tab. A greeting, four KPI tiles, the Most recent clients panel, notifications, and the Help & resources panel. The only action button here is **Invite client**.

        | KPI tile                | Shows                                                     |
        | ----------------------- | --------------------------------------------------------- |
        | Total clients onboarded | The running count of clients linked to your reseller ID   |
        | Total revenue generated | Total Stripe payments collected across your client roster |
        | Your commission earned  | Your 25% cut of that revenue                              |
        | Client status           | Splits into Active and Inactive counts                    |

        Read the full breakdown in [The Overview tab in depth](#the-overview-tab-in-depth) below.
      </Tab>

      <Tab title="Clients" icon="users">
        Every workspace linked to your reseller ID, in one searchable, filterable table.

        Columns: Client, Plan, Joined, Status, Revenue contribution, Actions. Search needs at least three characters. Four filters: All, Active, Inactive, Historical. Twenty rows per page.

        Revenue contribution shows one of three things: "Pending" while the figure is still being computed, a formatted amount once it settles, or a dash when there is nothing to show at all.

        This page only summarizes the tab. For the full column-by-column reference, search behavior, and why **View as client** is sometimes disabled, see [Managing clients](/resellers/clients).
      </Tab>

      <Tab title="Revenue" icon="wallet">
        Where commission becomes something you can track and eventually withdraw.

        | KPI tile            | Shows                                                                      |
        | ------------------- | -------------------------------------------------------------------------- |
        | Lifetime commission | Everything you have earned since your first paying client                  |
        | Pending balance     | Commission accrued but not yet paid out                                    |
        | Paid to date        | Commission already settled to your wallet                                  |
        | Next payout         | The date your next monthly batch settles, when the backend has one to show |

        Ledger columns: Client, Description, Client payment, Your cut (25%), Status. Twenty-five rows per page. The Pending and Paid counts you see reflect only the rows currently loaded, not your full history, so do not read them as a lifetime total.

        Full detail, including wallet setup, lives at [Revenue and payouts](/resellers/revenue).
      </Tab>
    </Tabs>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Home base</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">The Overview tab in depth.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      This is the tab you land on. Everything on it is read-only except one button.
    </p>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    The greeting reads "Welcome back, {'{{name}}'}", and the line underneath changes with your state: "Loading your reseller dashboard…" while it fetches, "Your dashboard is ready, invite your first client to get started." with no clients yet, "{'{{totalCustomers}}'} client onboarded, none are active yet." once you have one client but no active ones, or "{'{{activeClients}}'} of {'{{totalCustomers}}'} clients are active." once at least one client is active.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    **Invite client** is the only action button on this tab. There is no referral link to copy here, on this tab or anywhere else in the console. See [Onboarding a client](/resellers/client-onboarding) for the invite flow itself.
  </p>

  <div className="actionist-tight flex flex-col gap-2 mb-3" style={{marginTop:'32px'}}>
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">The four KPI tiles.</h3>
  </div>

  | Tile                    | What it shows                                                 | Format                          |
  | ----------------------- | ------------------------------------------------------------- | ------------------------------- |
  | Total clients onboarded | Every client ever linked to your reseller ID                  | A plain count                   |
  | Total revenue generated | Total client payments across your whole roster                | Money like `&#36;25.00`         |
  | Your commission earned  | Your 25% cut of that same revenue                             | Money like `&#36;25.00`         |
  | Client status           | How many of your clients are currently active versus inactive | Two counts, Active and Inactive |

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    Money renders like `&#36;25.00`. A value the backend has not computed yet renders as a dash rather than a zero, so do not read a dash as "nothing earned." The revenue and commission tiles specifically can show a deferred tooltip while that computation is still pending, which reads either the backend's own reason or a generic "Revenue data not yet available" or "Commission data not yet available".
  </p>

  <div className="actionist-tight flex flex-col gap-2 mb-3" style={{marginTop:'32px'}}>
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Most recent clients.</h3>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    A panel titled "Most recent clients", capped at five rows, sorted by whoever linked to you most recently. A header link reads "View all →" and takes you to the full Clients tab. Each row carries a gradient avatar built from the client's initials, the client name, "joined {'{{date}}'}", a plan badge showing the raw plan name (or a dash when there is none), a status dot, and a **View** button.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    The avatars are deterministic, not random. Each client's id is hashed into one of eleven gradient pairings, so a given client always shows the same avatar color every time you see them, whether that is here, in the Clients table, or in the delegated session banner.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    With no clients yet, the panel collapses to a single line: the word **Invited** as a link that opens the invite modal directly, followed by " clients will appear here once they sign up."
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    The button here reads **View**, and it does the same thing as **View as client** on the full Clients tab: it starts a delegated session scoped to that client. The wording differs by tab, the behavior does not.
  </p>

  <div className="mxp-window">
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">Overview</span>
    </div>

    <div className="mxp-window-body" style={{minHeight:'auto'}}>
      <div className="xrs-mock-kpi-row">
        <div className="xrs-mock-kpi">
          <div className="xrs-mock-label">Total clients onboarded</div>
          <div className="xrs-mock-kpi-val">12</div>
        </div>

        <div className="xrs-mock-kpi">
          <div className="xrs-mock-label">Total revenue generated</div>
          <div className="xrs-mock-kpi-val">\$1,240.00</div>
        </div>

        <div className="xrs-mock-kpi">
          <div className="xrs-mock-label">Your commission earned</div>
          <div className="xrs-mock-kpi-val">\$310.00</div>
        </div>

        <div className="xrs-mock-kpi">
          <div className="xrs-mock-label">Client status</div>
          <div className="xrs-mock-kpi-val">9 / 3</div>
          <div className="xrs-mock-hint">Active / Inactive</div>
        </div>
      </div>

      <div className="xrs-mock-label">Most recent clients</div>

      <div className="xrs-mock-row">
        <div className="xrs-mock-avatar">HS</div>
        <div style={{flex:1}}>Halo Studio LLC<div className="xrs-mock-hint">joined Aug 14</div></div>
        <span className="xrs-mock-tag pro">Pro</span>

        <span className="xrs-mock-status-dot active" />
      </div>

      <div className="xrs-mock-row">
        <div className="xrs-mock-avatar">AI</div>
        <div style={{flex:1}}>Acme Inc.<div className="xrs-mock-hint">joined Aug 9</div></div>
        <span className="xrs-mock-tag starter">Starter</span>

        <span className="xrs-mock-status-dot active" />
      </div>

      <div className="xrs-mock-row">
        <div className="xrs-mock-avatar">NW</div>
        <div style={{flex:1}}>North Works<div className="xrs-mock-hint">joined Jul 30</div></div>
        <span className="xrs-mock-tag pro">Pro</span>

        <span className="xrs-mock-status-dot inactive" />
      </div>
    </div>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">When something needs attention</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Notifications and the attention rail.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Overview surfaces two severities of notification: info and warning. Most are routine. One type is worth understanding before it happens to you.
    </p>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    When several clients are stuck mid-setup at once, the dashboard collapses them into a single attention rail instead of one row per client. It reads "{'{{count}}'} clients need setup attention", with a subline of "Management access stays unavailable until setup finishes." and a footer count of "{'{{count}}'} affected". A toggle labeled "Review clients" (or "Hide clients" once expanded) reveals the individual rows, each tagged "Setup incomplete", plus a footer line "Management access is currently unavailable for these clients." and a link "Open client list".
  </p>

  <Note>
    "Management access unavailable" means you cannot open a **View as client** session for that client yet. It does not mean their subscription failed. Setup usually finishes on its own; there is nothing to configure from your side while it does.
  </Note>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    Two other notification types exist alongside the attention rail: one flags a sync issue on your own reseller profile, the other marks a plain empty-client-list state. Both are routine, single-item notices rather than the collapsed rail described above. In general, treat **info** severity as a status update and **warning** severity as something worth a second look, the attention rail being the clearest example of the latter.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Timing</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">A client you just invited may not show up right away.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      This is the single most common source of confusion on this page, so it is worth saying plainly.
    </p>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    The dashboard summary, the clients list, notifications and the revenue figures all cache for three minutes. If you invite a client, they sign up, and you flip straight back to a tab you already had open, they may genuinely not be there yet. This is not a bug and it is not a sign the invite failed.
  </p>

  <Note>
    If you need to confirm a specific signup right now rather than wait, search for the client by email on [Managing clients](/resellers/clients), which reads the same underlying data. A tab you have not visited in the last three minutes will fetch fresh on its own the next time you open it.
  </Note>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    Not everything on the Reseller side shares that three-minute window. The revenue ledger refreshes every 60 seconds, your payout profile every 30, and your certification status every 30 as well. The certification quiz itself is never cached, since a stale question set would be pointless mid-attempt.
  </p>

  <Tip>
    Sending an invite always shows its own success or error state right away. The three-minute delay only affects when that client then shows up in your counts and lists, not whether the invite itself went out.
  </Tip>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Do this first</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Starting a task from here.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Three things you will do from this dashboard more than anything else, and where each one actually starts.
    </p>
  </div>

  <Steps>
    <Step title="Invite a client" icon="user-plus">
      Click **Invite client** on the Overview tab, or the **Invited** link in the empty state if you have not onboarded anyone yet. Full flow, field details and error states are covered in [Onboarding a client](/resellers/client-onboarding).
    </Step>

    <Step title="Open a client workspace" icon="log-in">
      From either the Most recent clients panel or the full Clients table, click **View** or **View as client** to start a delegated session scoped to that client. See [View as client](/resellers/view-as-client) for the banner, the scopes, and how to leave cleanly.
    </Step>

    <Step title="Check your commission" icon="wallet">
      Switch to the Revenue tab for the four stat tiles and the ledger, or set up your payout wallet if you have not yet. Full detail at [Revenue and payouts](/resellers/revenue).
    </Step>
  </Steps>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    Everything past these three is either configuring a specific client's workspace, which starts inside a delegated session rather than here, or reading a topic in more depth than a dashboard page needs.
  </p>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">If you get stuck</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Getting help.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Overview carries its own "Help & resources" panel, separate from the Knowledge Center tab.
    </p>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
    The panel's links route internally, and one card is fixed regardless of what the API sends:
  </p>

  | Item                      | Goes to                      | Notes                                                |
  | ------------------------- | ---------------------------- | ---------------------------------------------------- |
  | Knowledge Center link     | `/reseller/docs`             | These same docs, loaded inside the app               |
  | Support link              | Support                      | For anything you cannot resolve yourself             |
  | Join the reseller Discord | External, opens in a new tab | Subtitled "Private channels for certified resellers" |

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    If either the metrics or the recent clients panel fail to load, you will see "Could not load your dashboard metrics." or "Could not load recent clients.", each with a **Retry** button next to it.
  </p>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'14px'}}>
    The **Knowledge Center** tab in the "Learning & client view" group loads these exact docs inside the app, at `/reseller/docs`. If you would rather read a page like this one without leaving Actionist, that is where to go.
  </p>

  <div className="exp-surface-grid" style={{marginTop:'22px'}}>
    <div className="exp-surface-tile">
      <strong>Support Tickets isn't available yet.</strong> A Support Tickets item exists in the underlying code but is deliberately left out of the sub-nav today. <Badge color="purple" size="sm">Coming soon</Badge>
    </div>
  </div>

  <div className="actionist-tight flex flex-col gap-2 mb-3" style={{marginTop:'32px'}}>
    <h3 className="text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Common questions about this page.</h3>
  </div>

  <AccordionGroup>
    <Accordion title="Why does a KPI tile show a dash instead of a number?" icon="circle-question-mark">
      A dash means the backend has not computed that value yet, not that it is zero. This shows up most on Total revenue generated and Your commission earned right after a client's first payment, before the figure has been calculated. Give it a little time and reload the tab.
    </Accordion>

    <Accordion title="Why is the Revenue or Commission tile showing a tooltip instead of a number?" icon="circle-question-mark">
      That is the deferred tooltip. It appears while the backend is still computing that figure, and reads either the backend's own reason or a generic "Revenue data not yet available" or "Commission data not yet available". It clears on its own once the computation finishes.
    </Accordion>

    <Accordion title="Why did I get bounced back to Overview while managing a client?" icon="circle-question-mark">
      A delegated session silently expires after one hour, or if it is torn down for any other reason. There is no error message, you are simply returned to `/reseller`. If that happens mid-task, reopen [View as client](/resellers/view-as-client) for that client and continue.
    </Accordion>

    <Accordion title="Why can't I click View as client on a certain row?" icon="circle-question-mark">
      Either that client's setup has not finished syncing yet, which is what the attention rail is telling you, or the backend has flagged the session as temporarily unavailable for another reason and shows a tooltip explaining why. Neither is something you fix from your side; check back once setup completes.
    </Accordion>

    <Accordion title="I have more than five clients. Where do I see the rest?" icon="circle-question-mark">
      Most recent clients on Overview only ever shows five rows. Click **View all →** in that panel's header, or switch to the Clients tab directly, to see your full roster with search and filters.
    </Accordion>
  </AccordionGroup>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Boundaries</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">What you will not find here.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      A short, honest list, so you stop looking for things that were never built.
    </p>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'0'}}>
    <div className="exp-surface-tile"><strong>No referral link.</strong> Invite client is the only way to bring a client in. There is no link to copy and share on your own.</div>
    <div className="exp-surface-tile"><strong>No per-client billing detail.</strong> The revenue ledger shows what a client paid and your cut of it. It never shows their card, invoice, or billing history. That is deliberate.</div>
    <div className="exp-surface-tile"><strong>No reseller ID footer.</strong> The sub-nav has no footer at all. If an older screenshot or document shows one, it is out of date.</div>
  </div>

  <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl" style={{marginTop:'18px'}}>
    None of these are gaps waiting to be filled in. The dashboard is scoped on purpose: enough to run the business side of reselling, nothing that reaches into a client's own billing or account.
  </p>
</div>

<hr className="xc-divider" />

<div className="w-full py-10">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto">
      <span className="actionist-eyebrow">Master Dashboard</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Your whole client roster, in three tabs.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Certify once, and Overview, Clients and Revenue stay open for as long as you resell.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="https://actionist.ai/partners/" target="_blank" rel="noreferrer">
          Signup as a Partner
        </a>
      </div>
    </div>
  </div>
</div>

<div className="w-full pt-2 pb-6">
  <p className="actionist-trust-line">
    Three tabs, one dashboard, updated on a three-minute cache.<br />
    No referral link · no per-client billing detail · no reseller ID footer.
  </p>
</div>

<div className="w-full pb-16 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Keep going</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Next steps.</h2>
  </div>

  <Columns cols={4}>
    <Card title="Managing clients" icon="users" href="/resellers/clients">
      Search, filters, statuses, and why View as client is sometimes unavailable.
    </Card>

    <Card title="Onboarding a client" icon="user-plus" href="/resellers/client-onboarding">
      The invite modal, the invitation lifecycle, and a handoff checklist.
    </Card>

    <Card title="Revenue and payouts" icon="wallet" href="/resellers/revenue">
      How commission accrues, what the ledger shows, and setting up a payout wallet.
    </Card>

    <Card title="View as client" icon="log-in" href="/resellers/view-as-client">
      Starting a delegated session, reading the banner, and leaving cleanly.
    </Card>
  </Columns>
</div>
