# Start with AI Diagnose

$2,500 fixed. Two weeks. A written AI roadmap you keep, regardless of what comes next.

<link rel="stylesheet" href="?v=">

<!-- HERO -->
<section class="gs-hero">
  <div class="container">
    <div class="gs-breadcrumb">
      <a href="/">Density Labs</a> <span>/</span> <a href="/contact">Engage</a> <span>/</span> AI Diagnose
    </div>
    <div class="gs-eyebrow">Phase 01 // AI Diagnose</div>
    <h1>Start with a <em>written diagnostic</em>.</h1>
    <p class="lede"><strong>Standard $7,500. Founding cohort pays $2,500 fixed. Two weeks. One deliverable.</strong> We map your AI roadmap against your team's actual capability and give you a written plan you can act on. Yours to keep, no obligation to continue.</p>
    <div class="gs-meta">
      <span><strong>Investment</strong>$2,500 fixed <span style="color: var(--ink-muted); text-decoration: line-through;">$7,500</span></span>
      <span><strong>Duration</strong>2 weeks</span>
      <span><strong>Deliverable</strong>Written plan</span>
    </div>
  </div>
</section>

<!-- WHAT YOU GET -->
<section class="gs-recap">
  <div class="container">
    <div class="gs-recap-grid">
      <div>
        <div class="gs-eyebrow">What you get</div>
        <h2>A plan, not a <em>pitch deck</em>.</h2>
        <p style="color: var(--ink-soft); font-size: 15px; line-height: 1.6;">Two weeks of work by a senior Density engineer with shipping experience in production AI. We assess your roadmap, your team, and the gap between them. The output is a written document, not a slide deck, that anyone on your team can act on.</p>
      </div>
      <ul class="gs-recap-list">
        <li>Capability gap analysis against your stated AI roadmap</li>
        <li>Architecture and data audit, where relevant</li>
        <li>Written implementation plan, prioritized</li>
        <li>Honest read on whether AI is actually the right next move</li>
        <li>Yours to keep. No obligation to continue with us.</li>
      </ul>
    </div>
    <p style="text-align:center; margin-top:48px; font-size:15px; color: var(--ink-soft);">
      Want to see exactly what you receive? <a href="" style="color:var(--red); font-weight:600; text-decoration:underline; text-underline-offset:3px;">Read a redacted sample deliverable →</a>
    </p>
    <p style="text-align:center; margin-top:12px; font-size:14px; color: var(--ink-muted);">
      Engagement details, fees, and the full packet: <a href="" style="color:var(--ink-soft); font-weight:600; text-decoration:underline; text-underline-offset:3px;">AI Diagnose Terms &amp; Conditions →</a>
    </p>
  </div>
</section>

