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

# What do you want to do?

> Find the task you need across the dashboard and the API — start typing, or browse by area.

export const CATEGORIES = [{
  id: "all",
  label: "All"
}, {
  id: "get-set-up",
  label: "Get set up"
}, {
  id: "verify",
  label: "Verify people & businesses"
}, {
  id: "onboard",
  label: "Onboard users (no-code)"
}, {
  id: "auth",
  label: "Authenticate returning users"
}, {
  id: "fraud",
  label: "Catch fraud"
}, {
  id: "api",
  label: "Build with the API"
}, {
  id: "team",
  label: "Team & account"
}, {
  id: "billing",
  label: "Billing & usage"
}, {
  id: "help",
  label: "Get help"
}];

export const TASKS = [{
  cat: "get-set-up",
  title: "Create a Dojah account",
  dest: "Getting started",
  href: "/dashboard-guide/getting-started/create-your-account"
}, {
  cat: "get-set-up",
  title: "Complete compliance (KYB)",
  dest: "Compliance",
  href: "/dashboard-guide/getting-started/compliance"
}, {
  cat: "get-set-up",
  title: "Go live (leave sandbox)",
  dest: "Getting started",
  href: "/dashboard-guide/getting-started/create-your-account"
}, {
  cat: "get-set-up",
  title: "Find my way around the dashboard",
  dest: "Getting around",
  href: "/dashboard-guide/getting-started/getting-around"
}, {
  cat: "get-set-up",
  title: "Fund my wallet",
  dest: "Fund your wallet",
  href: "/dashboard-guide/getting-started/fund-your-wallet"
}, {
  cat: "get-set-up",
  title: "Set up automatic top-ups",
  dest: "Fund your wallet",
  href: "/dashboard-guide/getting-started/fund-your-wallet"
}, {
  cat: "verify",
  title: "Verify a person's identity",
  dest: "Verify Individual",
  href: "/dashboard-guide/verify/individual"
}, {
  cat: "verify",
  title: "Run a BVN or NIN lookup",
  dest: "Verify Individual",
  href: "/dashboard-guide/verify/individual/government-data-lookup"
}, {
  cat: "verify",
  title: "Run an AML / sanctions / PEP screening",
  dest: "Verify Individual",
  href: "/dashboard-guide/verify/individual/aml-screening"
}, {
  cat: "verify",
  title: "Run a credit check",
  dest: "Verify Individual",
  href: "/api-reference/financial-credit/credit-score"
}, {
  cat: "verify",
  title: "Verify a business (KYB)",
  dest: "Verify Business",
  href: "/dashboard-guide/verify/business/business-data-lookup"
}, {
  cat: "verify",
  title: "See past verification results",
  dest: "Verify Individual",
  href: "/dashboard-guide/verify/individual"
}, {
  cat: "verify",
  title: "Understand a verification result",
  dest: "Verify Individual",
  href: "/dashboard-guide/verify/individual"
}, {
  cat: "verify",
  title: "Browse my verified customers",
  dest: "Customers",
  href: "/dashboard-guide/getting-started/customers"
}, {
  cat: "verify",
  title: "Find a specific customer",
  dest: "Customers",
  href: "/dashboard-guide/getting-started/customers"
}, {
  cat: "onboard",
  title: "Build an onboarding flow",
  dest: "EasyOnboard",
  href: "/dashboard-guide/workflows/easyonboard/workflows"
}, {
  cat: "onboard",
  title: "Customise my flow's look & feel",
  dest: "EasyOnboard",
  href: "/dashboard-guide/workflows/easyonboard/workflows"
}, {
  cat: "onboard",
  title: "Add fraud rules to a flow",
  dest: "EasyOnboard",
  href: "/dashboard-guide/workflows/easyonboard/workflows"
}, {
  cat: "onboard",
  title: "Integrate / share a published flow",
  dest: "EasyOnboard",
  href: "/dashboard-guide/workflows/easyonboard/workflows"
}, {
  cat: "onboard",
  title: "See who completed onboarding",
  dest: "EasyOnboard",
  href: "/dashboard-guide/workflows/easyonboard/verifications"
}, {
  cat: "auth",
  title: "Reuse my onboarding liveness for re-auth",
  dest: "EasyAuthentication",
  href: "/dashboard-guide/workflows/easyauthentication/overview"
}, {
  cat: "auth",
  title: "Create an authentication flow",
  dest: "EasyAuthentication",
  href: "/dashboard-guide/workflows/easyauthentication/authflows"
}, {
  cat: "auth",
  title: "Track authentication attempts",
  dest: "EasyAuthentication",
  href: "/dashboard-guide/workflows/easyauthentication/authentications"
}, {
  cat: "auth",
  title: "Review a customer's auth history",
  dest: "EasyAuthentication",
  href: "/dashboard-guide/workflows/easyauthentication/customers"
}, {
  cat: "fraud",
  title: "Monitor transactions for fraud",
  dest: "EasyDetect",
  href: "/dashboard-guide/fraud-and-risk/easydetect/overview"
}, {
  cat: "fraud",
  title: "Create a fraud rule",
  dest: "EasyDetect",
  href: "/dashboard-guide/fraud-and-risk/easydetect/flows"
}, {
  cat: "fraud",
  title: "Review fraud cases",
  dest: "EasyDetect",
  href: "/dashboard-guide/fraud-and-risk/easydetect/cases"
}, {
  cat: "fraud",
  title: "Investigate fraud events",
  dest: "EasyDetect",
  href: "/dashboard-guide/fraud-and-risk/easydetect/events"
}, {
  cat: "fraud",
  title: "Check a customer's risk profile",
  dest: "EasyDetect",
  href: "/dashboard-guide/fraud-and-risk/easydetect/profiles"
}, {
  cat: "fraud",
  title: "Use fraud signals (Dojah Intelligence)",
  dest: "Fraud Signals",
  href: "/dashboard-guide/getting-started/fraud-overview"
}, {
  cat: "fraud",
  title: "Create a custom block or allow list",
  dest: "Custom Lists",
  href: "/dashboard-guide/integrations/custom-lists"
}, {
  cat: "api",
  title: "Get my API keys",
  dest: "Developers",
  href: "/dashboard-guide/integrations/developers/api-tokens"
}, {
  cat: "api",
  title: "Authenticate API requests",
  dest: "Authentication",
  href: "/api-reference/get-started/authentication"
}, {
  cat: "api",
  title: "Make my first API call",
  dest: "API Reference",
  href: "/api-reference/get-started/introduction"
}, {
  cat: "api",
  title: "Configure an app",
  dest: "Developers",
  href: "/dashboard-guide/integrations/developers/configuration"
}, {
  cat: "api",
  title: "Set up webhooks",
  dest: "Developers",
  href: "/dashboard-guide/integrations/developers/webhooks"
}, {
  cat: "api",
  title: "Verify a webhook signature",
  dest: "Webhooks",
  href: "/api-reference/core-concepts/webhooks-signatures"
}, {
  cat: "api",
  title: "Test in the sandbox",
  dest: "Sandbox",
  href: "/api-reference/get-started/sandbox-test-data"
}, {
  cat: "api",
  title: "Add the React SDK",
  dest: "React SDK",
  href: "/api-reference/widget-sdks/react"
}, {
  cat: "api",
  title: "Launch the hosted eKYC widget",
  dest: "Hosted flows",
  href: "/dashboard-guide/workflows/easyonboard/workflows"
}, {
  cat: "api",
  title: "Check Dojah's API status",
  dest: "API Status",
  href: "/dashboard-guide/integrations/api-status"
}, {
  cat: "team",
  title: "Invite a team member",
  dest: "Settings → Team",
  href: "/dashboard-guide/account/settings/team"
}, {
  cat: "team",
  title: "Set roles & permissions",
  dest: "Settings → Team",
  href: "/dashboard-guide/account/settings/team"
}, {
  cat: "team",
  title: "Update my profile",
  dest: "Settings → Profile",
  href: "/dashboard-guide/account/settings/profile"
}, {
  cat: "team",
  title: "Manage email notifications",
  dest: "Settings → Notifications",
  href: "/dashboard-guide/account/settings/email-notifications"
}, {
  cat: "team",
  title: "View the audit log",
  dest: "Settings → Audit",
  href: "/dashboard-guide/account/settings/audit"
}, {
  cat: "team",
  title: "Export my data",
  dest: "Settings → Exports",
  href: "/dashboard-guide/account/settings/exports"
}, {
  cat: "team",
  title: "Set up SMS sender ID / messaging",
  dest: "Settings → Messaging",
  href: "/dashboard-guide/account/settings/messaging"
}, {
  cat: "billing",
  title: "View billing history & invoices",
  dest: "Billings",
  href: "/dashboard-guide/account/billings"
}, {
  cat: "billing",
  title: "Update payment settings",
  dest: "Billings",
  href: "/dashboard-guide/account/billings"
}, {
  cat: "billing",
  title: "Track my API usage",
  dest: "Usage",
  href: "/dashboard-guide/account/usage"
}, {
  cat: "billing",
  title: "See usage analytics",
  dest: "Usage",
  href: "/dashboard-guide/account/usage"
}, {
  cat: "help",
  title: "Contact support",
  dest: "Support",
  href: "/dashboard-guide/account/support"
}];

