---
title: "Board update template – Display"
description: "A quarterly board update in one HTML page – headline numbers, what went well and what did not, a revenue chart, hiring and risk tables, and the decisions you need. Duplicate it, or hand the prompt to your agent."
---

# Board update template

A quarterly board update in one HTML page – headline numbers, what went well and what did not, a revenue chart, hiring and risk tables, and the decisions you need. Duplicate it, or hand the prompt to your agent.

- Format: HTML
- Detail page: https://display.dev/templates/board-update
- Raw template file: https://display.dev/template-sources/board-update.html
- One-click anonymous publish (no account): POST the file to https://api.display.dev/v1/public/artifacts as multipart/form-data (`file` field)

## Agent prompt

Write this quarter's board update on Display. Fetch https://display.dev/template-sources/board-update.html as the starting point and keep its structure: four headline numbers with change versus last quarter; what went well; what did not; what we are changing; asks of the board; a revenue-by-quarter chart; a hiring table; a risks table with likelihood, mitigation, and owner; the decisions the board is asked to make. Fill it from the finance close, the hiring plan, and the risk register. Keep the file self-contained (inline CSS and SVG, no scripts).

Publish it with the Display MCP publish tool if connected. Otherwise POST the file to https://api.display.dev/v1/public/artifacts as multipart/form-data (`file` field, optional `name`) – no account needed. You'll get back `previewUrl` (the link to share) and `claimUrl` (one-shot link to take ownership). Reply with both.

## What this template is for

The quarter on one page, written so a board member reads it on a phone
between meetings. Four numbers, an honest split between what worked and what
did not, and a closing section that names the decisions you need from them.

The sample is Halden Bikes, a fictional e-bike company in Copenhagen, for Q3
2026. The structure fits a monthly investor update as well.

## How teams use it

- **Drafted by an agent from the close.** Point the agent at the finance
  numbers, the hiring plan, and the risk register. You write the two paragraphs
  that need a founder's judgment.
- **Reviewed before the board sees it.** Co-founders and the CFO comment on the
  page. The agent publishes the next version to the same URL, and the board
  gets one link.
- **Shared with named people.** Add each board member's email. They open it
  with a one-time password, no account.

## What's inside

Headline numbers, four narrative sections, a six-quarter revenue chart, a
hiring table, a risk table, and the decisions section. Inline CSS and SVG, no
scripts.

## Template source

````html
<!doctype html>
<!-- Template: Board update. Replace the sample content and keep the structure. Sections: Header and document details, The quarter in four numbers (headline figures + revenue chart), What went well, What did not, What we are changing, People, Risks, Asks of the board (three decisions + summary table), Footer. -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light">
<title>Q3 2026 board update – Halden Bikes</title>
<meta name="description" content="Halden Bikes board update for the third quarter of 2026: revenue, margin, units, runway, what changed, and three decisions for the 14 October board meeting.">
<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=Archivo+Black&family=Archivo:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root{
  --bg: oklch(0.95 0.08 90);
  --bg-deep: oklch(0.89 0.11 88);
  --ochre: oklch(0.60 0.11 78);
  --ink: oklch(0.18 0.012 80);
  --ink-2: oklch(0.42 0.025 80);
  --on-ink: oklch(0.95 0.08 90);
  --on-ink-2: oklch(0.82 0.07 90);
  --display: "Archivo Black", "Arial Black", ui-sans-serif, sans-serif;
  --text: Archivo, ui-sans-serif, sans-serif;
  --rule-thick: 6px;
  --rule: 2px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:Archivo, ui-sans-serif, sans-serif;
  font-size:1rem;
  line-height:1.55;
}
.wrap{max-width:64rem;margin-inline:auto;padding-inline:1rem}
@media (min-width:52rem){.wrap{padding-inline:2.5rem}}
p{margin:0 0 1rem}
strong{font-weight:600}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Header */
.top{padding-top:1.5rem}
.brand{
  display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1.5rem;
  border-bottom:var(--rule-thick) solid var(--ink);padding-bottom:.75rem;
}
.wordmark{font-family:var(--display);font-size:1.5rem;letter-spacing:-0.02em;text-transform:uppercase;line-height:1}
.brand-line{font-size:.9375rem;color:var(--ink-2);font-weight:500}
h1{
  font-family:var(--display);font-weight:400;
  font-size:clamp(2.5rem, 1.6rem + 4.2vw, 4rem);
  line-height:.98;letter-spacing:-0.02em;margin:1.75rem 0 1rem;max-width:14ch;
}
.standfirst{
  font-size:clamp(1.125rem, 1rem + .6vw, 1.375rem);line-height:1.4;font-weight:500;
  max-width:34em;margin:0 0 1.75rem;
}
.doc-info{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.5rem;margin:0;
  padding:1rem 0 1.25rem;border-top:var(--rule) solid var(--ink);border-bottom:var(--rule) solid var(--ink);
  font-size:.9375rem;
}
@media (min-width:52rem){.doc-info{grid-template-columns:repeat(4,minmax(0,1fr))}}
.doc-info dt{color:var(--ink-2);margin:0;font-weight:500}
.doc-info dd{margin:0;font-weight:600}

