/* @jsx React.createElement */

/* Spec sheet content — sections 01–09. Source-of-truth content drawn from the
   brand foundation document and pricing sheet. Mono-heavy, technical register,
   no decorative treatments. */

const SECTIONS = [
  { id: "architecture",    num: "01", title: "Architecture overview" },
  { id: "tam",             num: "02", title: "TAM System" },
  { id: "signal",          num: "03", title: "Signal System" },
  { id: "enrichment",      num: "04", title: "Enrichment System" },
  { id: "delivery",        num: "05", title: "Delivery System" },
  { id: "integrations",    num: "06", title: "Integrations" },
  { id: "data-handling",   num: "07", title: "Data handling and security" },
  { id: "deployment",      num: "08", title: "Deployment timeline" },
  { id: "slas",            num: "09", title: "SLAs and operational guarantees" },
];

function SpecSheet() {
  return (
    <>
      {/* Document head */}
      <header className="spec-head">
        <div>
          <div className="spec-doctype">
            specification <span className="am">·</span> v1.0
          </div>
          <h1>
            GTM OS <span className="am">/</span><br/>
            technical specification.
          </h1>
        </div>
        <dl className="spec-meta">
          <div className="row"><dt>document</dt><dd>spec-v1.0</dd></div>
          <div className="row"><dt>revision</dt><dd>april 2026</dd></div>
          <div className="row"><dt>status</dt><dd><span className="am">·</span> current</dd></div>
          <div className="row"><dt>scope</dt><dd>customer-facing systems</dd></div>
        </dl>
      </header>

      {/* Table of contents */}
      <nav className="spec-toc">
        <div className="spec-toc-label">contents</div>
        <ol>
          {SECTIONS.map(s => (
            <li key={s.id}>
              <span className="num">{s.num}</span>
              <a href={`#${s.id}`}>{s.title}</a>
            </li>
          ))}
        </ol>
      </nav>

      {/* 01 — Architecture overview */}
      <Section id="architecture" num="01" title="Architecture overview">
        <p>
          GTM OS is operated AI back-end infrastructure for outbound. Four systems &mdash;
          TAM, Signal, Enrichment, and Delivery &mdash; running behind the customer&rsquo;s
          existing CRM and sequencer. All four ship together. Non-optional.
        </p>
        <p>
          The customer experience is one Slack channel: <code>#gtmos</code>. We post
          into it. Four post types, ~250 posts per year, fixed format. No dashboard
          to log into. No queries to write. No knobs to turn.
        </p>
        <dl className="spec-dl">
          <dt>systems</dt>
          <dd>TAM <span className="am">/</span> Signal <span className="am">/</span> Enrichment <span className="am">/</span> Delivery</dd>
          <dt>outputs</dt>
          <dd>TAM Map <span className="am">/</span> Signal Intelligence <span className="am">/</span> Cascade Report <span className="am">/</span> Delivery Report</dd>
          <dt>surface</dt>
          <dd>one Slack channel per customer (<code>#gtmos</code>)</dd>
          <dt>volume</dt>
          <dd>~250 posts per year per customer, max 1 per day</dd>
          <dt>operating model</dt>
          <dd>operated infrastructure &mdash; we run the system on the customer&rsquo;s behalf</dd>
        </dl>
      </Section>

      {/* 02 — TAM */}
      <Section id="tam" num="02" title="TAM System">
        <p>
          Builds and maintains the addressable account universe. Pulls firmographic
          sources, expands beyond any single dataset, scores accounts as they enter,
          keeps the universe fresh.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>parameter</th><th>value</th></tr>
          </thead>
          <tbody>
            <tr><td>output post type</td><td>TAM Map</td></tr>
            <tr><td>cadence</td><td>quarterly refresh, first business day of quarter</td></tr>
            <tr><td>also fires</td><td>as-needed expansion alerts</td></tr>
            <tr><td>sources</td><td>firmographic primary, professional graph, tech-stack detection, hiring signals</td></tr>
            <tr><td>ICP fit</td><td>scored at ingest, re-scored on quarterly refresh</td></tr>
            <tr><td>universe cap</td><td>tier-dependent &mdash; 10K / 35K / 100K accounts</td></tr>
          </tbody>
        </table>
        <p>
          Each quarterly TAM Map post contains the updated account universe count,
          expansion vs. churn, ICP-fit changes, and new accounts added this quarter.
          Treated as a quarterly event, not a routine update.
        </p>
      </Section>

      {/* 03 — Signal */}
      <Section id="signal" num="03" title="Signal System">
        <p>
          Detects buying signals across three buckets &mdash; Expansion, New Sheriff,
          Leaky Bucket &mdash; plus customer-specific custom signals. Scores and routes
          by intensity. The default post type. The 240+ posts per year that anchor
          the channel.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>parameter</th><th>value</th></tr>
          </thead>
          <tbody>
            <tr><td>output post type</td><td>Signal Intelligence</td></tr>
            <tr><td>cadence</td><td>daily, weekdays</td></tr>
            <tr><td>post time</td><td>06:00 PT, fixed</td></tr>
            <tr><td>standard signal buckets</td><td>Expansion <span className="am">/</span> New Sheriff <span className="am">/</span> Leaky Bucket</td></tr>
            <tr><td>custom signals</td><td>tier-dependent &mdash; 0 / 2 / 4 built to ICP</td></tr>
            <tr><td>scoring</td><td>per-account intensity score, tier-classified</td></tr>
            <tr><td>routing</td><td>tier-1 surfaces today, tier-2 surfaces on threshold</td></tr>
          </tbody>
        </table>
        <p>
          Each daily post contains today&rsquo;s flagged accounts, scored, with one-line
          context per account. Custom signals are designed and operated by GTM OS;
          the customer specifies the ICP behavior to detect, not the technical
          implementation.
        </p>
      </Section>

      {/* 04 — Enrichment + Cascade (the destination of footer's cascade link) */}
      <Section id="enrichment" num="04" title="Enrichment System">
        <p>
          Runs Cascade &mdash; probabilistic routing across 15+ data sources with
          AI-driven fallback, optimized for cost per successful resolution. Cascade
          is the locked architectural name for our enrichment routing.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>parameter</th><th>value</th></tr>
          </thead>
          <tbody>
            <tr><td>output post type</td><td>Cascade Report</td></tr>
            <tr><td>cadence</td><td>monthly, first business day of month</td></tr>
            <tr><td>routing model</td><td>probabilistic &mdash; every record takes the optimal path</td></tr>
            <tr><td>source count</td><td>15+ data sources (firmographic, contact, technographic, behavioral)</td></tr>
            <tr><td>fallback</td><td>AI-driven, per-record, cost-aware</td></tr>
            <tr><td>cost model</td><td>probabilistic &mdash; every record routes to the source most likely to resolve at lowest blended cost</td></tr>
            <tr><td>enrichment cap</td><td>tier-dependent &mdash; 15K / 60K / 150K per month</td></tr>
          </tbody>
        </table>
        <p>
          Each monthly Cascade Report post contains total enrichments, single-source-
          equivalent cost, source-by-source breakdown, hit rates, and month-over-
          month trend. The economic justification artifact &mdash; the post that proves
          the math to the buyer who signs the renewal.
        </p>
        <p>
          <strong>Cascade vs. waterfall.</strong> Waterfall is sequential and
          deterministic &mdash; every record takes the same fixed path. Cascade is
          probabilistic and branching &mdash; every record takes the optimal path.
          Industry convention separates the two terms exactly this way.
        </p>
      </Section>

      {/* 05 — Delivery */}
      <Section id="delivery" num="05" title="Delivery System">
        <p>
          Inbox warmup, deliverability monitoring, placement modeling. Ensures sends
          from the customer&rsquo;s sequencer land in primary inbox. Pre-send infrastructure
          &mdash; sits between the data layer and the sequencer, never replaces the
          sequencer.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>parameter</th><th>value</th></tr>
          </thead>
          <tbody>
            <tr><td>output post type</td><td>Delivery Report</td></tr>
            <tr><td>cadence</td><td>monthly digest + as-needed anomaly alerts</td></tr>
            <tr><td>scope</td><td>warmup, deliverability, placement</td></tr>
            <tr><td>sending domains</td><td>50+ standard, monitored continuously</td></tr>
            <tr><td>warmup</td><td>per-mailbox, per-domain, automated</td></tr>
            <tr><td>placement modeling</td><td>primary / promotions / spam, per inbox provider</td></tr>
            <tr><td>send cap</td><td>tier-dependent &mdash; 15K / 50K / 150K per month</td></tr>
          </tbody>
        </table>
        <p>
          Each monthly Delivery Report contains primary-inbox placement rate, warmup
          state by domain, and deliverability deltas. Quiet by default; loud when
          something changes &mdash; anomaly alerts fire reactively, not on a schedule.
        </p>
      </Section>

      {/* 06 — Integrations */}
      <Section id="integrations" num="06" title="Integrations">
        <p>
          GTM OS plugs into the customer&rsquo;s existing CRM and sequencer. Four standard
          integrations are included at every tier. We do not replace these systems;
          we sit behind them and feed them.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>system</th><th>type</th><th>direction</th></tr>
          </thead>
          <tbody>
            <tr><td>Salesforce</td><td>CRM</td><td>read &amp; write &mdash; account, contact, activity sync</td></tr>
            <tr><td>HubSpot</td><td>CRM</td><td>read &amp; write &mdash; account, contact, activity sync</td></tr>
            <tr><td>Outreach</td><td>sequencer</td><td>write &mdash; provisioned sequences, contact handoff</td></tr>
            <tr><td>Salesloft</td><td>sequencer</td><td>write &mdash; provisioned sequences, contact handoff</td></tr>
          </tbody>
        </table>
        <p>
          Customers run one CRM and one sequencer in production. Both are wired
          during the 14-day deployment. Additional integrations beyond the four
          standard are out of scope &mdash; the discipline is one channel, one
          standardized integration set, no per-customer engineering.
        </p>
      </Section>

      {/* 07 — Data handling and security */}
      <Section id="data-handling" num="07" title="Data handling and security">
        <p>
          GTM OS processes account, contact, and activity data on the customer&rsquo;s
          behalf. Data flows are documented and bounded; no per-customer data is
          used to train models or improve the product across customers.
        </p>
        <ul className="spec-list">
          <li>data residency &mdash; US-region by default, EU-region on request</li>
          <li>encryption &mdash; in transit (TLS 1.3) and at rest (AES-256)</li>
          <li>access control &mdash; SSO via SAML 2.0; role-based access to the underlying systems</li>
          <li>audit log &mdash; every system action is logged, retrievable on request</li>
          <li>data isolation &mdash; per-customer logical isolation; no cross-tenant inference</li>
          <li>retention &mdash; configurable; default is contract term plus 90 days</li>
          <li>SOC 2 Type II &mdash; in audit, report available under NDA</li>
          <li>subprocessor list &mdash; published and versioned; updated on change</li>
        </ul>
      </Section>

      {/* 08 — Deployment timeline */}
      <Section id="deployment" num="08" title="Deployment timeline">
        <p>
          14 days from signed order to first signal in <code>#gtmos</code>. Setup is
          included at every tier. The sequence below is the standard path; complex
          environments may extend by a few days but the contract reads 14.
        </p>
        <div className="spec-timeline">
          <TimelineRow day="day 1" what={<>Order signed. Slack workspace and <code>#gtmos</code> channel provisioned. Kickoff call scheduled.</>} />
          <TimelineRow day="day 2" what={<>Customer connects CRM (Salesforce or HubSpot) and sequencer (Outreach or Salesloft) via SSO.</>} />
          <TimelineRow day="day 3" what={<>ICP intake. Standard signal buckets confirmed. Custom signal scope defined (Scale and Operate tiers).</>} />
          <TimelineRow day="day 4" what={<>TAM ingest begins. Firmographic primary + professional graph + tech-stack detection run against the seeded ICP.</>} />
          <TimelineRow day="day 5" what={<>Sending infrastructure provisioned. 50+ domains warmed for the customer&rsquo;s send profile.</>} />
          <TimelineRow day="day 6" what={<>Cascade routing tuned to customer&rsquo;s data shape. Source weights and fallback order set.</>} />
          <TimelineRow day="day 7" what={<>Internal review. Account universe sampled and validated against ICP intake.</>} />
          <TimelineRow day="day 8" what={<>Custom signal logic implemented (if applicable). Detection rules tested against historical accounts.</>} />
          <TimelineRow day="day 9" what={<>End-to-end dry run. Signal Intelligence, Cascade Report, TAM Map, and Delivery Report all rendered against staged data.</>} />
          <TimelineRow day="day 10" what={<>Customer review session. Sample posts walked through with the buyer and the operating team.</>} />
          <TimelineRow day="day 11" what={<>Sequencer wiring confirmed. Contact handoff path tested end-to-end.</>} />
          <TimelineRow day="day 12" what={<>Deliverability baseline established. Primary-inbox placement measured before live sends begin.</>} />
          <TimelineRow day="day 13" what={<>Final ICP and signal-bucket sign-off. Production switch readied.</>} />
          <TimelineRow day="day 14" what={<><strong>Live.</strong> First Signal Intelligence post lands in <code>#gtmos</code> at 06:00 PT.</>} />
        </div>
      </Section>

      {/* 09 — SLAs */}
      <Section id="slas" num="09" title="SLAs and operational guarantees">
        <p>
          GTM OS is operated infrastructure. The contract is what gets posted, when,
          and how reliably the underlying systems run. Guarantees below are standard
          across all tiers; Operate tier adds a priority support SLA.
        </p>
        <table className="spec-table">
          <thead>
            <tr><th>guarantee</th><th>commitment</th></tr>
          </thead>
          <tbody>
            <tr><td>Signal Intelligence post</td><td>delivered weekdays, by 06:00 PT</td></tr>
            <tr><td>Cascade Report post</td><td>delivered first business day of month, by 09:00 PT</td></tr>
            <tr><td>TAM Map post</td><td>delivered first business day of quarter, by 09:00 PT</td></tr>
            <tr><td>Delivery Report digest</td><td>delivered monthly, by 09:00 PT first business day</td></tr>
            <tr><td>anomaly alerts</td><td>within 2 hours of detection <span className="am">·</span> Operate tier: within 60 minutes</td></tr>
            <tr><td>system uptime</td><td>99% measured against the post-delivery contract above</td></tr>
            <tr><td>incident notification</td><td>posted to <code>#gtmos</code> within 1 business day of declaration <span className="am">·</span> Operate tier: within 30 minutes</td></tr>
            <tr><td>support response</td><td>same business day &mdash; standard <span className="am">·</span> 4 hours &mdash; Operate</td></tr>
            <tr><td>status page</td><td>maintained at <code>gtmos.run/status</code>, updated in real time</td></tr>
          </tbody>
        </table>
        <p>
          Service credits apply if a scheduled post does not land within the
          contracted window for reasons attributable to GTM OS. Anomaly alerts are
          reactive by design; they fire when the underlying signal warrants it,
          not on a schedule, and are not subject to a count-based commitment.
        </p>
      </Section>
    </>
  );
}

function Section({ id, num, title, children }) {
  return (
    <section id={id} className="spec-section">
      <header className="spec-section-head">
        <div className="spec-section-num">{num}<span className="am">·</span></div>
        <h2 className="spec-section-title">{title}</h2>
      </header>
      <div className="spec-body">
        <div className="lead-empty" />
        <div className="spec-body-content">
          {children}
        </div>
      </div>
    </section>
  );
}

function TimelineRow({ day, what }) {
  return (
    <div className="spec-timeline-row">
      <div className="day">{day}</div>
      <div className="what">{what}</div>
    </div>
  );
}

window.SpecSheet = SpecSheet;
