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

# Product Updates

> New updates and improvements for KumoRFM and the Fine-Tuning Platform

<Tabs>
  <Tab title="Fine-Tuning Platform">
    ## v2.21 (May 2026) LTS (Long Term Support version)

    Kumo version 2.21 is a Long-Term Support (LTS) release and will remain supported until the next major release, Kumo 3.0. This version includes numerous performance, security, and stability improvements to provide a faster, safer, and more reliable experience.

    ## v2.20 (02/21/2026)

    **Overview**

    <Expandable title="Overview">
      * **Version 2.20**: focuses on clearer, more actionable error surfacing across ingestion, training, and workflow execution—plus usability improvements across Jobs, Evaluation, and authentication pages.
    </Expandable>

    **Functionality**

    <Expandable title="Functionality">
      * **Target-table weighting in Training Table generation**: Configure row weighting directly via the training table generation plan (weight\_col), producing a canonical WEIGHT column without requiring a custom weighted train table.
      * **Holdout set downloads (UI)**: Holdout value set download is available again from the Evaluation experience, including baseline-enabled flows.
    </Expandable>

    **Optimization**

    <Expandable title="Optimization">
      * **Databricks/Serverless reliability for JSON serialization**: Fixed JSON serialization for nested pydantic dataclasses (e.g., PlanMetrics) to prevent “not JSON serializable” failures in distributed execution environments.
    </Expandable>

    **Enhancement**

    <Expandable title="Enhancement">
      **# Ingestion & Connectors**

      * **Spark schema errors surfaced during ingestion/training**: Schema/type mismatches now show actionable Spark errors (rather than being masked by generic “empty table” outcomes), including proper propagation from remote execution.
      * **Better error handling across connectors and backends**: Improved summarization for Spark errors and standardized connector/backend error types to produce clearer user-facing messages.

      **# Training & Evaluation**

      * **Training warnings now propagate on batch-size reduction**: When training auto-reduces batch size due to OOM, warnings are now surfaced to users even if the job succeeds.
      * **Simplified training failure messages**: Training-related errors are now shorter, clearer, and more actionable across key training paths.
      * **Retry + timeout failures now show the root cause**: When an activity retries and then times out, the original failure is surfaced (not just a generic timeout).
      * **Correct CANCELLED status propagation**: Parent jobs now show CANCELLED (not FAILED) when a decoupled child workflow is canceled.
      * **PublicException migration for consistent workflow error handling**: Remaining training and prediction workflows now use PublicException patterns for more consistent user-facing errors and retry semantics.
      * **Improved fallback workflow failure messages**: When a workflow fails without a PublicException, the UI now shows cleaner, more helpful fallback messaging (less internal jargon, better readability).
      * **PQuery error propagation improvements**: Validation and backend failures propagate more cleanly so users receive more actionable PQuery failure context. \[#25175]

      **# UI/UX polish**

      * **Jobs table + filter experience refresh**: Reordered job list tables, refined filters, updated tooltips/status pills/hover styling, improved tags rendering, and made graph snapshot interactions more discoverable.
      * **Safari fatal error fixed**: Safari no longer hits a blocking “Something went wrong” error; the UI loads (with the expected “Safari not officially supported” banner).
      * **Evaluation table stability on holdout download**: Clicking the holdout download icon no longer changes the selected Evaluation dropdown option.
      * **Histogram label typo fix**: Corrected “Occurrances” → “Occurrences” in the histogram chart label.
      * **Auth page branding update**: Updated the logo and favicon on the auth page to match current branding.
    </Expandable>

    ## v2.19 (02/02/2026)

    **Overview**

    <Expandable title="Overview">
      * **Version 2.19**: delivers reliability and UX improvements across Snowflake execution, model planning/validation, job diagnostics, and data quality visibility—making failures easier to understand and data issues harder to miss.
    </Expandable>

    **Functionality**

    <Expandable title="Functionality">
      * **Snowflake app-schema execution for training table generation**: Snowflake operations now prefer SNOWFLAKE\_APP\_SCHEMA over customer-controlled schemas, avoiding permission-related parquet read failures during training table generation.
    </Expandable>

    **Optimization**

    <Expandable title="Optimization">
      * **More stable sample-row polling**: Improved sample row fetch logic to avoid dependency-related re-fetch loops and reduce redundant polling calls, improving stability when editing tables/columns.
    </Expandable>

    **Enhancement**

    <Expandable title="Enhancement">
      **# Training & Evaluation**

      * **Full timestamp visibility in Train Table stats**: Training Data Statistics now shows complete timestamp values (with consistent formatting), improving clarity around time windows and boundaries.
      * **Baseline metrics no longer render empty on revisit**: Evaluation baseline metrics now display reliably across navigations and when using Macro avg.
      * **Correct multiclass F1 labeling**: Removed the misleading “@0.5” threshold label from multiclass F1 metric display.
      * **Clearer GPU OOM failures**: Training and prediction jobs now surface user-friendly GPU out-of-memory messages instead of raw CUDA/FAISS errors, with actionable guidance.
      * **Better ModelPlan / model planner validation**: Invalid model plan YAML and hop syntax now produce clearer, more actionable errors across UI + SDK (fail fast, more specific messages).
      * **Consolidated validation warnings**: Validation messages are cleaner, better titled, and de-duplicated/aggregated (reducing noisy repeated warnings).
      * **Reliable failure surfacing for Train Table + BP Table jobs**: get\_errors now checks multiple sources (DB + files + failure\_info/log detail) so errors show even when S3 validation files aren’t written (early exceptions/cancellations).

      **# Batch Prediction**

      * **SDK run prediction + custom pred table failure handling in UI**: Batch Prediction details now correctly shows failure state and error messaging (instead of getting stuck loading) when a custom prediction table is used.

      **# UI/UX**

      * **Job warnings & errors UX refresh**: Warnings are surfaced consistently across Training/Prediction job pages (de-duplicated and aggregated from multiple sources), with improved error visual treatment.
      * **Jobs page spacing alignment**: Updated Jobs pages spacing to match new design standards for better readability and consistency.
      * **Typography design tokens adoption**: Jobs-related pages now use standardized typography tokens for consistent text hierarchy and styling.
      * **Table sample tooltip usability**: Table sample tooltips now have a max height with scrolling so long values don’t obscure the UI.
      * **No stale table details after deletion**: Deleting a table no longer leaves the UI showing persisted details for a non-existent table.
      * **Clearer Tags helper text**: Tags helper text now clarifies that multiple tags can be added by pressing Enter (plus a related Prediction Details column fix).
      * **Data quality warnings made obvious**: Column Statistics and Graph Link Health now highlight high missing/invalid percentages (≥10%), add explanatory tooltips, and improve clarity around dropped rows and linkage issues.
    </Expandable>

    ## v2.18 (01/09/2026)

    **Overview**

    <Expandable title="Overview">
      * **Version 2.18**: delivers reliability upgrades across SPCS job execution and storage, plus UI improvements that make query editing, timestamps, and explanation visualizations more consistent and trustworthy.
    </Expandable>

    **Functionality**

    <Expandable title="Functionality">
      * **Holdout Set Downloads**: To streamline the web interface, the option to download holdout sets has been removed from the UI. Users can continue to access and download these datasets via the SDK (see documentation)
    </Expandable>

    **Optimization**

    <Expandable title="Optimization">
      * **SPCS job status reliability**: Jobs that have not started provisioning yet are now treated as pending instead of incorrectly failing during early polling.
      * **SPCS retry robustness (vol3 cleanup)**: Added job-specific folder isolation for graphengine block storage and cleanup on retries to prevent corrupted/stale data from breaking re-runs.
    </Expandable>

    **Enhancement**

    <Expandable title="Enhancement">
      **# Training & Evaluation**

      * **Holdout location now displays correctly with refit interval enabled**: Fixed holdout path handling so Evaluation pages reliably show the holdout location (instead of failing due to an incorrect path).

      **# UI**

      * **New UI for Models and Prediction details pages**: (clearer, more consistent timestamps and explanations visibility).
      * **Consistent timestamp formatting**: Standardized timestamp display across the UI, with full UTC timestamps available on hover tooltips.
      * **PQ Editor input stability**: Fixed broken typing/edit/delete behavior in the Predictive Query editor to behave like a normal text editor.
      * **Query Editor reliability + debug console improvements**: Prevented placeholder text from being inserted via Cmd+Z and improved debug console metadata visibility (e.g., version/customer id when available).
      * **Correct subgraph explanation rendering**: Local subgraph explanations now respect the model’s hop limit so visualizations don’t show “extra hop” nodes.
    </Expandable>
  </Tab>

  <Tab title="KumoRFM">
    <style>
      {`
            .kumorfm-release {
              --kumo-pink: #E8194B;
              --kumo-pink-soft: #FBE9EE;
              --ink: #0E0E12;
              --ink-muted: #52526A;
              --ink-faint: #9090A8;
              --surface: #FAFAFA;
              --border: #E4E4EE;
              --new: #0D7A4E;
              --new-bg: #E8F7F1;
              --improved: #1A56C9;
              --improved-bg: #EAF0FD;
              --note: #7A4E0D;
              --note-bg: #FDF4E8;
              max-width: 820px;
              margin: 0 auto;
              padding: 40px 0 64px;
              color: var(--ink);
              font-size: 15px;
              line-height: 1.6;
            }

            .kumorfm-release * {
              box-sizing: border-box;
            }

            .kumorfm-release .header {
              display: flex;
              align-items: flex-start;
              justify-content: space-between;
              gap: 24px;
              border-bottom: 2px solid var(--ink);
              padding-bottom: 28px;
              margin-bottom: 36px;
            }

            .kumorfm-release .logo-row {
              display: flex;
              align-items: center;
              gap: 12px;
              margin-bottom: 10px;
            }

            .kumorfm-release .kumo-mark {
              background: var(--kumo-pink);
              color: white;
              font-family: "DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
              font-size: 13px;
              font-weight: 500;
              padding: 4px 10px;
              border-radius: 4px;
              letter-spacing: 0.05em;
            }

            .kumorfm-release .release-label,
            .kumorfm-release .section-title,
            .kumorfm-release .tag,
            .kumorfm-release .date-label,
            .kumorfm-release .version-badge,
            .kumorfm-release .stat-num,
            .kumorfm-release .connector-table th,
            .kumorfm-release .status-pill,
            .kumorfm-release .code-block pre {
              font-family: "DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
            }

            .kumorfm-release .release-label {
              font-size: 11px;
              color: var(--ink-faint);
              letter-spacing: 0.1em;
              text-transform: uppercase;
            }

            .kumorfm-release .header-title {
              font-size: 30px;
              font-weight: 600;
              letter-spacing: -0.02em;
              line-height: 1.2;
              margin: 0;
            }

            .kumorfm-release .header-subtitle {
              font-size: 14px;
              color: var(--ink-muted);
              font-weight: 300;
              margin: 0;
            }

            .kumorfm-release .header-meta {
              text-align: right;
              flex-shrink: 0;
            }

            .kumorfm-release .version-badge {
              display: inline-block;
              background: var(--ink);
              color: white;
              font-size: 18px;
              font-weight: 500;
              padding: 8px 16px;
              border-radius: 6px;
              margin-bottom: 8px;
            }

            .kumorfm-release .date-label {
              display: block;
              font-size: 13px;
              color: var(--ink-faint);
            }

            .kumorfm-release .tldr {
              background: var(--ink);
              color: white;
              border-radius: 10px;
              padding: 24px 28px;
              margin-bottom: 40px;
            }

            .kumorfm-release .tldr-label {
              font-family: "DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
              font-size: 10px;
              letter-spacing: 0.15em;
              text-transform: uppercase;
              color: var(--kumo-pink);
              margin-bottom: 14px;
            }

            .kumorfm-release .tldr-title {
              font-size: 17px;
              font-weight: 500;
              margin-bottom: 16px;
              line-height: 1.4;
            }

            .kumorfm-release .tldr ul {
              list-style: none;
              display: flex;
              flex-direction: column;
              gap: 8px;
              padding: 0;
              margin: 0;
            }

            .kumorfm-release .tldr li {
              display: flex;
              align-items: flex-start;
              gap: 10px;
              font-size: 14px;
              line-height: 1.5;
              color: rgba(255, 255, 255, 0.87);
            }

            .kumorfm-release .tldr li::before {
              content: ">";
              color: var(--kumo-pink);
              flex-shrink: 0;
              margin-top: 1px;
              font-family: "DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
            }

            .kumorfm-release .section {
              margin-bottom: 44px;
            }

            .kumorfm-release .section-header {
              display: flex;
              align-items: center;
              gap: 10px;
              margin-bottom: 20px;
            }

            .kumorfm-release .section-dot {
              width: 8px;
              height: 8px;
              border-radius: 50%;
              flex-shrink: 0;
            }

            .kumorfm-release .section-dot.new { background: var(--new); }
            .kumorfm-release .section-dot.improved { background: var(--improved); }
            .kumorfm-release .section-dot.note { background: var(--kumo-pink); }

            .kumorfm-release .section-title {
              font-size: 11px;
              font-weight: 600;
              letter-spacing: 0.12em;
              text-transform: uppercase;
              color: var(--ink-muted);
            }

            .kumorfm-release .card {
              border: 1px solid var(--border);
              border-radius: 8px;
              padding: 20px 22px;
              margin-bottom: 12px;
              background: white;
            }

            .kumorfm-release .card-head {
              display: flex;
              align-items: flex-start;
              gap: 12px;
              margin-bottom: 8px;
            }

            .kumorfm-release .tag {
              font-size: 10px;
              font-weight: 500;
              letter-spacing: 0.08em;
              text-transform: uppercase;
              padding: 3px 8px;
              border-radius: 4px;
              flex-shrink: 0;
              margin-top: 2px;
            }

            .kumorfm-release .tag.new { background: var(--new-bg); color: var(--new); }
            .kumorfm-release .tag.improved { background: var(--improved-bg); color: var(--improved); }
            .kumorfm-release .tag.note { background: var(--kumo-pink-soft); color: var(--kumo-pink); }

            .kumorfm-release .card-title {
              font-size: 15px;
              font-weight: 600;
              line-height: 1.3;
            }

            .kumorfm-release .card-body {
              font-size: 14px;
              color: var(--ink-muted);
              line-height: 1.6;
            }

            .kumorfm-release .card-body strong {
              color: var(--ink);
              font-weight: 500;
            }

            .kumorfm-release .card-body ul {
              margin-top: 10px;
              padding-left: 18px;
              display: flex;
              flex-direction: column;
              gap: 6px;
            }

            .kumorfm-release .stat-row {
              display: flex;
              gap: 12px;
              flex-wrap: wrap;
              margin-top: 14px;
            }

            .kumorfm-release .stat {
              background: var(--surface);
              border: 1px solid var(--border);
              border-radius: 6px;
              padding: 10px 14px;
              text-align: center;
              flex: 1;
              min-width: 120px;
            }

            .kumorfm-release .stat-num {
              display: block;
              font-size: 21px;
              font-weight: 500;
              color: var(--kumo-pink);
              line-height: 1;
              margin-bottom: 5px;
            }

            .kumorfm-release .stat-desc {
              font-size: 11px;
              color: var(--ink-muted);
              line-height: 1.3;
            }

            .kumorfm-release .connector-table {
              width: 100%;
              border-collapse: collapse;
              font-size: 13px;
              margin-top: 14px;
            }

            .kumorfm-release .connector-table th {
              text-align: left;
              font-size: 10px;
              letter-spacing: 0.1em;
              text-transform: uppercase;
              color: var(--ink-faint);
              padding: 6px 12px;
              background: var(--surface);
              border-bottom: 1px solid var(--border);
            }

            .kumorfm-release .connector-table td {
              padding: 9px 12px;
              border-bottom: 1px solid var(--border);
              color: var(--ink-muted);
              vertical-align: top;
            }

            .kumorfm-release .connector-table td:first-child {
              font-family: "DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
              font-size: 13px;
              color: var(--ink);
              font-weight: 500;
            }

            .kumorfm-release .status-pill {
              display: inline-block;
              font-size: 10px;
              padding: 2px 7px;
              border-radius: 3px;
              font-weight: 500;
              white-space: nowrap;
            }

            .kumorfm-release .status-pill.supported { background: var(--new-bg); color: var(--new); }

            .kumorfm-release .code-block {
              background: var(--ink);
              border-radius: 7px;
              padding: 16px 20px;
              margin-top: 12px;
              overflow-x: auto;
            }

            .kumorfm-release .code-block pre {
              font-size: 12px;
              line-height: 1.7;
              color: rgba(255, 255, 255, 0.82);
              white-space: pre;
              margin: 0;
            }

            .kumorfm-release .code-block,
            .kumorfm-release .code-block pre,
            .kumorfm-release .code-block code,
            .kumorfm-release .code-block pre * {
              text-align: left !important;
            }

            .kumorfm-release .code-block .kw { color: #FF79C6; }
            .kumorfm-release .code-block .cm { color: #8EA0B8; }

            .kumorfm-release .note-box {
              border-left: 3px solid var(--kumo-pink);
              background: var(--kumo-pink-soft);
              padding: 12px 14px;
              border-radius: 6px;
              margin-top: 12px;
              font-size: 13px;
              color: var(--ink-muted);
            }

            .kumorfm-release .links-row {
              display: flex;
              flex-wrap: wrap;
              gap: 10px;
              margin-top: 12px;
            }

            .kumorfm-release .link-btn {
              display: inline-flex;
              align-items: center;
              gap: 6px;
              font-size: 13px;
              font-weight: 500;
              padding: 8px 16px;
              border-radius: 6px;
              text-decoration: none;
              border: 1px solid var(--border);
              color: var(--ink);
              background: white;
            }

            .kumorfm-release .link-btn.primary {
              background: var(--kumo-pink);
              color: white;
              border-color: var(--kumo-pink);
            }

            .kumorfm-release a {
              color: var(--kumo-pink);
              text-decoration: none;
            }

            @media (max-width: 700px) {
              .kumorfm-release {
                padding: 32px 0 56px;
              }

              .kumorfm-release .header {
                flex-direction: column;
              }

              .kumorfm-release .header-meta {
                text-align: left;
              }

              .kumorfm-release .stat {
                min-width: 100%;
              }
            }
            `}
    </style>

    <div
      className="kumorfm-release"
      style={{
maxWidth: 820,
margin: "0 auto",
padding: "40px 0 64px",
color: "#0E0E12",
fontSize: 15,
lineHeight: 1.6,
}}
    >
      <div
        className="header"
        style={{
  display: "flex",
  alignItems: "flex-start",
  justifyContent: "space-between",
  gap: 24,
  borderBottom: "2px solid #0E0E12",
  paddingBottom: 28,
  marginBottom: 36,
}}
      >
        <div>
          <h1
            className="header-title"
            style={{
      fontSize: 30,
      fontWeight: 600,
      lineHeight: 1.2,
      margin: 0,
    }}
          >
            KumoRFM-2 (04/14/2026)
          </h1>
        </div>
      </div>

      <div className="section" style={{ marginBottom: 44 }}>
        <div className="section-header" style={{ display: "flex", alignItems: "center", gap: 10, marginBottom: 20 }}>
          <div className="section-dot note" style={{ width: 8, height: 8, borderRadius: "50%", flexShrink: 0, background: "#E8194B" }} />

          <span className="section-title" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 14, fontWeight: 600, letterSpacing: "0.12em", textTransform: "uppercase", color: "#E8194B" }}>Highlights</span>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.4, marginBottom: 14, color: "#0E0E12" }}>
            KumoRFM-2 improves predictive quality, expands large-scale data connectivity, and adds new controls for temporal and developer workflows.
          </div>

          <div style={{ display: "flex", flexDirection: "column", gap: 8 }}>
            <div style={{ display: "flex", alignItems: "flex-start", gap: 10, fontSize: 14, lineHeight: 1.5, color: "#52526A" }}>
              <span style={{ color: "#E8194B", flexShrink: 0, fontSize: 18, lineHeight: 1.2 }}>
                {"•"}
              </span>

              <span>Improved performance over KumoRFM-1 across benchmark groups, with gains measured directly against the previous release.</span>
            </div>

            <div style={{ display: "flex", alignItems: "flex-start", gap: 10, fontSize: 14, lineHeight: 1.5, color: "#52526A" }}>
              <span style={{ color: "#E8194B", flexShrink: 0, fontSize: 18, lineHeight: 1.2 }}>
                {"•"}
              </span>

              <span>More robust predictions in real-world data settings, including sparse features, missing links, and noisy columns.</span>
            </div>

            <div style={{ display: "flex", alignItems: "flex-start", gap: 10, fontSize: 14, lineHeight: 1.5, color: "#52526A" }}>
              <span style={{ color: "#E8194B", flexShrink: 0, fontSize: 18, lineHeight: 1.2 }}>
                {"•"}
              </span>

              <span>SQL-based execution for large relational datasets, with Snowflake and SQLite supported today.</span>
            </div>

            <div style={{ display: "flex", alignItems: "flex-start", gap: 10, fontSize: 14, lineHeight: 1.5, color: "#52526A" }}>
              <span style={{ color: "#E8194B", flexShrink: 0, fontSize: 18, lineHeight: 1.2 }}>
                {"•"}
              </span>

              <span>New SDK controls for lagged features, embedding outputs, and customizable inference behavior.</span>
            </div>

            <div style={{ display: "flex", alignItems: "flex-start", gap: 10, fontSize: 14, lineHeight: 1.5, color: "#52526A" }}>
              <span style={{ color: "#E8194B", flexShrink: 0, fontSize: 18, lineHeight: 1.2 }}>
                {"•"}
              </span>

              <span>No backward-incompatible interface changes.</span>
            </div>
          </div>
        </div>
      </div>

      <div className="section" style={{ marginBottom: 44 }}>
        <div className="section-header" style={{ display: "flex", alignItems: "center", gap: 10, marginBottom: 20 }}>
          <div className="section-dot improved" style={{ width: 8, height: 8, borderRadius: "50%", flexShrink: 0, background: "#1A56C9" }} />

          <span className="section-title" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 14, fontWeight: 600, letterSpacing: "0.12em", textTransform: "uppercase", color: "#52526A" }}>Performance</span>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag improved" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#EAF0FD", color: "#1A56C9" }}>Improved</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Higher accuracy across relational benchmarks</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 delivers improved predictive performance across a wide range of relational tasks, especially classification and regression.
            The most important change from the previous release is the gain over KumoRFM-1: benchmark evaluations show consistent improvements across RelBench and SALT when measured directly against the previous release.

            <div className="stat-row" style={{ display: "flex", gap: 12, flexWrap: "wrap", marginTop: 14 }}>
              <div className="stat" style={{ background: "#FAFAFA", border: "1px solid #E4E4EE", borderRadius: 6, padding: "10px 14px", textAlign: "center", flex: 1, minWidth: 120 }}>
                <span className="stat-num" style={{ display: "block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 21, fontWeight: 500, color: "#E8194B", lineHeight: 1, marginBottom: 5 }}>+2.89</span>
                <span className="stat-desc" style={{ fontSize: 11, color: "#52526A", lineHeight: 1.3 }}>AUROC points vs RFM-1<br />RelBenchV1 classification</span>
              </div>

              <div className="stat" style={{ background: "#FAFAFA", border: "1px solid #E4E4EE", borderRadius: 6, padding: "10px 14px", textAlign: "center", flex: 1, minWidth: 120 }}>
                <span className="stat-num" style={{ display: "block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 21, fontWeight: 500, color: "#E8194B", lineHeight: 1, marginBottom: 5 }}>9.5%</span>
                <span className="stat-desc" style={{ fontSize: 11, color: "#52526A", lineHeight: 1.3 }}>lower normalized error vs RFM-1<br />RelBenchV1 regression</span>
              </div>

              <div className="stat" style={{ background: "#FAFAFA", border: "1px solid #E4E4EE", borderRadius: 6, padding: "10px 14px", textAlign: "center", flex: 1, minWidth: 120 }}>
                <span className="stat-num" style={{ display: "block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 21, fontWeight: 500, color: "#E8194B", lineHeight: 1, marginBottom: 5 }}>+3.74</span>
                <span className="stat-desc" style={{ fontSize: 11, color: "#52526A", lineHeight: 1.3 }}>AUROC points vs RFM-1<br />RelBenchV2 classification</span>
              </div>

              <div className="stat" style={{ background: "#FAFAFA", border: "1px solid #E4E4EE", borderRadius: 6, padding: "10px 14px", textAlign: "center", flex: 1, minWidth: 120 }}>
                <span className="stat-num" style={{ display: "block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 21, fontWeight: 500, color: "#E8194B", lineHeight: 1, marginBottom: 5 }}>15.6%</span>
                <span className="stat-desc" style={{ fontSize: 11, color: "#52526A", lineHeight: 1.3 }}>lower normalized error vs RFM-1<br />RelBenchV2 regression</span>
              </div>
            </div>
          </div>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag improved" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#EAF0FD", color: "#1A56C9" }}>Improved</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>More resilient to messy, incomplete data</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 is designed for real-world relational data, where information is often sparse, incomplete, or noisy.
            In robustness evaluations, the model maintains strong performance under:

            <ul>
              <li><strong>Feature scarcity:</strong> limited or missing feature coverage</li>
              <li><strong>Link scarcity:</strong> incomplete relational connections</li>
              <li><strong>Noisy columns:</strong> added irrelevant or uninformative columns</li>
            </ul>
          </div>
        </div>
      </div>

      <div className="section" style={{ marginBottom: 44 }}>
        <div className="section-header" style={{ display: "flex", alignItems: "center", gap: 10, marginBottom: 20 }}>
          <div className="section-dot new" style={{ width: 8, height: 8, borderRadius: "50%", flexShrink: 0, background: "#0D7A4E" }} />

          <span className="section-title" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 14, fontWeight: 600, letterSpacing: "0.12em", textTransform: "uppercase", color: "#52526A" }}>Scalability & Data Connectivity</span>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag new" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#E8F7F1", color: "#0D7A4E" }}>New</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Run KumoRFM-2 directly on your data warehouse</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 supports SQL-backed graph construction and execution for larger relational datasets. Snowflake-backed execution enables warehouse-native workflows, while SQLite support is available for local or lightweight SQL-backed development.

            <table className="connector-table" style={{ width: "100%", borderCollapse: "collapse", fontSize: 13, marginTop: 14 }}>
              <thead>
                <tr>
                  <th style={{ textAlign: "left", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, letterSpacing: "0.1em", textTransform: "uppercase", color: "#9090A8", padding: "6px 12px", background: "#FAFAFA", borderBottom: "1px solid #E4E4EE" }}>System</th>
                  <th style={{ textAlign: "left", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, letterSpacing: "0.1em", textTransform: "uppercase", color: "#9090A8", padding: "6px 12px", background: "#FAFAFA", borderBottom: "1px solid #E4E4EE" }}>Status</th>
                  <th style={{ textAlign: "left", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, letterSpacing: "0.1em", textTransform: "uppercase", color: "#9090A8", padding: "6px 12px", background: "#FAFAFA", borderBottom: "1px solid #E4E4EE" }}>Details</th>
                </tr>
              </thead>

              <tbody>
                <tr>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#0E0E12", verticalAlign: "top", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 13, fontWeight: 500 }}>Snowflake</td>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#52526A", verticalAlign: "top" }}><span className="status-pill supported" style={{ display: "inline-block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, padding: "2px 7px", borderRadius: 3, fontWeight: 500, whiteSpace: "nowrap", background: "#E8F7F1", color: "#0D7A4E" }}>Supported</span></td>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#52526A", verticalAlign: "top" }}>Supported when running inside Snowflake. <a href="https://kumo.ai/docs/rfm/connectors/snowflake/" style={{ color: "#E8194B", textDecoration: "none" }}>Connector guide</a></td>
                </tr>

                <tr>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#0E0E12", verticalAlign: "top", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 13, fontWeight: 500 }}>SQLite</td>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#52526A", verticalAlign: "top" }}><span className="status-pill supported" style={{ display: "inline-block", fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, padding: "2px 7px", borderRadius: 3, fontWeight: 500, whiteSpace: "nowrap", background: "#E8F7F1", color: "#0D7A4E" }}>Supported</span></td>
                  <td style={{ padding: "9px 12px", borderBottom: "1px solid #E4E4EE", color: "#52526A", verticalAlign: "top" }}>Available for local or lightweight SQL-backed workflows. <a href="https://kumo.ai/docs/rfm/connectors/sqlite/" style={{ color: "#E8194B", textDecoration: "none" }}>Connector guide</a></td>
                </tr>
              </tbody>
            </table>

            <div className="code-block" style={{ background: "#0E0E12", borderRadius: 7, padding: "16px 20px", marginTop: 12, overflowX: "auto", textAlign: "left" }}>
              <pre style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 12, lineHeight: 1.7, color: "rgba(255, 255, 255, 0.82)", whiteSpace: "pre", margin: 0, padding: 0, background: "transparent", border: 0, boxShadow: "none", textAlign: "left", display: "block" }}>
                {`# Example: connect to a Snowflake-backed dataset
                                from kumoai import rfm

                                graph = rfm.Graph.from_snowflake(
                                  database="MY_DATABASE",
                                  schema="MY_SCHEMA",
                                )`}
              </pre>
            </div>
          </div>
        </div>
      </div>

      <div className="section" style={{ marginBottom: 44 }}>
        <div className="section-header" style={{ display: "flex", alignItems: "center", gap: 10, marginBottom: 20 }}>
          <div className="section-dot new" style={{ width: 8, height: 8, borderRadius: "50%", flexShrink: 0, background: "#0D7A4E" }} />

          <span className="section-title" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 14, fontWeight: 600, letterSpacing: "0.12em", textTransform: "uppercase", color: "#52526A" }}>New Features</span>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag new" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#E8F7F1", color: "#0D7A4E" }}>New</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Temporal predictions with lagged features</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 can include recent historical target values as lagged features during prediction. This is useful for time-dependent tasks such as churn prediction and demand modeling, where a user's or entity's recent behavior is often predictive of the next outcome. The <code>lag\_timesteps</code> option controls how many previous time steps are made available to the model as additional context during <code>predict()</code>.

            <div className="code-block" style={{ background: "#0E0E12", borderRadius: 7, padding: "16px 20px", marginTop: 12, overflowX: "auto", textAlign: "left" }}>
              <pre style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 12, lineHeight: 1.7, color: "rgba(255, 255, 255, 0.82)", whiteSpace: "pre", margin: 0, padding: 0, background: "transparent", border: 0, boxShadow: "none", textAlign: "left", display: "block" }}>
                {`# Example: use the last 10 time steps as lagged feature context
                                result = model.predict(
                                  query,
                                  indices=[0, 1, 2],
                                  lag_timesteps=10,
                                )`}
              </pre>
            </div>

            <div className="note-box" style={{ borderLeft: "3px solid #E8194B", background: "#FBE9EE", padding: "12px 14px", borderRadius: 6, marginTop: 12, fontSize: 13, color: "#52526A" }}>
              Tips: Use larger values when longer historical context is useful, and smaller values when only the most recent behavior should influence the prediction.
            </div>
          </div>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag new" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#E8F7F1", color: "#0D7A4E" }}>New</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Embeddings added as an optional prediction output</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 can return embeddings alongside prediction results, enabling downstream use cases such as search, clustering, similarity analysis, and custom ML workflows.

            <div className="code-block" style={{ background: "#0E0E12", borderRadius: 7, padding: "16px 20px", marginTop: 12, overflowX: "auto", textAlign: "left" }}>
              <pre style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 12, lineHeight: 1.7, color: "rgba(255, 255, 255, 0.82)", whiteSpace: "pre", margin: 0, padding: 0, background: "transparent", border: 0, boxShadow: "none", textAlign: "left", display: "block" }}>
                {`# Example: return embeddings with predictions
                                result = model.predict(
                                  query,
                                  indices=[0, 1, 2],
                                  return_embeddings=True,
                                )`}
              </pre>
            </div>
          </div>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag new" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#E8F7F1", color: "#0D7A4E" }}>New</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Customizable inference behavior</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            KumoRFM-2 adds <code>inference\_config</code> to the <code>predict()</code> API for controlling inference-time behavior, including ensembling. Defaults are selected automatically based on the task type, while advanced users can tune inference settings such as <code>run\_mode</code> and <code>inference\_config</code> to optimize stability, latency, and predictive performance once a query is production-ready.

            <ul>
              <li><strong>num\_estimators:</strong> number of inference passes to ensemble for more stable predictions</li>
              <li><strong>column\_shuffle:</strong> vary column order across inference passes</li>
              <li><strong>category\_shuffle:</strong> vary categorical value ordering across inference passes</li>
              <li><strong>hop\_shuffle:</strong> vary subgraph depth across inference passes</li>
              <li><strong>class\_shuffle:</strong> vary class ordering across inference passes for classification tasks</li>
              <li><strong>Regression and forecasting options:</strong> configure target transforms and output summarization</li>
            </ul>

            <div className="code-block" style={{ background: "#0E0E12", borderRadius: 7, padding: "16px 20px", marginTop: 12, overflowX: "auto", textAlign: "left" }}>
              <pre style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 12, lineHeight: 1.7, color: "rgba(255, 255, 255, 0.82)", whiteSpace: "pre", margin: 0, padding: 0, background: "transparent", border: 0, boxShadow: "none", textAlign: "left", display: "block" }}>
                {`# Example: configure inference behavior
                                result = model.predict(
                                  query,
                                  indices=[0, 1, 2],
                                  inference_config=dict(
                                      num_estimators=4,
                                      column_shuffle=True,
                                      hop_shuffle=True,
                                      class_shuffle=True,
                                  ),
                                )`}
              </pre>
            </div>

            <div className="note-box" style={{ borderLeft: "3px solid #E8194B", background: "#FBE9EE", padding: "12px 14px", borderRadius: 6, marginTop: 12, fontSize: 13, color: "#52526A" }}>
              No backward-incompatible interface changes. Existing workflows continue to work as before. For more details, see the <a href="https://kumo.ai/docs/rfm//configuration#inference-configuration">SDK inference configuration docs</a>.
            </div>
          </div>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag new" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#E8F7F1", color: "#0D7A4E" }}>Preview</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Natural language to predictive query</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            Users can generate predictive queries from natural language input, helping teams move from a business question to a structured predictive query faster.
            This is a beta feature currently available in playground only.
          </div>
        </div>
      </div>

      <div className="section" style={{ marginBottom: 44 }}>
        <div className="section-header" style={{ display: "flex", alignItems: "center", gap: 10, marginBottom: 20 }}>
          <div className="section-dot note" style={{ width: 8, height: 8, borderRadius: "50%", flexShrink: 0, background: "#E8194B" }} />

          <span className="section-title" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 14, fontWeight: 600, letterSpacing: "0.12em", textTransform: "uppercase", color: "#52526A" }}>Availability</span>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag note" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#FBE9EE", color: "#E8194B" }}>Available</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Deployment models</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            <ul>
              <li><strong>Enterprise SaaS:</strong> available by request. Contact <a href="mailto:kumorfm-support@kumo.ai">[kumorfm-support@kumo.ai](mailto:kumorfm-support@kumo.ai)</a>.</li>
              <li><strong>Snowflake Native App:</strong> available via private listing. Contact <a href="mailto:kumorfm-support@kumo.ai">[kumorfm-support@kumo.ai](mailto:kumorfm-support@kumo.ai)</a>.</li>
              <li><strong>VPC deployment:</strong> available on AWS, GCP, and Azure. Contact <a href="mailto:kumorfm-support@kumo.ai">[kumorfm-support@kumo.ai](mailto:kumorfm-support@kumo.ai)</a>.</li>
            </ul>
          </div>
        </div>

        <div className="card" style={{ border: "1px solid #E4E4EE", borderRadius: 8, padding: "20px 22px", marginBottom: 12, background: "white" }}>
          <div className="card-head" style={{ display: "flex", alignItems: "flex-start", gap: 12, marginBottom: 8 }}>
            <span className="tag note" style={{ fontFamily: '"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace', fontSize: 10, fontWeight: 500, letterSpacing: "0.08em", textTransform: "uppercase", padding: "3px 8px", borderRadius: 4, flexShrink: 0, marginTop: 2, background: "#FBE9EE", color: "#E8194B" }}>Try it</span>
            <span className="card-title" style={{ fontSize: 15, fontWeight: 600, lineHeight: 1.3 }}>Get started with KumoRFM-2</span>
          </div>

          <div className="card-body" style={{ fontSize: 14, color: "#52526A", lineHeight: 1.6 }}>
            <div className="links-row" style={{ display: "flex", flexWrap: "wrap", gap: 10, marginTop: 12 }}>
              <a className="link-btn primary" style={{ display: "inline-flex", alignItems: "center", gap: 6, fontSize: 13, fontWeight: 500, padding: "8px 16px", borderRadius: 6, textDecoration: "none", border: "1px solid #E8194B", color: "white", background: "#E8194B" }} href="https://kumorfm.ai/login">Playground</a>
              <a className="link-btn" style={{ display: "inline-flex", alignItems: "center", gap: 6, fontSize: 13, fontWeight: 500, padding: "8px 16px", borderRadius: 6, textDecoration: "none", border: "1px solid #E4E4EE", color: "#0E0E12", background: "white" }} href="https://kumo.ai/docs/rfm/introduction/">Python SDK</a>
              <a className="link-btn" style={{ display: "inline-flex", alignItems: "center", gap: 6, fontSize: 13, fontWeight: 500, padding: "8px 16px", borderRadius: 6, textDecoration: "none", border: "1px solid #E4E4EE", color: "#0E0E12", background: "white" }} href="https://github.com/kumo-ai/kumo-rfm-mcp">Kumo MCP</a>
              <a className="link-btn" style={{ display: "inline-flex", alignItems: "center", gap: 6, fontSize: 13, fontWeight: 500, padding: "8px 16px", borderRadius: 6, textDecoration: "none", border: "1px solid #E4E4EE", color: "#0E0E12", background: "white" }} href="https://github.com/kumo-ai/kumo-coding-agent">Kumo Coding Agent</a>
            </div>
          </div>
        </div>
      </div>
    </div>
  </Tab>
</Tabs>