/* Section rhythm: heading in the margin, body on the right */
.sec{display:grid;gap:1rem;border-top:var(--rule-thick) solid var(--ink);padding:1.25rem 0 1.5rem;margin-top:.75rem}
@media (min-width:52rem){.sec{grid-template-columns:13rem minmax(0,1fr);gap:1rem 3rem;padding-top:1.5rem}}
.sec h2,.asks h2{
  font-family:var(--display);font-weight:400;
  font-size:clamp(1.5rem, 1.25rem + 1vw, 1.9rem);
  line-height:1.05;letter-spacing:-0.02em;margin:0;
}
.sec>*,.asks .wrap>*,.ledger>*,.chart>*,.sec-body{min-width:0}
.sec-body>:first-child{margin-top:0}
.sec-body>:last-child{margin-bottom:0}
.pair{display:grid}
@media (min-width:52rem){.pair{grid-template-columns:1fr 1fr;gap:0 3rem}.pair .sec{grid-template-columns:minmax(0,1fr);gap:1rem;align-content:start}}

/* Headline numbers */
.figures{margin-top:2.5rem}
.figures h2,.ledger{grid-column:1 / -1}
.ledger{
  display:grid;
  border-top:var(--rule-thick) solid var(--ink);border-bottom:var(--rule-thick) solid var(--ink);
  font-feature-settings:"tnum" 1;
}
@media (min-width:52rem){.ledger{grid-template-columns:1.1fr 1fr}}
.ledger-lead{padding:1.25rem 0 1.5rem;border-bottom:var(--rule) solid var(--ink)}
@media (min-width:52rem){.ledger-lead{border-bottom:0;border-right:var(--rule) solid var(--ink);padding-right:2rem}}
.fig-row{padding:1rem 0;border-bottom:var(--rule) solid var(--ink)}
.fig-row:last-child{border-bottom:0}
@media (min-width:52rem){.fig-row{padding:1rem 0 1rem 2rem}}
.fig-label{margin:0;font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.fig-value{
  font-family:var(--display);font-size:clamp(4.75rem, 2rem + 7.5vw, 7.5rem);
  line-height:.95;letter-spacing:-0.03em;margin:.35rem 0 .6rem;
}
.fig-delta{font-family:var(--display);font-size:1.375rem;margin:0;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;line-height:1.2}
.fig-delta small{font-family:var(--text);font-weight:500;font-size:1rem;color:var(--ink-2)}
.fig-note{margin:.5rem 0 0;color:var(--ink-2);font-size:.9375rem;max-width:30em;line-height:1.45}
.fig-line{display:flex;align-items:baseline;gap:.75rem;flex-wrap:wrap;margin:.2rem 0 .1rem}
.fig-value-s{font-family:var(--display);font-size:clamp(2.25rem, 1.75rem + 1.6vw, 3rem);line-height:1;letter-spacing:-0.02em;margin:0}
.fig-delta-s{font-family:var(--display);font-size:1.125rem;margin:0;display:inline-flex;align-items:center;gap:.35rem}
.fig-delta-s small{font-family:var(--text);font-weight:500;font-size:.9375rem;color:var(--ink-2)}
.up{width:.7em;height:.7em;fill:currentColor;flex:none}

/* Revenue chart */
.chart{grid-column:1 / -1;margin:1.75rem 0 0;display:grid;gap:1rem}
@media (min-width:52rem){.chart{grid-template-columns:13rem minmax(0,1fr);gap:1rem 3rem;align-items:start}.chart figcaption{order:-1;padding-top:.35rem}}
.chart svg{width:100%;height:auto;display:block;color:var(--ink);font-family:var(--text);font-feature-settings:"tnum" 1}
.chart text{fill:var(--ink)}
.chart .muted{fill:var(--ink-2)}
.chart .past{fill:var(--ochre)}
.chart .now{fill:var(--ink)}
.chart .d{font-family:var(--display)}
.chart .row-label{font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;fill:var(--ink-2)}
.chart figcaption{font-size:.9375rem;line-height:1.5;color:var(--ink-2);margin:0}
.chart figcaption strong{color:var(--ink);font-weight:600;display:block;margin-bottom:.25rem}
.legend{display:flex;gap:1rem;margin-top:.75rem;font-size:.8125rem;color:var(--ink)}
.legend span::before{content:"";display:inline-block;width:.75em;height:.75em;margin-right:.4em;vertical-align:-.05em}
.legend .l-past::before{background:var(--ochre)}
.legend .l-now::before{background:var(--ink)}

/* Numbered points */
.points{list-style:none;margin:0;padding:0;counter-reset:pt}
.points li{position:relative;padding-left:2.75rem;margin:0 0 1rem;counter-increment:pt}
.points li:last-child{margin-bottom:0}
.points li::before{content:counter(pt);position:absolute;left:0;top:.05em;font-family:var(--display);font-size:1.5rem;line-height:1}
.points p{margin:0}
.points,.sec-body>p,.decisions p{max-width:40em}

/* Tables */
table{width:100%;border-collapse:collapse;font-size:.9375rem;font-feature-settings:"tnum" 1}
caption{text-align:left;font-size:.875rem;color:var(--ink-2);padding:0 0 .5rem}
th,td{text-align:left;vertical-align:top;padding:.65rem 1rem .65rem 0;border-bottom:1px solid var(--ink);line-height:1.45}
th:last-child,td:last-child{padding-right:0}
thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--ink-2);border-bottom:var(--rule) solid var(--ink);padding-top:0}
tbody th{font-weight:600}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.risks table{min-width:40rem}
.col-r{width:26%}
.col-l{width:6.5rem}
.col-o{width:10rem}

