<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

<title>Green Light — QA for AI-forward teams</title>

<link rel="preconnect" href="https://fonts.googleapis.com">

<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300;0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,400&family=JetBrains+Mono:wght@400;500;600&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">

<style>

  :root {

    --bg: #0b0f0c;

    --bg-elev: #10150f;

    --ink: #e8ebe3;

    --ink-dim: #9aa394;

    --ink-faint: #5b6457;

    --line: #1f2720;

    --line-bright: #2a3429;

    --signal: #7af47a;

    --signal-deep: #2dbb52;

    --signal-glow: rgba(122, 244, 122, 0.18);

    --amber: #f4c74a;

    --red: #f25757;

  }


  * { margin: 0; padding: 0; box-sizing: border-box; }


  html { scroll-behavior: smooth; }


  body {

    background: var(--bg);

    color: var(--ink);

    font-family: 'Inter', sans-serif;

    font-size: 16px;

    line-height: 1.5;

    overflow-x: hidden;

    -webkit-font-smoothing: antialiased;

  }


  /* Ambient grain + subtle signal glow behind hero */

  body::before {

    content: "";

    position: fixed;

    inset: 0;

    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");

    opacity: 0.04;

    pointer-events: none;

    z-index: 1;

    mix-blend-mode: overlay;

  }


  .mono { font-family: 'JetBrains Mono', monospace; font-feature-settings: "ss01","ss02"; }

  .serif { font-family: 'Fraunces', serif; }


  /* ------- Top bar ------- */

  .topbar {

    position: sticky;

    top: 0;

    z-index: 50;

    backdrop-filter: blur(14px);

    background: rgba(11, 15, 12, 0.72);

    border-bottom: 1px solid var(--line);

  }

  .topbar-inner {

    max-width: 1280px;

    margin: 0 auto;

    padding: 14px 32px;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 32px;

  }

  .brand {

    display: flex;

    align-items: center;

    gap: 10px;

    font-family: 'Fraunces', serif;

    font-weight: 500;

    font-size: 20px;

    letter-spacing: -0.01em;

  }

  .brand-dot {

    width: 10px; height: 10px;

    border-radius: 50%;

    background: var(--signal);

    box-shadow: 0 0 12px var(--signal-glow), 0 0 0 3px rgba(122,244,122,0.08);

    animation: pulse 2.4s ease-in-out infinite;

  }

  @keyframes pulse {

    0%, 100% { opacity: 1; transform: scale(1); }

    50% { opacity: 0.6; transform: scale(0.9); }

  }

  .nav {

    display: flex;

    gap: 32px;

    font-size: 13px;

    color: var(--ink-dim);

  }

  .nav a {

    color: inherit;

    text-decoration: none;

    transition: color .2s;

  }

  .nav a:hover { color: var(--ink); }

  .topbar .cta {

    font-family: 'JetBrains Mono', monospace;

    font-size: 12px;

    font-weight: 500;

    letter-spacing: 0.04em;

    color: var(--bg);

    background: var(--signal);

    padding: 10px 18px;

    border-radius: 4px;

    text-decoration: none;

    text-transform: uppercase;

    transition: background .2s, transform .2s;

  }

  .topbar .cta:hover { background: #a8f8a8; transform: translateY(-1px); }


  @media (max-width: 780px) {

    .nav { display: none; }

  }


  /* ------- Hero ------- */

  .hero {

    position: relative;

    max-width: 1280px;

    margin: 0 auto;

    padding: 80px 32px 60px;

    overflow: hidden;

  }

  .hero::before {

    content: "";

    position: absolute;

    top: -100px;

    right: -80px;

    width: 520px;

    height: 520px;

    border-radius: 50%;

    background: radial-gradient(circle, rgba(122,244,122,0.12) 0%, transparent 62%);

    pointer-events: none;

  }


  .status-strip {

    display: flex;

    align-items: center;

    gap: 12px;

    font-family: 'JetBrains Mono', monospace;

    font-size: 11px;

    text-transform: uppercase;

    letter-spacing: 0.14em;

    color: var(--ink-dim);

    margin-bottom: 32px;

  }

  .status-strip .dot {

    width: 6px; height: 6px;

    border-radius: 50%;

    background: var(--signal);

    box-shadow: 0 0 8px var(--signal);

  }

  .status-strip .sep {

    width: 1px; height: 10px; background: var(--line-bright);

  }


  h1.headline {

    font-family: 'Fraunces', serif;

    font-weight: 400;

    font-size: clamp(48px, 8vw, 104px);

    line-height: 0.96;

    letter-spacing: -0.03em;

    margin-bottom: 36px;

    position: relative;

    z-index: 2;

  }

  h1.headline em {

    font-style: italic;

    font-weight: 300;

    color: var(--signal);

  }

  h1.headline .underlined {

    display: inline-block;

    position: relative;

  }

  h1.headline .underlined::after {

    content: "";

    position: absolute;

    left: 0; right: 0;

    bottom: 0.08em;

    height: 3px;

    background: var(--signal);

    opacity: 0.6;

  }


  .hero-grid {

    display: grid;

    grid-template-columns: 1.2fr 1fr;

    gap: 64px;

    align-items: start;

    margin-top: 48px;

  }

  @media (max-width: 960px) {

    .hero-grid { grid-template-columns: 1fr; gap: 40px; }

  }


  .lede {

    font-size: 19px;

    line-height: 1.55;

    color: var(--ink-dim);

    max-width: 54ch;

  }

  .lede strong { color: var(--ink); font-weight: 500; }


  .hero-ctas {

    margin-top: 32px;

    display: flex;

    gap: 14px;

    flex-wrap: wrap;

  }

  .btn {

    font-family: 'JetBrains Mono', monospace;

    font-size: 13px;

    font-weight: 500;

    letter-spacing: 0.04em;

    text-transform: uppercase;

    padding: 14px 22px;

    border-radius: 4px;

    text-decoration: none;

    transition: all .2s;

    display: inline-flex;

    align-items: center;

    gap: 10px;

    cursor: pointer;

    border: none;

  }

  .btn-primary {

    background: var(--signal);

    color: var(--bg);

  }

  .btn-primary:hover { background: #a8f8a8; transform: translateY(-1px); }

  .btn-primary::after {

    content: "→";

    font-size: 14px;

  }

  .btn-ghost {

    background: transparent;

    color: var(--ink);

    border: 1px solid var(--line-bright);

  }

  .btn-ghost:hover { border-color: var(--signal); color: var(--signal); }


  /* Ticket card in hero */

  .ticket-panel {

    background: var(--bg-elev);

    border: 1px solid var(--line);

    border-radius: 8px;

    padding: 20px;

    font-family: 'JetBrains Mono', monospace;

    font-size: 12px;

    position: relative;

  }

  .ticket-panel-head {

    display: flex;

    justify-content: space-between;

    align-items: center;

    padding-bottom: 14px;

    border-bottom: 1px solid var(--line);

    color: var(--ink-faint);

    text-transform: uppercase;

    letter-spacing: 0.1em;

  }

  .ticket-panel-head .live {

    display: flex; align-items: center; gap: 6px;

    color: var(--signal);

  }

  .ticket-panel-head .live::before {

    content: ""; width: 6px; height: 6px; border-radius: 50%;

    background: var(--signal); box-shadow: 0 0 6px var(--signal);

    animation: pulse 2s infinite;

  }


  .ticket-row {

    display: grid;

    grid-template-columns: 60px 1fr 90px;

    gap: 12px;

    padding: 12px 0;

    border-bottom: 1px dashed var(--line);

    align-items: center;

    font-size: 12px;

  }

  .ticket-row:last-child { border-bottom: none; }

  .ticket-row .id { color: var(--ink-faint); }

  .ticket-row .title { color: var(--ink); }

  .ticket-row .state {

    display: inline-flex;

    align-items: center;

    gap: 6px;

    font-size: 10px;

    text-transform: uppercase;

    letter-spacing: 0.1em;

    padding: 4px 8px;

    border-radius: 3px;

    justify-self: end;

  }

  .state.pass { background: rgba(122,244,122,0.12); color: var(--signal); }

  .state.pass::before { content:""; width:5px; height:5px; border-radius:50%; background: var(--signal); }

  .state.fail { background: rgba(242,87,87,0.12); color: var(--red); }

  .state.fail::before { content:""; width:5px; height:5px; border-radius:50%; background: var(--red); }

  .state.run { background: rgba(244,199,74,0.12); color: var(--amber); }

  .state.run::before {

    content:""; width:5px; height:5px; border-radius:50%; background: var(--amber);

    animation: pulse 1.2s infinite;

  }


  /* ------- Marquee / ticker ------- */

  .ticker {

    border-top: 1px solid var(--line);

    border-bottom: 1px solid var(--line);

    overflow: hidden;

    padding: 14px 0;

    background: var(--bg-elev);

  }

  .ticker-track {

    display: flex;

    gap: 64px;

    animation: scroll 38s linear infinite;

    width: max-content;

    font-family: 'JetBrains Mono', monospace;

    font-size: 12px;

    letter-spacing: 0.08em;

    text-transform: uppercase;

    color: var(--ink-dim);

    white-space: nowrap;

  }

  .ticker-track span {

    display: inline-flex; align-items: center; gap: 10px;

  }

  .ticker-track span::before {

    content: "◆";

    color: var(--signal);

    font-size: 8px;

  }

  @keyframes scroll {

    0% { transform: translateX(0); }

    100% { transform: translateX(-50%); }

  }


  /* ------- Sections ------- */

  section.block {

    max-width: 1280px;

    margin: 0 auto;

    padding: 120px 32px;

    position: relative;

  }


  .eyebrow {

    font-family: 'JetBrains Mono', monospace;

    font-size: 11px;

    text-transform: uppercase;

    letter-spacing: 0.18em;

    color: var(--signal);

    margin-bottom: 20px;

    display: flex;

    align-items: center;

    gap: 10px;

  }

  .eyebrow::before {

    content: "";

    width: 24px; height: 1px;

    background: var(--signal);

  }


  h2 {

    font-family: 'Fraunces', serif;

    font-weight: 400;

    font-size: clamp(36px, 5vw, 60px);

    line-height: 1.02;

    letter-spacing: -0.025em;

    margin-bottom: 20px;

    max-width: 20ch;

  }

  h2 em { font-style: italic; color: var(--signal); font-weight: 300; }

  .section-sub {

    font-size: 18px;

    color: var(--ink-dim);

    max-width: 56ch;

    line-height: 1.55;

    margin-bottom: 56px;

  }


  /* ------- The Problem (split diptych) ------- */

  .diptych {

    display: grid;

    grid-template-columns: 1fr 1fr;

    border: 1px solid var(--line);

    border-radius: 8px;

    overflow: hidden;

  }

  @media (max-width: 780px) { .diptych { grid-template-columns: 1fr; } }

  .diptych > div {

    padding: 44px 36px;

    position: relative;

  }

  .diptych > div:first-child {

    border-right: 1px solid var(--line);

    background: rgba(242,87,87,0.03);

  }

  @media (max-width: 780px) {

    .diptych > div:first-child { border-right: none; border-bottom: 1px solid var(--line); }

  }

  .diptych > div:last-child {

    background: rgba(122,244,122,0.03);

  }

  .diptych-label {

    font-family: 'JetBrains Mono', monospace;

    font-size: 11px;

    text-transform: uppercase;

    letter-spacing: 0.14em;

    margin-bottom: 20px;

    display: flex;

    align-items: center;

    gap: 8px;

  }

  .diptych > div:first-child .diptych-label { color: var(--red); }

  .diptych > div:last-child .diptych-label { color: var(--signal); }

  .diptych-label::before {

    content: "";

    width: 8px; height: 8px; border-radius: 50%;

  }

  .diptych > div:first-child .diptych-label::before { background: var(--red); }

  .diptych > div:last-child .diptych-label::before {

    background: var(--signal); box-shadow: 0 0 8px var(--signal);

  }

  .diptych h3 {

    font-family: 'Fraunces', serif;

    font-weight: 400;

    font-size: 28px;

    line-height: 1.15;

    margin-bottom: 18px;

    letter-spacing: -0.02em;

  }

  .diptych p {

    color: var(--ink-dim);

    font-size: 15px;

    line-height: 1.6;

  }

  .big-num {

    font-family: 'Fraunces', serif;

    font-weight: 300;

    font-size: 72px;

    line-height: 1;

    letter-spacing: -0.03em;

    margin-bottom: 8px;

    display: block;

  }

  .diptych > div:first-child .big-num { color: var(--red); }

  .diptych > div:last-child .big-num { color: var(--signal); }


  /* ------- Services: tile grid with numbers ------- */

  .services {

    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: 1px;

    background: var(--line);

    border: 1px solid var(--line);

    border-radius: 8px;

    overflow: hidden;

  }

  @media (max-width: 960px) { .services { grid-template-columns: repeat(2, 1fr); } }

  @media (max-width: 640px) { .services { grid-template-columns: 1fr; } }


  .service {

    background: var(--bg);

    padding: 36px 32px;

    display: flex;

    flex-direction: column;

    gap: 16px;

    min-height: 240px;

    transition: background .3s;

    position: relative;

  }

  .service:hover { background: var(--bg-elev); }

  .service:hover .service-num { color: var(--signal); }


  .service-head {

    display: flex;

    justify-content: space-between;

    align-items: flex-start;

    gap: 12px;

  }

  .service-num {

    font-family: 'JetBrains Mono', monospace;

    font-size: 11px;

    color: var(--ink-faint);

    letter-spacing: 0.1em;

    transition: color .3s;

  }

  .service-icon {

    width: 28px; height: 28px;

    display: flex; align-items: center; justify-content: center;

    color: var(--signal);

  }

  .service h4 {

    font-family: 'Fraunces', serif;

    font-weight: 500;

    font-size: 22px;

    line-height: 1.2;

    letter-spacing: -0.015em;

  }

  .service p {

    color: var(--ink-dim);

    font-size: 14px;

    line-height: 1.55;

  }


  /* ------- The Process (horizontal stepper) ------- */

  .process {

    display: grid;

    grid-template-columns: repeat(4, 1fr);

    gap: 32px;

    position: relative;

  }

  @media (max-width: 960px) { .process { grid-template-columns: repeat(2, 1fr); } }

  @media (max-width: 560px) { .process { grid-template-columns: 1fr; } }


  .step {

    position: relative;

  }

  .step-num {

    font-family: 'Fraunces', serif;

    font-weight: 300;

    font-size: 80px;

    line-height: 1;

    letter-spacing: -0.04em;

    color: var(--signal);

    opacity: 0.9;

    margin-bottom: 12px;

  }

  .step-label {

    font-family: 'JetBrains Mono', monospace;

    font-size: 11px;

    text-transform: uppercase;

    letter-spacing: 0.14em;

    color: var(--ink-faint);

    margin-bottom: 12px;

  }

  .step h5 {

    font-family: 'Fraunces', serif;

    font-weight: 500;

    font-size: 22px;

    margin-bottom: 10px;

    letter-spacing: -0.015em;

  }

  .step p {

    color: var(--ink-dim);

    font-size: 14px;

    line-height: 1.55;

  }


  /* ------- Pricing ------- */

  .pricing {

    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: 20px;

  }

  @media (max-width: 960px) { .pricing { grid-template-columns: 1fr; } }


  .plan {

    background: var(--bg-elev);

    border: 1px solid var(--line);

    border-radius: 8px;

    padding: 36px 32px;

    display: flex;

    flex-direction: column;

    position: relative;

    transition: border-color .3s;

  }

  .plan:hover { border-color: var(--line-bright); }

  .plan.featured {

    border-color: var(--signal);

    background: linear-gradient(180deg, rgba(122,244,122,0.06), var(--bg-elev) 60%);

  }

  .plan.featured::before {

    content: "Most chosen";

    position: absolute;

    top: -12px;

    left: 32px;

    background: var(--signal);

    color: var(--bg);

    font-family: 'JetBrains Mono', monospace;

    font-size: 10px;

    letter-spacing: 0.1em;

    text-transform: uppercase;

    padding: 5px 10px;

    border-radius: 3px;

    font-weight: 600;

  }

  .plan-name {

    font-family: 'Fraunces', serif;

    font-weight: 500;

    font-size: 24px;

    margin-bottom: 6px;

    letter-spacing: -0.015em;

  }

  .plan-tag {

    font-size: 13px;

    color: var(--ink-dim);

    margin-bottom: 24px;

  }

  .price {

    display: flex;

    align-items: baseline;

    gap: 6px;

    margin-bottom: 8px;

  }

  .price-num {

    font-family: 'Fraunces', serif;

    font-weight: 300;

    font-size: 52px;

    line-height: 1;

    letter-spacing: -0.03em;

  }

  .price-unit {

    font-family: 'JetBrains Mono', monospace;

    font-size: 12px;

    color: var(--ink-dim);

    text-transform: uppercase;

    letter-spacing: 0.08em;

  }

  .price-sub {

    font-size: 12px;

    color: var(--ink-faint);

    margin-bottom: 28px;

    padding-bottom: 28px;

    border-bottom: 1px solid var(--line);

  }

  .plan ul {

    list-style: none;

    display: flex;

    flex-direction: column;

    gap: 12px;

    margin-bottom: 32px;

    flex: 1;

  }

  .plan li {

    font-size: 14px;

    color: var(--ink);

    display: flex;

    gap: 10px;

    align-items: flex-start;

    line-height: 1.45;

  }

  .plan li::before {

    content: "✓";

    color: var(--signal);

    font-weight: 600;

    flex-shrink: 0;

  }

  .plan .btn {

    width: 100%;

    justify-content: center;

  }


  /* ------- FAQ ------- */

  .faq {

    max-width: 820px;

    margin: 0 auto;

  }

  .faq-item {

    border-bottom: 1px solid var(--line);

    padding: 28px 0;

  }

  .faq-q {

    display: flex;

    justify-content: space-between;

    align-items: flex-start;

    gap: 20px;

    cursor: pointer;

    list-style: none;

    font-family: 'Fraunces', serif;

    font-size: 20px;

    font-weight: 500;

    letter-spacing: -0.01em;

    transition: color .2s;

  }

  .faq-q::-webkit-details-marker { display: none; }

  .faq-q:hover { color: var(--signal); }

  .faq-q::after {

    content: "+";

    font-family: 'JetBrains Mono', monospace;

    font-size: 24px;

    color: var(--signal);

    flex-shrink: 0;

    transition: transform .25s;

    line-height: 1;

  }

  details[open] .faq-q::after { transform: rotate(45deg); }

  .faq-a {

    color: var(--ink-dim);

    font-size: 15px;

    line-height: 1.65;

    margin-top: 14px;

    max-width: 70ch;

  }


  /* ------- CTA ------- */

  .cta-block {

    max-width: 1280px;

    margin: 40px auto 0;

    padding: 0 32px 120px;

  }

  .cta-inner {

    background: linear-gradient(135deg, var(--bg-elev) 0%, rgba(122,244,122,0.04) 100%);

    border: 1px solid var(--line-bright);

    border-radius: 12px;

    padding: 72px 56px;

    text-align: center;

    position: relative;

    overflow: hidden;

  }

  .cta-inner::before {

    content: "";

    position: absolute;

    top: -40%; left: 50%;

    transform: translateX(-50%);

    width: 600px; height: 600px;

    background: radial-gradient(circle, rgba(122,244,122,0.08), transparent 65%);

    pointer-events: none;

  }

  .cta-inner h2 {

    margin: 0 auto 24px;

    max-width: 18ch;

    position: relative;

  }

  .cta-inner p {

    color: var(--ink-dim);

    font-size: 17px;

    max-width: 48ch;

    margin: 0 auto 36px;

    position: relative;

  }

  .cta-inner .btn { position: relative; }


  /* ------- Footer ------- */

  footer {

    border-top: 1px solid var(--line);

    padding: 40px 32px;

    max-width: 1280px;

    margin: 0 auto;

    display: flex;

    justify-content: space-between;

    align-items: center;

    font-family: 'JetBrains Mono', monospace;

    font-size: 12px;

    color: var(--ink-faint);

    flex-wrap: wrap;

    gap: 16px;

  }

  footer .brand { font-size: 16px; color: var(--ink); }

  footer a { color: var(--ink-dim); text-decoration: none; margin-left: 24px; }

  footer a:hover { color: var(--signal); }


  /* Entrance animations */

  @keyframes fadeUp {

    from { opacity: 0; transform: translateY(18px); }

    to { opacity: 1; transform: translateY(0); }

  }

  .hero .status-strip { animation: fadeUp .6s ease-out both; animation-delay: .05s; }

  .hero h1.headline { animation: fadeUp .8s ease-out both; animation-delay: .15s; }

  .hero .lede { animation: fadeUp .8s ease-out both; animation-delay: .35s; }

  .hero .hero-ctas { animation: fadeUp .8s ease-out both; animation-delay: .5s; }

  .hero .ticket-panel { animation: fadeUp .9s ease-out both; animation-delay: .5s; }

</style>

</head>

<body>


<!-- Top bar -->

<header class="topbar">

  <div class="topbar-inner">

    <div class="brand">

      <span class="brand-dot"></span>

      Green Light

    </div>

    <nav class="nav">

      <a href="#services">Services</a>

      <a href="#process">Process</a>

      <a href="#pricing">Pricing</a>

      <a href="#faq">FAQ</a>

    </nav>

    <a href="#cta" class="cta">Book a pilot</a>

  </div>

</header>


<!-- Hero -->

<section class="hero">

  <div class="status-strip">

    <span class="dot"></span>

    <span>QA, on demand</span>

    <span class="sep"></span>

    <span>For AI-forward engineering teams</span>

    <span class="sep"></span>

    <span>Human-verified</span>

  </div>


  <h1 class="headline">

    Your AI ships code faster than you can <em>verify</em> it.<br>

    We're <span class="underlined">the green light</span>.

  </h1>


  <div class="hero-grid">

    <div>

      <p class="lede">

        Green Light is a dedicated manual QA partner for teams moving at AI speed. Real testers run your tickets through thoughtful, exploratory black-box testing — the kind of scrutiny that catches what automation misses. <strong>We clear your queue. You ship with confidence.</strong>

      </p>

      <div class="hero-ctas">

        <a href="#cta" class="btn btn-primary">Start a 2-week pilot</a>

        <a href="#process" class="btn btn-ghost">See how it works</a>

      </div>

    </div>


    <!-- Live ticket panel -->

    <div class="ticket-panel">

      <div class="ticket-panel-head">

        <span>Ticket queue · today</span>

        <span class="live">Live</span>

      </div>

      <div class="ticket-row">

        <span class="id mono">#4821</span>

        <span class="title">Checkout flow — Apple Pay edge case</span>

        <span class="state pass mono">Verified</span>

      </div>

      <div class="ticket-row">

        <span class="id mono">#4819</span>

        <span class="title">Onboarding — email validation regex</span>

        <span class="state pass mono">Verified</span>

      </div>

      <div class="ticket-row">

        <span class="id mono">#4817</span>

        <span class="title">Dashboard — date picker timezone drift</span>

        <span class="state fail mono">Bug filed</span>

      </div>

      <div class="ticket-row">

        <span class="id mono">#4816</span>

        <span class="title">API — rate limit retry behavior</span>

        <span class="state run mono">In review</span>

      </div>

      <div class="ticket-row">

        <span class="id mono">#4814</span>

        <span class="title">Mobile — offline state persistence</span>

        <span class="state pass mono">Verified</span>

      </div>

    </div>

  </div>

</section>


<!-- Ticker -->

<div class="ticker">

  <div class="ticker-track">

    <span>Exploratory Testing</span>

    <span>Regression Sweeps</span>

    <span>Release Gating</span>

    <span>Bug Repro &amp; Triage</span>

    <span>Cross-browser QA</span>

    <span>Mobile Testing</span>

    <span>Accessibility Audits</span>

    <span>Test Plan Authoring</span>

    <span>Exploratory Testing</span>

    <span>Regression Sweeps</span>

    <span>Release Gating</span>

    <span>Bug Repro &amp; Triage</span>

    <span>Cross-browser QA</span>

    <span>Mobile Testing</span>

    <span>Accessibility Audits</span>

    <span>Test Plan Authoring</span>

  </div>

</div>


<!-- Problem diptych -->

<section class="block">

  <div class="eyebrow">The bottleneck</div>

  <h2>Shipping velocity collapsed into a <em>testing queue</em>.</h2>

  <p class="section-sub">

    AI-assisted development flipped the constraint. Engineers produce ten times the tickets. Founders become full-time QAs. Releases slow to the pace of whoever has time to click through the app tonight.

  </p>


  <div class="diptych">

    <div>

      <div class="diptych-label">Without Green Light</div>

      <span class="big-num">12 days</span>

      <h3>Average time a finished ticket waits for human verification.</h3>

      <p>Founders triage at 11pm. Engineers context-switch out of flow. Shippable work sits in review columns, quietly losing momentum and compounding into release risk.</p>

    </div>

    <div>

      <div class="diptych-label">With Green Light</div>

      <span class="big-num">&lt; 24h</span>

      <h3>Turnaround from ticket-ready to green-lit.</h3>

      <p>A dedicated QA lead runs your tickets daily. Clean passes are merged. Repro'd bugs come back with video, steps, and environment — ready to fix, not re-investigate.</p>

    </div>

  </div>

</section>


<!-- Services -->

<section class="block" id="services">

  <div class="eyebrow">What we do</div>

  <h2>Manual QA, done with <em>intent</em>.</h2>

  <p class="section-sub">

    We're not a tooling company. We're not selling you another dashboard. We're skilled human testers who treat your product like our own and tell you plainly whether it's ready to ship.

  </p>


  <div class="services">

    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/></svg>

        <span class="service-num">01</span>

      </div>

      <h4>Exploratory testing</h4>

      <p>Real users poking your product with curiosity and intent — the kind of testing that finds the bugs no automated suite was ever asked to look for.</p>

    </div>


    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>

        <span class="service-num">02</span>

      </div>

      <h4>Ticket verification</h4>

      <p>Each completed PR or ticket gets run against its acceptance criteria by a human, documented, and either green-lit or sent back with a clean bug report.</p>

    </div>


    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 2v4"/><path d="M12 18v4"/><path d="M4.93 4.93l2.83 2.83"/><path d="M16.24 16.24l2.83 2.83"/><path d="M2 12h4"/><path d="M18 12h4"/><circle cx="12" cy="12" r="3"/></svg>

        <span class="service-num">03</span>

      </div>

      <h4>Regression sweeps</h4>

      <p>Before every release, we run a tailored sweep across your critical paths. Core flows stay green while you're busy shipping new surface area.</p>

    </div>


    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="4" width="18" height="12" rx="1"/><path d="M8 20h8"/><path d="M12 16v4"/></svg>

        <span class="service-num">04</span>

      </div>

      <h4>Cross-device coverage</h4>

      <p>Safari, Chrome, Firefox. iOS and Android. Slow networks and weird screen sizes. We own the matrix so you don't have to.</p>

    </div>


    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>

        <span class="service-num">05</span>

      </div>

      <h4>Release gating</h4>

      <p>A human signs off on every release candidate. Clear pass/fail, reasons when it's fail, and receipts for everything we tested.</p>

    </div>


    <div class="service">

      <div class="service-head">

        <svg class="service-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><path d="M14 2v6h6"/><path d="M9 13h6"/><path d="M9 17h6"/></svg>

        <span class="service-num">06</span>

      </div>

      <h4>Bug reports worth reading</h4>

      <p>Steps to reproduce, environment, expected vs. actual, console logs, a video. Every bug filed is a bug an engineer can fix without DM'ing anyone.</p>

    </div>

  </div>

</section>


<!-- Process -->

<section class="block" id="process">

  <div class="eyebrow">The process</div>

  <h2>Plug in once. <em>Offload</em> the queue forever.</h2>

  <p class="section-sub">

    We embed with your team in days — not quarters. Here's the full arc, from kickoff to green-lit releases.

  </p>


  <div class="process">

    <div class="step">

      <div class="step-num">01</div>

      <div class="step-label">Week 1</div>

      <h5>Intake</h5>

      <p>A kickoff call, access to your issue tracker and staging, a walkthrough of your product. We write the first pass of your test plan.</p>

    </div>

    <div class="step">

      <div class="step-num">02</div>

      <div class="step-label">Week 1–2</div>

      <h5>Calibrate</h5>

      <p>We run a pilot on live tickets. You tell us what matters, what's noise, and what "good enough" looks like for your team.</p>

    </div>

    <div class="step">

      <div class="step-num">03</div>

      <div class="step-label">Ongoing</div>

      <h5>Operate</h5>

      <p>Daily ticket review in your tracker. Regression sweeps before releases. A standing QA presence in your Slack without the headcount.</p>

    </div>

    <div class="step">

      <div class="step-num">04</div>

      <div class="step-label">Monthly</div>

      <h5>Report</h5>

      <p>Coverage map, bug metrics, flaky areas, and a straight recommendation on where your quality budget is best spent next month.</p>

    </div>

  </div>

</section>


<!-- Pricing -->

<section class="block" id="pricing">

  <div class="eyebrow">Pricing</div>

  <h2>Plans that scale with your <em>ticket volume</em>.</h2>

  <p class="section-sub">

    Flat monthly pricing. No per-bug billing, no surprise overages. Cancel or change tiers month to month.

  </p>


  <div class="pricing">

    <div class="plan">

      <div class="plan-name">Signal</div>

      <div class="plan-tag">Solo founders and small teams.</div>

      <div class="price">

        <span class="price-num">$2,400</span>

        <span class="price-unit">/ mo</span>

      </div>

      <div class="price-sub">Up to 30 tickets verified per month</div>

      <ul>

        <li>Dedicated QA lead</li>

        <li>Daily ticket verification</li>

        <li>Pre-release regression sweep</li>

        <li>Shared Slack channel</li>

        <li>Monthly report</li>

      </ul>

      <a href="#cta" class="btn btn-ghost">Start pilot</a>

    </div>


    <div class="plan featured">

      <div class="plan-name">Beacon</div>

      <div class="plan-tag">Shipping teams with steady velocity.</div>

      <div class="price">

        <span class="price-num">$5,800</span>

        <span class="price-unit">/ mo</span>

      </div>

      <div class="price-sub">Up to 100 tickets verified per month</div>

      <ul>

        <li>Everything in Signal</li>

        <li>Full cross-device matrix</li>

        <li>Weekly regression sweeps</li>

        <li>Accessibility baseline audit</li>

        <li>Release-gating sign-off</li>

        <li>Same-day triage</li>

      </ul>

      <a href="#cta" class="btn btn-primary">Start pilot</a>

    </div>


    <div class="plan">

      <div class="plan-name">Lighthouse</div>

      <div class="plan-tag">Multi-product teams &amp; scaleups.</div>

      <div class="price">

        <span class="price-num">Custom</span>

      </div>

      <div class="price-sub">Unlimited tickets, dedicated pod</div>

      <ul>

        <li>Everything in Beacon</li>

        <li>Dedicated testing pod (2–4 people)</li>

        <li>Custom test plan authoring</li>

        <li>Continuous regression + release gating</li>

        <li>Quarterly strategy review</li>

        <li>SLAs on turnaround</li>

      </ul>

      <a href="#cta" class="btn btn-ghost">Talk to us</a>

    </div>

  </div>

</section>


<!-- FAQ -->

<section class="block" id="faq">

  <div class="eyebrow">Common questions</div>

  <h2>Before you <em>ask</em>.</h2>


  <div class="faq">

    <details class="faq-item">

      <summary class="faq-q">Why manual QA when we have automated tests and AI code review?</summary>

      <p class="faq-a">Automated tests verify what you thought to test. AI reviews the code it wrote. Neither of them sits down with your product the way a real user will, notices the weird 0.5-second flash on slow networks, or finds the two-step path that causes your Stripe webhook to double-fire. Manual black-box testing complements your automated suite — it doesn't replace it.</p>

    </details>

    <details class="faq-item">

      <summary class="faq-q">How do you fit into our stack?</summary>

      <p class="faq-a">We work inside your existing tools — Linear, Jira, GitHub, Shortcut, whatever you use. You don't adopt a new process; we show up in yours. Your engineers tag a ticket as ready for QA, we pick it up, run it, and either verify it or file a repro'd bug right there.</p>

    </details>

    <details class="faq-item">

      <summary class="faq-q">Are your testers in-house or outsourced?</summary>

      <p class="faq-a">Every tester on Green Light is a vetted full-time employee. No sub-contractors, no marketplace labor, no 3am handoffs. You get the same faces on your product every day.</p>

    </details>

    <details class="faq-item">

      <summary class="faq-q">What's the pilot?</summary>

      <p class="faq-a">Two weeks, flat fee, full access to a Green Light tester working your real backlog. You see exactly what the service feels like before committing to a plan. If it doesn't click, you walk — no lock-in.</p>

    </details>

    <details class="faq-item">

      <summary class="faq-q">Do you handle sensitive or regulated products?</summary>

      <p class="faq-a">Yes. We sign NDAs up front and can work under custom access controls, dedicated staging environments, and on-prem where required. Talk to us about your specific compliance needs on the intake call.</p>

    </details>

    <details class="faq-item">

      <summary class="faq-q">What does a bug report actually look like?</summary>

      <p class="faq-a">Title, clear repro steps, environment (browser, OS, device, network), expected vs. actual behavior, a screen recording, console logs where relevant, and a severity assessment. Formatted for your tracker, ready for an engineer to pick up without a back-and-forth.</p>

    </details>

  </div>

</section>


<!-- CTA -->

<section class="cta-block" id="cta">

  <div class="cta-inner">

    <div class="eyebrow" style="justify-content: center;">Ready to ship</div>

    <h2>Green-light your next release.</h2>

    <p>Tell us about your product. We'll spin up a two-week pilot inside your tracker and show you — not tell you — what human QA looks like when it's done right.</p>

    <a href="mailto:hello@greenlight.qa" class="btn btn-primary">Book the pilot</a>

  </div>

</section>


<footer>

  <div class="brand"><span class="brand-dot"></span> Green Light</div>

  <div>

    <a href="#">Privacy</a>

    <a href="#">Terms</a>

    <a href="mailto:hello@greenlight.qa">Contact</a>

  </div>

  <div>© 2026 Green Light QA Co.</div>

</footer>


</body>

</html>