<!-- FORM -->
<section class="gs-form-section" id="apply">
  <div class="container">
    <div class="gs-form-card">
      <h2>Tell us about your AI plan.</h2>
      <p class="gs-form-intro">Five short questions plus anything else you want us to know. The more specific you are, the more useful our reply will be. Your intake is confidential. We respond within two business days.</p>

      <form id="gs-intake-form" action="" method="POST">
        <input type="hidden" name="tier" value="diagnostic" />
        <input type="hidden" name="_subject" value="AI Diagnose inquiry" />
        <input type="hidden" name="_next" value="" />
        <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off" />

        <!-- Cross-domain attribution (DEN-88): populated by the inline first-touch
             script below from forwarded UTMs (e.g. the ramallo.io Diagnose CTA). -->
        <input type="hidden" name="utm_source" value="" />
        <input type="hidden" name="utm_medium" value="" />
        <input type="hidden" name="utm_campaign" value="" />
        <input type="hidden" name="utm_content" value="" />
        <input type="hidden" name="utm_term" value="" />
        <input type="hidden" name="ep" value="" />
        <input type="hidden" name="referrer" value="" />
        <input type="hidden" name="landing_path" value="" />

        <div class="gs-form-row">
          <label for="name">Full name</label>
          <input id="name" type="text" name="name" placeholder="Your name" required />
        </div>
        <div class="gs-form-row">
          <label for="email">Work email</label>
          <input id="email" type="email" name="email" placeholder="you@company.com" required />
        </div>
        <div class="gs-form-row">
          <label for="company">Company</label>
          <input id="company" type="text" name="company" placeholder="Company name" required />
        </div>
        <div class="gs-form-row">
          <label for="role">Your role</label>
          <input id="role" type="text" name="role" placeholder="VP Engineering, CTO, Chief Digital Officer, etc." required />
        </div>

        <div class="gs-form-row">
          <label for="initiatives">Current AI initiatives</label>
          <textarea id="initiatives" name="initiatives" rows="3" placeholder="What have you tried, shipped, or shelved? Models, features, internal tools." required></textarea>
        </div>
        <div class="gs-form-row">
          <label for="blocker">Top blocker</label>
          <textarea id="blocker" name="blocker" rows="2" placeholder="What is the single thing stopping you from shipping AI to production right now?" required></textarea>
        </div>
        <div class="gs-form-row">
          <label for="team">Team size and AI seniority</label>
          <input id="team" type="text" name="team" placeholder="e.g. 18 engineers, 2 with production AI experience" required />
        </div>
        <div class="gs-form-row">
          <label for="success">Success criteria</label>
          <textarea id="success" name="success" rows="2" placeholder="What would success look like in the next 90 days? Be concrete." required></textarea>
        </div>
        <div class="gs-form-row">
          <label for="extra">Anything else? <span style="color: var(--ink-muted); font-weight: 400;">(optional)</span></label>
          <textarea id="extra" name="extra" rows="2" placeholder="Constraints, prior consultants, board pressure, regulatory context, etc."></textarea>
        </div>
        <div class="gs-form-row">
          <label for="timing">When are you looking to start?</label>
          <select id="timing" name="timing">
            <option>This quarter</option>
            <option>Next quarter</option>
            <option>Six months out</option>
            <option>Just exploring</option>
          </select>
        </div>

        <div class="gs-form-row gs-form-agree">
          <label class="gs-checkbox-label">
            <input type="checkbox" name="terms_agreed" value="yes" required />
            <span>I have read and agree to the <a href="" target="_blank" rel="noopener">AI Diagnose terms</a></span>
          </label>
        </div>

        <button type="submit" class="gs-form-submit">Request the Diagnose →</button>
        <p class="gs-fineprint">We read every inquiry. If we are not the right fit, we will tell you that and where to look instead.</p>
      </form>
    </div>
  </div>
</section>

<!--
  DEN-88 — Cross-domain UTM capture for the AI Diagnose intake.

  The ramallo.io /density-labs/ landing page forwards first-touch UTMs onto this
  page's URL via its `density-labs-utm.js` CTA decoration (DEN-7 acceptance #3).
  sessionStorage does not cross origins, so those values only arrive as query
  params here. This script mirrors the ramallo first-touch logic on the
  densitylabs.io origin: it parses the incoming query, persists it first-touch
  to sessionStorage (so the values survive in-session navigation before submit),
  and writes the captured values into the form's hidden inputs so Formspree
  includes them in the lead payload.
-->
<script>
(function () {
  'use strict';

  var STORAGE_KEY = 'dl_first_touch_v1';
  var UTM_KEYS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term'];
  var EXTRA_KEYS = ['ep'];

  function readQuery() {
    var params = new URLSearchParams(window.location.search || '');
    var out = {};
    UTM_KEYS.concat(EXTRA_KEYS).forEach(function (k) {
      var v = params.get(k);
      if (v) out[k] = v;
    });
    return out;
  }

  function loadStored() {
    try {
      var raw = window.sessionStorage.getItem(STORAGE_KEY);
      return raw ? JSON.parse(raw) : {};
    } catch (e) {
      return {};
    }
  }

  function persist(record) {
    try {
      window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(record));
    } catch (e) {
      /* ignore quota / private-mode errors */
    }
  }

  // First-touch wins: only set keys that aren't already stored this session.
  function firstTouch() {
    var stored = loadStored();
    var fresh = readQuery();
    UTM_KEYS.concat(EXTRA_KEYS).forEach(function (k) {
      if (fresh[k] && !stored[k]) stored[k] = fresh[k];
    });
    if (!stored.referrer && document.referrer) stored.referrer = document.referrer;
    if (!stored.landing_path) stored.landing_path = window.location.pathname;
    persist(stored);
    return stored;
  }

  function populate(record) {
    var form = document.getElementById('gs-intake-form');
    if (!form) return;
    var fields = UTM_KEYS.concat(EXTRA_KEYS, ['referrer', 'landing_path']);
    fields.forEach(function (name) {
      var input = form.querySelector('input[name="' + name + '"]');
      if (input && record[name]) input.value = record[name];
    });
  }

  function start() {
    populate(firstTouch());
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', start);
  } else {
    start();
  }
})();
</script>
