Skip to main content
Clever Ops

AI Startup Landing Page Template

Agent-ops console as a full site: streaming run-trace hero with replay controls, trace anatomy timeline, eval numbers band, security ledger, usage-slider pricing, FAQ, command-palette signup.

Preview & code

Loading AI Startup Landing Page Template preview

Installation

pnpm dlx shadcn@latest add @cleverui/template-ai-startup

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { TemplateAiStartup } from '@/components/blocks/template-ai-startup'
Exampletsx
import { TemplateAiStartup } from '@/components/blocks/template-ai-startup'

export default function TemplateAiStartupDemo() {
  return <TemplateAiStartup />
}

API reference

TemplateAiStartup accepts the following props.

PropTypeDefaultDescription
contentKestrelContentdefaultContentoverride any slice of the page, defaults to the Kestrel fixture above
classNamestring

Referenced types

Typestsx
export interface KestrelContent {
  brand: { name: string; tag: string }
  nav: { links: KestrelLink[]; cta: KestrelLink }
  /** statement, the streaming console, and the proof row */
  hero: {
    eyebrow: string
    titleLines: string[]
    lede: string
    primaryCta: KestrelLink
    secondaryCta: KestrelLink
    /** mono credibility line under the CTAs */
    note: string
    panel: {
      title: string
      costLabel: string
      statusStreaming: string
      statusPaused: string
      controls: { replay: string; pause: string; resume: string; chooseRun: string }
    }
    runs: RunSpec[]
    proof: { label: string; items: ProofStat[] }
  }
  /** 01, plan / tool / verify as three stages with real trace lines */
  loop: {
    mark: TraceMark
    tag: string
    title: string
    lede: string
    stages: LoopStage[]
  }
  /** 02, anatomy of one run: a labeled timeline with cost and latency */
  trace: {
    mark: TraceMark
    tag: string
    title: string
    lede: string
    points: { index: string; title: string; body: string }[]
    frame: { title: string; env: string }
    events: TraceEvent[]
    footnote: string
  }
  /** 03, the numbers band with its provenance */
  evals: {
    mark: TraceMark
    tag: string
    title: string
    stats: EvalStat[]
    footnote: string
  }
  /** 04, scoped keys, audit log, data residency, a sober ledger */
  security: {
    mark: TraceMark
    tag: string
    title: string
    lede: string
    rows: SecurityRow[]
    note: string
  }
  /** 05, the usage slider: price recomputes, per-task economics stated */
  pricing: {
    mark: TraceMark
    tag: string
    title: string
    lede: string
    slider: {
      unitLabel: string
      min: number
      max: number
      step: number
      defaultValue: number
      ticks: string[]
    }
    bands: PriceBand[]
    econ: {
      monthly: string
      effective: string
      nextTier: string
      freeTier: string
      finalTier: string
      rateFree: string
    }
    includedLabel: string
    included: string[]
    note: string
    cta: KestrelLink
    /** short line beside the calculator CTA */
    ctaNote: string
  }
  /** 06, straight answers, most-asked first */
  faq: {
    mark: TraceMark
    tag: string
    title: string
    lede: string
    items: FaqItem[]
  }
  /** the closer, email capture with command-palette flavour */
  signup: {
    mark: TraceMark
    tag: string
    title: string
    description: string
    palette: { title: string; command: string; copyLabel: string }
    form: { emailLabel: string; emailPlaceholder: string; buttonLabel: string }
    confirmationTitle: string
    confirmation: string
    note: string
  }
  footer: {
    tagline: string
    status: { label: string; detail: string; href: string }
    columns: { label: string; links: KestrelLink[] }[]
    contactLabel: string
    contact: { label: string; value: string; href: string }[]
    legal: KestrelLink[]
    meta: string[]
  }
}

export interface KestrelLink {
  label: string
  href: string
}

export interface RunSpec {
  id: string
  agent: string
  env: string
  budget: string
  /** status line shown once the last event lands */
  status: string
  /** plain-language transcript for screen readers */
  summary: string
  lines: RunLine[]
}

export interface ProofStat {
  /** mono value, e.g. '19ms' */
  value: string
  label: string
}

export interface TraceMark {
  /** mono timestamp, e.g. 'T+00:03.610' */
  t: string
  /** what happened at that moment of the recorded run */
  label: string
}

export interface LoopStage {
  /** mono tag, e.g. '01 · plan' */
  tag: string
  title: string
  body: string
  /** two real mono lines lifted from the recorded run */
  lines: [string, string]
}

export interface TraceEvent {
  /** mono timestamp label, e.g. 'T+00:00.640' */
  t: string
  tool: string
  summary: string
  /** mono latency for this step, e.g. '640ms' */
  latency: string
  /** mono cost for this step, e.g. '+$0.0041' */
  cost: string
  /** the single policy hold of the run, earns the accent */
  hold?: boolean
}

export interface EvalStat {
  value: string
  label: string
  /** mono provenance caption under the label */
  detail: string
  /** at most one across the band, earns the accent */
  accent?: boolean
}

export interface SecurityRow {
  term: string
  detail: string
  /** mono evidence line, a real-looking artefact of the control */
  evidence: string
}

export interface PriceBand {
  /** upper bound of the band, in tasks per month */
  upTo: number
  /** dollars per task inside this band */
  perTask: number
  /** range phrase, e.g. 'next 9,000' */
  label: string
}

export interface FaqItem {
  question: string
  answer: string[]
}

export interface RunLine {
  kind: 'plan' | 'call' | 'ok' | 'hold'
  /** mono content after the marker glyph */
  text: string
  /** right-rail mono latency, e.g. '640ms' */
  latency?: string
  /** dollars this event added to the run, drives the header cost ticker */
  cost?: number
}

Frequently asked questions

How do I install the AI Startup Landing Page Template component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/template-ai-startup`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does AI Startup Landing Page Template require?

AI Startup Landing Page Template uses motion on top of React and Tailwind CSS. You don't need to install it manually, the shadcn CLI resolves and installs npm dependencies automatically when you add the component.

Can I theme AI Startup Landing Page Template to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services