/* Asks: the closing band */
.asks{background:var(--ink);color:var(--on-ink);margin-top:1rem;padding:2.25rem 0 2.5rem}
.asks .wrap{display:grid;gap:1.25rem}
@media (min-width:52rem){.asks .wrap{grid-template-columns:13rem minmax(0,1fr);gap:1rem 3rem}}
.asks p{color:var(--on-ink-2)}
.asks .lede{color:var(--on-ink);font-size:1.125rem;font-weight:500;margin-top:0}
.decisions{list-style:none;margin:1.5rem 0 0;padding:0;counter-reset:dc;border-top:var(--rule) solid var(--on-ink)}
.decisions li{counter-increment:dc;display:grid;grid-template-columns:3.25rem minmax(0,1fr);border-bottom:var(--rule) solid var(--on-ink);padding:1.25rem 0}
.decisions li::before{content:counter(dc);font-family:var(--display);font-size:2.5rem;line-height:.9;color:var(--on-ink)}
.decisions h3{font-family:var(--display);font-weight:400;font-size:1.2rem;line-height:1.25;margin:0 0 .5rem;letter-spacing:-0.01em}
.decisions p{margin:0 0 .5rem}
.decisions p:last-child{margin-bottom:0}
.decisions p strong{color:var(--on-ink);font-weight:600}
.asks .table-scroll{margin-top:2rem}
.on-ink{min-width:30rem}
.on-ink caption{color:var(--on-ink-2)}
.on-ink th,.on-ink td{border-bottom-color:var(--on-ink)}
.on-ink thead th{color:var(--on-ink-2);border-bottom-color:var(--on-ink)}
.on-ink tbody td{color:var(--on-ink-2)}
.on-ink tbody th,.on-ink tbody td.rec{color:var(--on-ink)}
.close{margin:2rem 0 0;color:var(--on-ink);font-family:var(--display);font-size:1.125rem;line-height:1.4;max-width:34em}