export const CAT_LABEL = Object.fromEntries(CATEGORIES.map(c => [c.id, c.label]));

export const ICONS = {
  "get-set-up": <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M13 2 3 14h7l-1 8 10-12h-7l1-8z" /></svg>,
  verify: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="3" y="4" width="18" height="16" rx="2" /><circle cx="9" cy="10" r="2" /><path d="M15 9h3M15 13h3M7 16h10" /></svg>,
  onboard: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M4 5h16M4 12h16M4 19h10" /></svg>,
  auth: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0 3 3L22 7l-3-3m-3.5 3.5L19 4" /></svg>,
  fraud: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" /></svg>,
  api: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="m8 6-6 6 6 6M16 6l6 6-6 6" /></svg>,
  team: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" /><circle cx="9" cy="7" r="4" /><path d="M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75" /></svg>,
  billing: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><rect x="2" y="5" width="20" height="14" rx="2" /><path d="M2 10h20" /></svg>,
  help: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" /></svg>
};

export const INITIAL = 12;

export const GetStartedHub = () => {
  const [query, setQuery] = useState("");
  const [filter, setFilter] = useState("all");
  const [expanded, setExpanded] = useState(false);
  const filtered = useMemo(() => {
    const term = query.trim().toLowerCase();
    return TASKS.filter(task => {
      const matchCat = filter === "all" || task.cat === filter;
      const hay = `${task.title} ${task.dest} ${CAT_LABEL[task.cat] || ""}`.toLowerCase();
      const matchQ = !term || hay.includes(term);
      return matchCat && matchQ;
    });
  }, [query, filter]);
  const showAll = expanded || filter !== "all" || query.trim().length > 0;
  const visible = showAll ? filtered : filtered.slice(0, INITIAL);
  const canShowMore = filter === "all" && !query.trim() && filtered.length > INITIAL && !expanded;
  return <div className="dj-gs">
      <style>{`
        .dj-gs{--card:#fff;--text:#0b1220;--soft:#4b5366;--muted:#7e879c;--line:#e2e7ef;--accent:#007fff;--accent-soft:rgba(0,127,255,.1);--radius:14px;font-family:"Mona Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--soft);line-height:1.5;width:100%}
        html.dark .dj-gs{--card:#11141f;--text:#eef1f6;--soft:#aab2c4;--muted:#7e879c;--line:#232838;--accent:#3d9bff;--accent-soft:rgba(61,155,255,.14)}
        .dj-gs,.dj-gs *{box-sizing:border-box}
        .dj-gs-wrap{max-width:1100px;margin:0 auto;padding:2.5rem 1.25rem 4rem;width:100%}
        .dj-gs-hero{text-align:center;max-width:720px;margin:0 auto 1.5rem}
        .dj-gs-hero h1{margin:0 0 .6rem;font-size:clamp(1.9rem,4vw,2.5rem);font-weight:700;letter-spacing:-.03em;color:var(--text);line-height:1.15}
        .dj-gs-hero p{margin:0 auto;color:var(--muted);font-size:1.05rem;max-width:540px}
        .dj-gs-search{display:flex;align-items:center;gap:.75rem;width:100%;max-width:640px;margin:1.5rem auto 0;padding:.15rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:0 1px 2px rgba(8,10,18,.05)}
        .dj-gs-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
        .dj-gs-search svg{width:18px;height:18px;color:var(--muted);flex:none}
        .dj-gs-search input{flex:1;border:0;outline:0;background:transparent;font:inherit;font-size:.98rem;color:var(--text);padding:14px 0;min-width:0}
        .dj-gs-search input::placeholder{color:var(--muted)}
        .dj-gs-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin:1.25rem auto 0;max-width:960px}
        .dj-gs-chip{appearance:none;border:1px solid var(--line);background:transparent;color:var(--text);border-radius:999px;padding:.45rem .9rem;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}
        .dj-gs-chip:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
        .dj-gs-chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff}
        .dj-gs-grid{display:grid !important;grid-template-columns:repeat(3,minmax(0,1fr)) !important;gap:1rem !important;margin-top:1.75rem;width:100%}
        .dj-gs-grid > *{max-width:none !important;width:auto !important;min-width:0}
        .dj-gs a.dj-gs-card{display:flex !important;flex-direction:column !important;gap:.55rem;text-decoration:none !important;border:1px solid var(--line) !important;border-radius:var(--radius);background:var(--card);padding:1.1rem 1.15rem 1.2rem;min-height:124px;width:100% !important;max-width:none !important;transition:border-color .18s,box-shadow .18s}
        .dj-gs a.dj-gs-card:hover{border-color:var(--accent) !important;box-shadow:0 8px 24px rgba(8,10,18,.08);text-decoration:none !important}
        html.dark .dj-gs-card:hover{box-shadow:0 8px 24px rgba(0,0,0,.35)}
        .dj-gs-card-top{display:flex;align-items:center;gap:.55rem}
        .dj-gs-ico{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);flex:none}
        .dj-gs-ico svg{width:14px;height:14px}
        .dj-gs-cat{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
        .dj-gs-title{font-size:1.02rem;font-weight:700;color:var(--text);letter-spacing:-.015em;line-height:1.3;margin:0;transition:color .18s}
        .dj-gs-card:hover .dj-gs-title{color:var(--accent)}
        .dj-gs-dest{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--muted);margin-top:auto;transition:color .18s}
        .dj-gs-card:hover .dj-gs-dest{color:var(--accent)}
        .dj-gs-arrow{width:12px;height:12px;opacity:0;transform:translate(-2px,2px);transition:opacity .18s,transform .18s;flex:none}
        .dj-gs-card:hover .dj-gs-arrow{opacity:1;transform:translate(0,0)}
        .dj-gs-empty{text-align:center;padding:2.5rem 1rem;color:var(--muted);grid-column:1/-1}
        .dj-gs-empty a{color:var(--accent);text-decoration:none;font-weight:600}
        .dj-gs-more-wrap{display:flex;justify-content:center;margin-top:1.75rem}
        .dj-gs-more{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:999px;padding:.7rem 1.4rem;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}
        .dj-gs-more:hover{border-color:var(--accent);color:var(--accent)}
        @media (max-width:960px){.dj-gs-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}}
        @media (max-width:600px){.dj-gs-grid{grid-template-columns:1fr !important}.dj-gs-wrap{padding-top:1.5rem}}
      `}</style>
      <div className="dj-gs-wrap">
        <div className="dj-gs-hero">
          <h1>What do you want to do?</h1>
          <p>Find the task you need across the dashboard and the API — start typing, or browse by area.</p>
          <label className="dj-gs-search">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><circle cx="11" cy="11" r="7" /><path d="m20 20-3.5-3.5" /></svg>
            <input type="search" value={query} onChange={e => {
    setQuery(e.target.value);
    setExpanded(!!e.target.value.trim());
  }} placeholder="Run an AML screening, Invite a teammate, set up webhooks..." autoComplete="off" />
          </label>
        </div>

        <div className="dj-gs-chips" role="tablist">
          {CATEGORIES.map(cat => <button key={cat.id} type="button" className={`dj-gs-chip${filter === cat.id ? " is-active" : ""}`} onClick={() => {
    setFilter(cat.id);
    setExpanded(cat.id !== "all");
  }}>
              {cat.label}
            </button>)}
        </div>

        <div className="dj-gs-grid">
          {visible.map(task => <a key={`${task.cat}-${task.title}`} className="dj-gs-card" href={task.href}>
              <span className="dj-gs-card-top">
                <span className="dj-gs-ico">{ICONS[task.cat]}</span>
                <span className="dj-gs-cat">{CAT_LABEL[task.cat]}</span>
              </span>
              <span className="dj-gs-title">{task.title}</span>
              <span className="dj-gs-dest">
                {task.dest}
                <svg className="dj-gs-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M7 17L17 7M8 7h9v9" /></svg>
              </span>
            </a>)}
          {filtered.length === 0 && <div className="dj-gs-empty">
              No tasks match that. Try a different word, or browse the{" "}
              <a href="/api-reference/get-started/introduction">API reference</a>.
            </div>}
        </div>

        {canShowMore && <div className="dj-gs-more-wrap">
            <button type="button" className="dj-gs-more" onClick={() => setExpanded(true)}>
              Show more
            </button>
          </div>}
      </div>
    </div>;
};

<GetStartedHub />