/* Footer */
footer{padding:1.5rem 0 3rem;font-size:.875rem;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;line-height:1.5}
</style>
</head>
<body>
<main>
  <div class="wrap">
    <header class="top">
      <div class="brand">
        <span class="wordmark">Halden</span>
        <span class="brand-line">Halden Bikes · Copenhagen · Board update no. 7</span>
      </div>
      <h1>Q3 2026 board update</h1>
      <p class="standfirst">Our best quarter so far. Revenue passed €3M, gross margin moved up for the fifth quarter in a row, and we shipped more than 2,000 bikes for the first time. Two things did not go to plan: Berlin slipped to November and returns crept up. Both are explained below, with what we are changing and the three decisions we need from you on 14 October.</p>
      <dl class="doc-info">
        <div><dt>Prepared by</dt><dd>Mette Kjaer, CEO</dd></div>
        <div><dt>For</dt><dd>Board meeting, 14 October 2026</dd></div>
        <div><dt>Period</dt><dd>1 July to 30 September 2026</dd></div>
        <div><dt>Circulation</dt><dd>Board and observers</dd></div>
      </dl>
    </header>

    <section class="sec figures" aria-labelledby="h-figures">
      <h2 id="h-figures">The quarter in four numbers</h2>
        <div class="ledger">
          <div class="ledger-lead">
            <p class="fig-label">Revenue, Q3 2026</p>
            <p class="fig-value">€3.1M</p>
            <p class="fig-delta"><svg class="up" viewBox="0 0 10 10" aria-hidden="true"><path d="M5 1 9 9H1z"/></svg><span class="sr">up</span>27% <small>quarter on quarter</small></p>
            <p class="fig-note">€2.44M in Q2. 2.2× the same quarter last year. First quarter above the €3M mark we set at the Series A.</p>
          </div>
          <div class="ledger-side">
            <div class="fig-row">
              <p class="fig-label">Gross margin</p>
              <div class="fig-line">
                <p class="fig-value-s">41%</p>
                <p class="fig-delta-s"><svg class="up" viewBox="0 0 10 10" aria-hidden="true"><path d="M5 1 9 9H1z"/></svg><span class="sr">up</span>3 pt</p>
              </div>
              <p class="fig-note">38% in Q2. The second motor supplier and rail freight did most of the work.</p>
            </div>
            <div class="fig-row">
              <p class="fig-label">Units shipped</p>
              <div class="fig-line">
                <p class="fig-value-s">2,140</p>
                <p class="fig-delta-s"><svg class="up" viewBox="0 0 10 10" aria-hidden="true"><path d="M5 1 9 9H1z"/></svg><span class="sr">up</span>24%</p>
              </div>
              <p class="fig-note">1,720 in Q2. First quarter above 2,000, and no discounting to get there.</p>
            </div>
            <div class="fig-row">
              <p class="fig-label">Runway</p>
              <div class="fig-line">
                <p class="fig-value-s">22 months</p>
                <p class="fig-delta-s"><small>at plan</small></p>
              </div>
              <p class="fig-note">€9.8M cash on 30 September. Plan burn averages €445k a month through 2027, Berlin included.</p>
            </div>
          </div>
        </div>

        <figure class="chart">
          <svg viewBox="0 0 560 372" role="img" aria-label="Revenue rose in each of the last six quarters, from 1.05 million euro in Q2 2025 to 3.1 million euro in Q3 2026, the first quarter above the 3 million mark. Gross margin rose from 31 percent to 41 percent over the same period.">
            <line x1="4" y1="76.5" x2="556" y2="76.5" stroke="currentColor" stroke-width="1" stroke-dasharray="3 4" opacity=".75"/>
            <text x="6" y="70" font-size="14" font-weight="600" class="muted">€3M mark</text>

            <rect class="past" x="20" y="202.3" width="60" height="67.7"/>
            <rect class="past" x="112" y="181" width="60" height="89"/>
            <rect class="past" x="204" y="165.5" width="60" height="104.5"/>
            <rect class="past" x="296" y="146.8" width="60" height="123.2"/>
            <rect class="past" x="388" y="112.6" width="60" height="157.4"/>
            <rect class="now" x="480" y="70" width="60" height="200"/>

            <text x="50" y="192" text-anchor="middle" font-size="16" font-weight="600" class="muted">€1.05M</text>
            <text x="142" y="171" text-anchor="middle" font-size="16" font-weight="600" class="muted">€1.38M</text>
            <text x="234" y="155.5" text-anchor="middle" font-size="16" font-weight="600" class="muted">€1.62M</text>
            <text x="326" y="136.8" text-anchor="middle" font-size="16" font-weight="600" class="muted">€1.91M</text>
            <text x="418" y="102.6" text-anchor="middle" font-size="16" font-weight="600" class="muted">€2.44M</text>
            <text x="510" y="58" text-anchor="middle" font-size="26" class="d">€3.1M</text>

            <line x1="4" y1="270" x2="556" y2="270" stroke="currentColor" stroke-width="4"/>

            <text x="50" y="293" text-anchor="middle" font-size="15" font-weight="600">Q2 25</text>
            <text x="142" y="293" text-anchor="middle" font-size="15" font-weight="600">Q3 25</text>
            <text x="234" y="293" text-anchor="middle" font-size="15" font-weight="600">Q4 25</text>
            <text x="326" y="293" text-anchor="middle" font-size="15" font-weight="600">Q1 26</text>
            <text x="418" y="293" text-anchor="middle" font-size="15" font-weight="600">Q2 26</text>
            <text x="510" y="293" text-anchor="middle" font-size="15" class="d">Q3 26</text>

            <line x1="4" y1="308" x2="556" y2="308" stroke="currentColor" stroke-width="1"/>
            <text x="6" y="325" class="row-label">Gross margin</text>
            <text x="50" y="353" text-anchor="middle" font-size="17" font-weight="600" class="muted">31%</text>
            <text x="142" y="353" text-anchor="middle" font-size="17" font-weight="600" class="muted">33%</text>
            <text x="234" y="353" text-anchor="middle" font-size="17" font-weight="600" class="muted">34%</text>
            <text x="326" y="353" text-anchor="middle" font-size="17" font-weight="600" class="muted">36%</text>
            <text x="418" y="353" text-anchor="middle" font-size="17" font-weight="600" class="muted">38%</text>
            <text x="510" y="353" text-anchor="middle" font-size="21" class="d">41%</text>
          </svg>
          <figcaption>
            <strong>Revenue by quarter, with gross margin underneath.</strong>
            Q3 2026 is the first quarter above €3M and the fifth quarter in a row with a margin gain. The dashed line is the €3M quarterly mark from the Series A plan; we crossed it two quarters early. Management accounts, unaudited.
            <span class="legend"><span class="l-past">Earlier quarters</span><span class="l-now">Q3 2026</span></span>
          </figcaption>
        </figure>
    </section>

    <div class="pair">
    <section class="sec" aria-labelledby="h-well">
      <h2 id="h-well">What went well</h2>
      <div class="sec-body">
        <ol class="points">
          <li><p><strong>Demand held through summer without a single discount.</strong> 2,140 bikes shipped: 1,890 online and 250 from the Copenhagen store. July is normally our slowest month; this year it came in 12% above June. Average order value rose to €1,449 from €1,419 as more riders add the rack and the second battery at checkout.</p></li>
          <li><p><strong>The Halden Cargo launched on 2 September and took 610 pre-orders in four weeks.</strong> That is €1.15M of deposit-backed backlog shipping from November, and the first product we have launched from a waitlist rather than a campaign. Nearly half the pre-orders came from existing riders.</p></li>
          <li><p><strong>Gross margin reached 41%, up 3 points.</strong> The second motor supplier we contracted in Q2 cut motor cost by 11% (1.6 pt). Moving frame shipments from air to rail took €38 off every bike (1.1 pt). Accessory pricing did the rest (0.3 pt). None of it came from the price list, which we held.</p></li>
          <li><p><strong>Service got faster.</strong> The Copenhagen workshop went to two shifts in July. Median repair turnaround fell from 9 days to 4, and the post-service score rose from 54 to 61. Kasper Nygaard started as CTO on 1 August; the firmware team is now four people and shipped the range-estimate fix that riders had been asking for since spring.</p></li>
        </ol>
      </div>
    </section>

    <section class="sec" aria-labelledby="h-not">
      <h2 id="h-not">What did not</h2>
      <div class="sec-body">
        <ol class="points">
          <li><p><strong>Berlin slipped from September to November.</strong> The building permit for the shopfront took eleven weeks instead of six. The store manager started on 15 September as planned, so we are paying a salary against a store that is not open yet. €140k of launch marketing moved to Q4 with the opening, and the Q4 revenue plan for Germany is now about €300k lighter.</p></li>
          <li><p><strong>Returns rose from 4.1% to 5.6%.</strong> That is 120 bikes back in the quarter. Two-thirds cite frame size, and almost all of those are riders between 175 and 182 cm who were sent a medium frame by the size guide when a large fits them better. It is a fixable data problem, and it cost us about €85k in refurbishment and re-shipping.</p></li>
          <li><p><strong>Our cell supplier cut our Q4 allocation by 15%.</strong> We have cells for October and November production. December is covered only if a second supplier qualifies in time, which is why decision 1 is on the agenda.</p></li>
          <li><p><strong>Paid acquisition got more expensive.</strong> Paid CAC rose from €178 to €212 as summer auction prices on social climbed. Referrals kept blended CAC at €146 (Q2: €131), but we should not count on referrals hiding this for another quarter.</p></li>
        </ol>
      </div>
    </section>
    </div>

    <section class="sec" aria-labelledby="h-change">
      <h2 id="h-change">What we are changing</h2>
      <div class="sec-body">
        <ol class="points">
          <li><p><strong>The size guide becomes a fit quiz.</strong> Eight questions including inseam, and a recommendation that errs toward the larger frame at the boundary. Live on 20 October. Test-ride vans run in Copenhagen, Aarhus and Hamburg from November so riders in the boundary sizes can try both frames before they buy. Target: returns under 4% by Q1.</p></li>
          <li><p><strong>The second cell supplier moves from Q1 2027 to Q4 2026.</strong> Qualification takes eight weeks and needs a €380k deposit, which is decision 1. With it, December production is safe and we carry a six-week cell buffer into 2027.</p></li>
          <li><p><strong>Berlin opens on 19 November with the launch budget intact.</strong> The permit was signed on 28 September and the fit-out contractor is on a penalty clause. The €140k of launch marketing lands in the opening month instead of being spread across the quarter.</p></li>
          <li><p><strong>Paid social drops by 30%; referrals and test rides take the money.</strong> Blended CAC is capped at €150 for Q4. Freja Dahl owns the number and reports it weekly in the leadership meeting.</p></li>
        </ol>
      </div>
    </section>

    <section class="sec" aria-labelledby="h-people">
      <h2 id="h-people">People</h2>
      <div class="sec-body">
        <p>Headcount is 47, up from 38 at the end of Q2 and two behind plan. Both gaps are customer-service roles that wait for Berlin. The table lists the roles that move the plan.</p>
        <table>
          <caption>Hiring that affects the plan, as of 30 September 2026</caption>
          <thead>
            <tr><th scope="col">Role</th><th scope="col">Status</th><th scope="col">Start</th></tr>
          </thead>
          <tbody>
            <tr><th scope="row">Head of Operations</th><td>Offer accepted</td><td>1 November 2026</td></tr>
            <tr><th scope="row">Store manager, Berlin</th><td>Started</td><td>15 September 2026</td></tr>
            <tr><th scope="row">Firmware engineer (2 roles)</th><td>1 started, 1 in final round</td><td>1 October 2026 and December 2026</td></tr>
            <tr><th scope="row">Supply chain lead</th><td>Interviewing, shortlist of 3</td><td>December 2026</td></tr>
            <tr><th scope="row">Finance manager</th><td>Offer out</td><td>1 December 2026</td></tr>
            <tr><th scope="row">Customer service, Hamburg (3 roles)</th><td>Opens in November</td><td>January 2027</td></tr>
            <tr><th scope="row">Head of Brand</th><td>Paused until the Series B</td><td>To be decided</td></tr>
          </tbody>
        </table>
      </div>
    </section>

    <section class="sec risks" aria-labelledby="h-risks">
      <h2 id="h-risks">Risks</h2>
      <div class="sec-body">
        <p>The risks we are watching, in the order they worry us. Likelihood is our own judgement for the next two quarters.</p>
        <div class="table-scroll">
          <table>
            <caption>Risk register, top five, reviewed 2 October 2026</caption>
            <thead>
              <tr><th scope="col" class="col-r">Risk</th><th scope="col" class="col-l">Likelihood</th><th scope="col">Mitigation</th><th scope="col" class="col-o">Owner</th></tr>
            </thead>
            <tbody>
              <tr><th scope="row">Cell allocation short for December production</th><td>High</td><td>Second supplier qualified by mid-December (decision 1); six-week buffer stock built from January</td><td>Jonas Holm, COO</td></tr>
              <tr><th scope="row">Returns stay above 5%</th><td>Medium</td><td>Fit quiz live 20 October; test-ride vans from November; review of the medium and large frame geometry in Q1</td><td>Sofie Lund, Product</td></tr>
              <tr><th scope="row">Winter demand dips deeper than plan</th><td>Medium</td><td>Cargo pre-order backlog covers six weeks of Q4 production; paid spend can be cut within a week</td><td>Freja Dahl, Growth</td></tr>
              <tr><th scope="row">Import duty on frames rises in 2027</th><td>Medium</td><td>Price list held to Q1; a Portuguese frame supplier has quoted and sends samples in November</td><td>Mette Kjaer, CEO</td></tr>
              <tr><th scope="row">Berlin slips again</th><td>Low</td><td>Permit signed 28 September; contractor on a penalty clause; opening date confirmed weekly</td><td>Anders Winther, Retail</td></tr>
            </tbody>
          </table>
        </div>
      </div>
    </section>
  </div>

  <section class="asks" aria-labelledby="h-asks">
    <div class="wrap">
      <h2 id="h-asks">Asks of the board</h2>
      <div>
        <p class="lede">Three decisions, one page. Everything above feeds into these.</p>
        <ol class="decisions">
          <li>
            <div>
              <h3>Approve a €380k deposit for a second cell supplier</h3>
              <p>Paid in October and credited against cell purchases from January. It takes runway from 22 to 21 months and removes the only thing that can stop December production.</p>
              <p><strong>If we wait:</strong> about 600 fewer bikes in December, roughly €900k of revenue, in the month the Cargo backlog starts shipping.</p>
            </div>
          </li>
          <li>
            <div>
              <h3>Approve the Berlin lease amendment</h3>
              <p>The landlord offers three months rent-free as compensation for the permit delay if we extend the term from three years to five. That is €32k back in Q4 and €260k of extra commitment in years four and five. The shareholders' agreement requires board approval above €250k, which is why it is here.</p>
              <p><strong>If we decline:</strong> we keep the three-year term, pay full rent from November, and lose nothing else. We recommend taking it; the location is right and the rent is fixed.</p>
            </div>
          </li>
          <li>
            <div>
              <h3>Start the Series B in January 2027, not April</h3>
              <p>22 months looks comfortable, but the Cargo ramp needs about €2M of inventory in the first half of 2027, and we would rather raise on Q4 numbers with 18 months of runway than on Q1 numbers with 15.</p>
              <p><strong>What we need:</strong> agreement on the timing, reactions to the deck draft by 30 November, and the introductions on the list we circulated in September.</p>
            </div>
          </li>
        </ol>

        <div class="table-scroll">
        <table class="on-ink">
          <caption>The three decisions side by side</caption>
          <thead>
            <tr><th scope="col">Decision</th><th scope="col">We recommend</th><th scope="col">Cash effect</th><th scope="col">Runway after</th></tr>
          </thead>
          <tbody>
            <tr><th scope="row">1. Second cell supplier deposit</th><td class="rec">Approve</td><td>€380k out in October</td><td>21 months</td></tr>
            <tr><th scope="row">2. Berlin lease amendment</th><td class="rec">Approve</td><td>€32k back in Q4; €260k more in 2030 and 2031</td><td>22 months</td></tr>
            <tr><th scope="row">3. Series B in January</th><td class="rec">Agree the timing</td><td>None until close</td><td>22 months</td></tr>
          </tbody>
        </table>
        </div>

        <p class="close">We take the three votes at the start of the meeting. The Cargo demo is in the courtyard afterwards, so bring a helmet.</p>
      </div>
    </div>
  </section>

  <div class="wrap">
    <footer>
      <span>Halden Bikes ApS, Copenhagen</span>
      <span>Board update no. 7 · Q3 2026</span>
      <span>Prepared 6 October 2026 for the meeting on 14 October 2026</span>
      <span>Management accounts, unaudited</span>
      <span>Previous update: Q2 2026, 8 July 2026</span>
    </footer>
  </div>
</main>
</body>
</html>
````
