{
  "schema_version": 1,
  "entity_slug": "tnaado-inc",
  "entity": "TNAADO Inc.",
  "jurisdiction": "Ontario, Canada",
  "product_slug": "the-dispatch",
  "product": "The Dispatch",
  "policy_slug": "terms-of-service",
  "policy": "Terms of Service",
  "source_effective_date": "2026-01-30",
  "source_updated_date": "2026-09-24",
  "source_version": null,
  "canonical_url": "https://dispatch.tnaado.ca/terms",
  "captured_at": "2026-10-25T20:53:14+00:00",
  "source_html": "<!DOCTYPE html>\n<html lang=\"en-CA\" dir=\"ltr\">\n<head>\n    <!-- Environment Variables -->\n<script>\n    // Environment variables injected at build time\n    window.VITE_SUPABASE_URL = '';\n    window.VITE_SUPABASE_ANON_KEY = '';\n    window.VITE_API_URL = '';\n    window.VITE_STRIPE_PUBLIC_KEY = '';\n\n    // Make config globally available\n    window.ENV = {\n        SUPABASE_URL: window.VITE_SUPABASE_URL,\n        SUPABASE_ANON_KEY: window.VITE_SUPABASE_ANON_KEY,\n        API_URL: window.VITE_API_URL,\n        STRIPE_PUBLIC_KEY: window.VITE_STRIPE_PUBLIC_KEY\n    };\n</script>\n\n    <meta charset=\"UTF-8\">\n  <meta name=\"google-adsense-account\" content=\"ca-pub-3228722733199849\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, viewport-fit=cover\">\n    <meta name=\"robots\" content=\"index, follow\">\n\n    <title>Terms of Service | TNAADO</title>\n    <meta name=\"description\" content=\"Terms of Service for tnaado.ca, the Toronto newsroom of TNAADO Inc. The rules that govern reading the Dispatch, watching the Show and using the site.\">\n    <link rel=\"canonical\" href=\"https://dispatch.tnaado.ca/terms\">\n\n    <meta property=\"og:type\" content=\"website\">\n    <meta property=\"og:url\" content=\"https://dispatch.tnaado.ca/terms\">\n    <meta property=\"og:title\" content=\"Policies and disclosures\">\n    <meta property=\"og:description\" content=\"Who we are, how paid content is handled, and the terms for reading and subscribing.\">\n    <meta property=\"og:site_name\" content=\"TNAADO Media\">\n    <meta property=\"og:locale\" content=\"en_CA\">\n\n    <meta name=\"twitter:card\" content=\"summary_large_image\">\n    <meta name=\"twitter:title\" content=\"Policies and disclosures\">\n    <meta name=\"twitter:description\" content=\"Who we are, how paid content is handled, and the terms for reading and subscribing.\">\n\n    <link rel=\"icon\" type=\"image/x-icon\" href=\"/favicon.ico\">\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\">\n    <link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\">\n    <link rel=\"manifest\" href=\"/site.webmanifest\">\n\n    <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n    <link rel=\"preload\" href=\"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400;1,9..144,500&family=IBM+Plex+Sans:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\" as=\"style\" onload=\"this.onload=null;this.rel='stylesheet'\">\n    <noscript><link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;1,9..144,400;1,9..144,500&family=IBM+Plex+Sans:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\"></noscript>\n\n    <link rel=\"stylesheet\" href=\"/css/main.css?v=11d6be3e\">\n    <link rel=\"stylesheet\" href=\"/css/components/motion.css?v=1cb84bf4\">\n    <link rel=\"stylesheet\" href=\"/css/pages/legal.css?v=e5bc0d3c\">\n\n    <script>window.TN_GA_ID = 'G-Y561C98Y8Q';</script>\n\n    <script type=\"application/ld+json\">\n    {\"@context\":\"https://schema.org\",\"@type\":\"WebPage\",\"name\":\"Terms of Service\",\"description\":\"Terms of Service for tnaado.ca, the Toronto newsroom of TNAADO Inc.\",\"url\":\"https://dispatch.tnaado.ca/terms\",\"inLanguage\":\"en-CA\",\"datePublished\":\"2026-01-30\",\"dateModified\":\"2026-09-24\",\"isPartOf\":{\"@type\":\"WebSite\",\"name\":\"TNAADO\",\"url\":\"https://dispatch.tnaado.ca\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"TNAADO\"}}\n    </script>\n    <script type=\"application/ld+json\">\n    {\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://dispatch.tnaado.ca\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Terms of Service\",\"item\":\"https://dispatch.tnaado.ca/terms\"}]}\n    </script>\n    <meta name=\"keywords\" content=\"tnaado, terms, service\">\n    <meta name=\"author\" content=\"Ethan Daley\">\n    <meta name=\"theme-color\" content=\"#0a0a0a\">\n    <meta property=\"og:image\" content=\"https://dispatch.tnaado.ca/assets/og/legal.png\">\n  <meta property=\"og:image:secure_url\" content=\"https://dispatch.tnaado.ca/assets/og/legal.png\">\n  <meta property=\"og:image:type\" content=\"image/png\">\n  <meta property=\"og:image:width\" content=\"1200\">\n  <meta property=\"og:image:height\" content=\"630\">\n  <meta property=\"og:image:alt\" content=\"TNAADO Media, Toronto. Policies and disclosures.\">\n    <meta name=\"twitter:image\" content=\"https://dispatch.tnaado.ca/assets/og/legal.png\">\n  <meta name=\"twitter:image:alt\" content=\"TNAADO Media, Toronto. Policies and disclosures.\">\n  <meta name=\"twitter:site\" content=\"@tnaado\">\n\n    <!-- Theme opt-in: manual light/dark toggle only (never OS prefers-color-scheme).\n         Dark is the default; reads localStorage 'tn-theme' before first paint so\n         there's no flash of the wrong theme. Shared key/attribute with index.html/dispatch.html. -->\n    <script>\n      (function () {\n        try {\n          var t = localStorage.getItem('tn-theme');\n          if (t === 'light') {\n            document.documentElement.setAttribute('data-theme', 'light');\n            var m = document.querySelector('meta[name=\"theme-color\"]');\n            if (m) m.setAttribute('content', '#faf6ec');\n          }\n        } catch (e) {}\n      })();\n    </script>\n\n<link rel=\"stylesheet\" href=\"/css/page-flow.css?v=d4f8df8f\">\n  <!-- TN-AUTH/ADS (defer; auth before ads per JS contract) -->\n  <script src=\"/assets/js/auth.js?v=bb75fd69\" defer></script>\n  <script src=\"/assets/js/ads.js?v=9d247714\" defer></script>\n  <script src=\"/js/consent.js?v=01b852f0\" defer></script>\n  <script src=\"/js/consent-banner.js?v=831eabd3\" defer></script>\n  <link rel=\"stylesheet\" href=\"/css/chrome.css?v=b9ce3d49\">\n<style id=\"tn-page-restore\">\n/* Restored 2026-09-09: page-specific rules lost when the stale\n   tn-chrome-css block was deleted. Page-scoped, so they stay here. */\n[data-theme=\"light\"] .legal-frame, [data-theme=\"light\"] .legal-hero__meta, [data-theme=\"light\"] .legal-body__toc, [data-theme=\"light\"] .legal-foot { border-color: rgba(var(--fg-rgb), .10); }\n[data-theme=\"light\"] .legal-hero, [data-theme=\"light\"] .legal-section { border-color: rgba(var(--fg-rgb), .08); }\n[data-theme=\"light\"] .legal-hero::before { display: none; }\n[data-theme=\"light\"] .legal-body__toc-link { border-color: rgba(var(--fg-rgb), .06); }\n[data-theme=\"light\"] .legal-body__toc-num { color: rgba(var(--fg-rgb), .30); }\n[data-theme=\"light\"] .legal-section__num { color: rgba(var(--fg-rgb), .25); }\n[data-theme=\"light\"] .legal-section__body, [data-theme=\"light\"] .legal-section__body p, [data-theme=\"light\"] .legal-section__body li { color: rgba(var(--fg-rgb), .85); }\n[data-theme=\"light\"] .legal-foot { background: var(--surface-2); }\n</style>\n</head>\n\n<body class=\"legal-page\">\n<!-- ▰▰ TN-CHROME-HEADER ▰▰ -->\n<header class=\"eh-header\" role=\"banner\">\n  <!-- TN-TICKER: shared breaking-news bar. Styles live in css/chrome.css. -->\n  <div class=\"tn-ticker\" id=\"tnTicker\" hidden>\n    <span class=\"tn-ticker-label\" aria-hidden=\"true\">Latest</span>\n    <div class=\"tn-ticker-viewport\">\n      <div class=\"tn-ticker-track\" id=\"tnTickerTrack\"></div>\n    </div>\n  </div>\n  <script>\n  (function () {\n    var SB_URL = (window.VITE_SUPABASE_URL || 'https://jlnvklonulnlwpcezybj.supabase.co');\n    var SB_KEY = (window.VITE_SUPABASE_ANON_KEY || 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpsbnZrbG9udWxubHdwY2V6eWJqIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzgxNzY1MDQsImV4cCI6MjA5Mzc1MjUwNH0.XlWaHf5UOWtNu-rGGzzQUXDSVn-bU5XLZfkPc8Y1A10');\n    function esc(s) {\n      return String(s == null ? '' : s).replace(/[&<>\"']/g, function (c) {\n        return { '&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;' }[c];\n      });\n    }\n    function render(rows) {\n      var ticker = document.getElementById('tnTicker');\n      var track = document.getElementById('tnTickerTrack');\n      if (!ticker || !track || !rows || !rows.length) return;\n      var html = rows.map(function (r) {\n        var href = r.slug ? '/dispatch/article/' + encodeURIComponent(r.slug) : '/dispatch';\n        return '<a class=\"tn-ticker-item\" href=\"' + href + '\">' +\n          '<span class=\"tn-ticker-cat\">' + esc(r.category || 'Note') + '</span>' +\n          esc(r.title || '') +\n        '</a><span class=\"tn-ticker-sep\" aria-hidden=\"true\">&middot;</span>';\n      }).join('');\n      track.innerHTML =\n        '<div class=\"tn-ticker-half\">' + html + '</div>' +\n        '<div class=\"tn-ticker-half\" aria-hidden=\"true\">' + html + '</div>';\n      ticker.hidden = false;\n    }\n    /* Static-first: the edge-cached snapshot of the newest 12 headlines. Avoids a\n       live Supabase REST call on every page view. Falls back to live on failure. */\n    function liveTicker() {\n      var endpoint = SB_URL + '/rest/v1/news_articles' +\n        '?select=title,slug,category&is_published=eq.true&order=published_at.desc&limit=12';\n      fetch(endpoint, { headers: { apikey: SB_KEY, Authorization: 'Bearer ' + SB_KEY } })\n        .then(function (res) { return res.ok ? res.json() : null; })\n        .then(function (rows) { if (rows && rows.length) render(rows); })\n        .catch(function () {});\n    }\n    fetch('/data/ticker.json', { cache: 'no-cache' })\n      .then(function (res) { if (!res.ok) throw 0; return res.json(); })\n      .then(function (rows) { if (rows && rows.length) render(rows); else liveTicker(); })\n      .catch(liveTicker);\n\n    /* Dispatch mark, host-gated (2026-09-18 correction). Ethan: \"the dispatch\n       should show in header on all pages on the dispatch site\" — the earlier\n       body:has(.dxsub) gate only fired on pages carrying the Dispatch sub-nav\n       partial, which is not every page this repo serves under the\n       dispatch.tnaado.ca hostname (search, author, 404, live-map, on-air, …\n       never carry that partial). This is a hostname check instead: every page\n       shows the mark when reached via dispatch.tnaado.ca, none do on\n       tnaado.ca, regardless of which specific page it is. Runs synchronously,\n       here, before .eh-logo-dispatch below has painted, so there is no flash\n       of the wrong state. */\n    document.documentElement.classList.toggle('is-dispatch-host', location.hostname === 'dispatch.tnaado.ca');\n\n    /* Header height sync: --tnc-header-h drives the search panel and mobile\n       nav overlay's top offset (css/chrome.css). The header is 64px tall\n       with the ticker hidden but grows to auto (~75px on mobile) once the\n       ticker un-hides via .eh-header:has(.tn-ticker:not([hidden])) — a\n       hardcoded 64px on those two overlays was drifting from the real\n       height every time the ticker loaded. ResizeObserver keeps the var\n       correct through that, orientation changes, and font-load reflow,\n       without hand-syncing every place the height can change. */\n    var hdr = document.querySelector('.eh-header');\n    if (hdr) {\n      var setHeaderH = function () {\n        document.documentElement.style.setProperty('--tnc-header-h', hdr.offsetHeight + 'px');\n      };\n      setHeaderH();\n      if (window.ResizeObserver) {\n        new ResizeObserver(setHeaderH).observe(hdr);\n      } else {\n        window.addEventListener('resize', setHeaderH);\n      }\n    }\n  })();\n  </script>\n\n  <div class=\"eh-inner\">\n    <div class=\"eh-brand\">\n      <!-- Dispatch mark: shown whenever this page is reached via\n           dispatch.tnaado.ca (see the is-dispatch-host toggle above), on every\n           page that hostname serves, not just the ones carrying the Dispatch\n           sub-nav. Ethan: \"dispatch needs to show in top header\" / \"dispatch\n           logo before tnaado logo\" / \"should show on all pages on the\n           dispatch site\" — on a Dispatch surface the reader is on The Dispatch\n           first and TNAADO second. It also replaces the old \"The Dispatch\"\n           link in .eh-nav below (removed, same request) and the mobile\n           overlay's copy of it — this mark IS that link now. Kept as text,\n           not an image, so it reads the same as the Dispatch sub-nav's own\n           wordmark, with no new asset to ship or keep in sync. -->\n      <a class=\"eh-logo eh-logo-dispatch\" href=\"/dispatch\" aria-label=\"The Dispatch home\">DISPATCH<i aria-hidden=\"true\">.</i></a>\n      <a class=\"eh-logo eh-logo-tnaado\" href=\"/\" aria-label=\"TNAADO home\">\n        <img src=\"/assets/brand/tnaado-logo.png?v=dddae7a3\" alt=\"TNAADO\" width=\"120\" height=\"28\">\n      </a>\n      <nav class=\"eh-brand-nav\" aria-label=\"Secondary navigation\">\n        <a href=\"https://links.tnaado.ca\" target=\"_blank\" rel=\"noopener\">Links</a>\n        <div class=\"eh-dropdown\" id=\"tnCompanyDD\">\n          <button class=\"eh-dropdown-toggle\" id=\"tnCompanyToggle\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"tnCompanyMenu\">\n            The Firm <span class=\"eh-dd-caret\" aria-hidden=\"true\">&#9662;</span>\n          </button>\n          <!-- REBOOT 2026-09-10, HEADERS.md change 2. Submit a story used to sit\n               here and is now the action button: it is a READER ACTION, not firm\n               identity, and it was filed where it looked tidy rather than by what\n               it is. Same defect Ethan named on tnaado.com as \"partners shows\n               under services thats wrong\".\n\n               Team stays RELATIVE on this site alone. There are two team pages in\n               the estate on purpose and they hold different people: this one is\n               the newsroom masthead, service.tnaado.ca/team is the firm a client\n               works with. Every other property points at the firm's. -->\n          <div class=\"eh-dropdown-panel\" id=\"tnCompanyMenu\" role=\"menu\" aria-label=\"The Firm\">\n            <a href=\"/about\" role=\"menuitem\">About Us</a>\n            <a href=\"/team\" role=\"menuitem\">Team</a>\n            <a href=\"https://service.tnaado.ca/contact\" role=\"menuitem\">Contact</a>\n          </div>\n        </div>\n      </nav>\n    </div>\n\n    <nav class=\"eh-nav\" aria-label=\"Main navigation\">\n      <a href=\"/live-map\">Live Map</a>\n      <a href=\"/show\">The Show</a>\n    </nav>\n\n    <div class=\"eh-actions\">\n      <!-- Manual light/dark toggle, opt-in only (no OS prefers-color-scheme). Persists to\n           localStorage 'tn-theme' and sets data-theme on <html>; shared with dispatch.html. -->\n      <button class=\"eh-theme-btn\" id=\"tnThemeBtn\" type=\"button\" aria-label=\"Switch to light theme\" aria-pressed=\"false\">\n        <svg class=\"eh-theme-ico eh-theme-ico-sun\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41\"/></svg>\n        <svg class=\"eh-theme-ico eh-theme-ico-moon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"/></svg>\n      </button>\n      <!-- anchor = no-JS fallback to the search page; JS upgrades it to the slide-down panel -->\n      <a class=\"eh-search-btn\" id=\"tnSearchBtn\" href=\"/search\" aria-label=\"Open search\" aria-expanded=\"false\" aria-controls=\"tnSearchPanel\">\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/></svg>\n      </a>\n      <!-- The one action this site wants from a reader. It sits last before the\n           hamburger, the same slot service.tnaado.ca uses for Work with us. -->\n      <a class=\"eh-cta\" href=\"/submit\">Submit a story</a>\n      <button class=\"eh-hamburger\" id=\"tnHamburger\" aria-label=\"Open navigation menu\" aria-expanded=\"false\" aria-controls=\"tnMobileNav\">\n        <span></span><span></span><span></span>\n      </button>\n    </div>\n  </div>\n</header>\n\n<!-- Slide-down search -->\n<div class=\"eh-search-panel\" id=\"tnSearchPanel\" role=\"search\" aria-hidden=\"true\">\n  <div class=\"eh-search-panel-inner\">\n    <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/></svg>\n    <input class=\"eh-search-input\" id=\"tnSearchInput\" type=\"search\" placeholder=\"Search articles&hellip;\" autocomplete=\"off\" aria-label=\"Search the site\" aria-controls=\"tnSearchResults\">\n    <button class=\"eh-search-close\" id=\"tnSearchClose\" aria-label=\"Close search\">&times;</button>\n  </div>\n  <div class=\"eh-search-results\" id=\"tnSearchResults\" role=\"listbox\" aria-label=\"Search results\"></div>\n</div>\n\n<!-- Mobile nav overlay -->\n<nav class=\"eh-mobile-overlay\" id=\"tnMobileNav\" aria-label=\"Mobile navigation\" aria-hidden=\"true\">\n  <a href=\"/live-map\" class=\"eh-mob-link\">Live Map</a>\n  <a href=\"/show\" class=\"eh-mob-link\">The Show</a>\n  <a href=\"https://links.tnaado.ca\" class=\"eh-mob-link\" target=\"_blank\" rel=\"noopener\">Links</a>\n  <div class=\"eh-mob-group\">\n    <button class=\"eh-mob-group-toggle\" id=\"tnMobCompanyToggle\" aria-expanded=\"false\" aria-controls=\"tnMobCompanyLinks\">\n      The Firm <span class=\"eh-dd-caret\" aria-hidden=\"true\">&#9662;</span>\n    </button>\n    <div class=\"eh-mob-group-links\" id=\"tnMobCompanyLinks\" hidden>\n      <a href=\"/about\">About Us</a>\n      <a href=\"/team\">Team</a>\n      <a href=\"https://service.tnaado.ca/contact\">Contact</a>\n    </div>\n  </div>\n  <!-- The bar's button is hidden under 768px, so the sheet carries its own. -->\n  <a href=\"/submit\" class=\"eh-mob-link eh-mob-cta\">Submit a story</a>\n</nav>\n\n<!-- The chrome behaviour (hamburger, Firm dropdown, mobile group, slide-down\n     search, Escape handling) lives HERE so it ships with the chrome itself.\n     It used to be pasted into each page independently, and three pages never\n     got it: live-map, live-go and on-air had a dead hamburger, a dead search\n     and a dead dropdown. Same drift the markup had. -->\n<script id=\"tn-chrome-js\">\n(function () {\n  'use strict';\n  /* The preference is applied in each page head before paint. The shared\n     chrome owns the control itself, so every page that receives this partial\n     can also change that preference instead of shipping a visible dead button. */\n  var themeBtn = document.getElementById('tnThemeBtn');\n  function applyTheme(theme) {\n    var light = theme === 'light';\n    if (light) document.documentElement.setAttribute('data-theme', 'light');\n    else document.documentElement.removeAttribute('data-theme');\n    if (themeBtn) {\n      themeBtn.setAttribute('aria-pressed', String(light));\n      themeBtn.setAttribute('aria-label', light ? 'Switch to dark theme' : 'Switch to light theme');\n    }\n    var themeColor = document.querySelector('meta[name=\"theme-color\"]');\n    if (themeColor) themeColor.setAttribute('content', light ? '#faf6ec' : '#0a0a0a');\n  }\n  if (themeBtn) {\n    applyTheme(document.documentElement.getAttribute('data-theme') === 'light' ? 'light' : 'dark');\n    themeBtn.addEventListener('click', function () {\n      var next = document.documentElement.getAttribute('data-theme') === 'light' ? 'dark' : 'light';\n      try { localStorage.setItem('tn-theme', next); } catch (e) {}\n      applyTheme(next);\n    });\n  }\n  /* hamburger */\n  var hb = document.getElementById('tnHamburger');\n  var mob = document.getElementById('tnMobileNav');\n  function mobFocusables() {\n    if (!mob) return [];\n    return Array.prototype.slice.call(mob.querySelectorAll('a, button:not([disabled])'))\n      .filter(function (el) { return el.offsetParent !== null; });\n  }\n  function closeMob(opts) {\n    if (!hb || !mob) return;\n    var wasOpen = hb.classList.contains('is-open');\n    hb.classList.remove('is-open'); mob.classList.remove('is-open');\n    hb.setAttribute('aria-expanded', 'false'); mob.setAttribute('aria-hidden', 'true');\n    document.body.style.overflow = '';\n    if (wasOpen && (!opts || opts.returnFocus !== false)) hb.focus();\n  }\n  function trapMobTab(e) {\n    if (e.key !== 'Tab' || !hb.classList.contains('is-open')) return;\n    var items = [hb].concat(mobFocusables());\n    var first = items[0], last = items[items.length - 1];\n    if (e.shiftKey && document.activeElement === first) {\n      e.preventDefault(); last.focus();\n    } else if (!e.shiftKey && document.activeElement === last) {\n      e.preventDefault(); first.focus();\n    }\n  }\n  if (hb && mob) {\n    hb.addEventListener('click', function () {\n      var open = hb.classList.toggle('is-open');\n      mob.classList.toggle('is-open', open);\n      hb.setAttribute('aria-expanded', String(open));\n      mob.setAttribute('aria-hidden', String(!open));\n      document.body.style.overflow = open ? 'hidden' : '';\n      if (open) {\n        var f = mobFocusables();\n        setTimeout(function () { (f[0] || hb).focus(); }, 320);\n      }\n    });\n    mob.querySelectorAll('a').forEach(function (a) {\n      a.addEventListener('click', function () { closeMob({ returnFocus: false }); });\n    });\n    /* tap the sheet's own background (not a link/button inside it) closes it,\n       same convention as the desktop dropdown's outside-click-to-close */\n    mob.addEventListener('click', function (e) { if (e.target === mob) closeMob(); });\n    /* keep Tab cycling inside the hamburger + panel while open, so focus can\n       never silently leave into whatever the sheet is covering */\n    document.addEventListener('keydown', trapMobTab);\n  }\n  /* company dropdown */\n  var dd = document.getElementById('tnCompanyDD');\n  var ddT = document.getElementById('tnCompanyToggle');\n  if (dd && ddT) {\n    ddT.addEventListener('click', function (e) {\n      e.stopPropagation();\n      var open = dd.classList.toggle('is-open');\n      ddT.setAttribute('aria-expanded', String(open));\n    });\n    document.addEventListener('click', function (e) {\n      if (dd.classList.contains('is-open') && !dd.contains(e.target)) {\n        dd.classList.remove('is-open'); ddT.setAttribute('aria-expanded', 'false');\n      }\n    });\n  }\n  var mgT = document.getElementById('tnMobCompanyToggle');\n  var mgL = document.getElementById('tnMobCompanyLinks');\n  if (mgT && mgL) {\n    mgT.addEventListener('click', function () {\n      var open = mgL.hidden; mgL.hidden = !open;\n      mgT.setAttribute('aria-expanded', String(open));\n    });\n  }\n  /* slide-down search */\n  var sBtn = document.getElementById('tnSearchBtn');\n  var sPanel = document.getElementById('tnSearchPanel');\n  var sInput = document.getElementById('tnSearchInput');\n  var sClose = document.getElementById('tnSearchClose');\n  var sRes = document.getElementById('tnSearchResults');\n  var sb = null, sTimer = null;\n  var SB_URL = 'https://jlnvklonulnlwpcezybj.supabase.co';\n  var SB_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpsbnZrbG9udWxubHdwY2V6eWJqIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzgxNzY1MDQsImV4cCI6MjA5Mzc1MjUwNH0.XlWaHf5UOWtNu-rGGzzQUXDSVn-bU5XLZfkPc8Y1A10';\n  function ensureSb(cb, n) {\n    if (sb) { cb(); return; }\n    if (window.supabase && window.supabase.createClient) {\n      try { sb = window.supabase.createClient(SB_URL, SB_KEY); } catch (e) {}\n      cb(); return;\n    }\n    if (!document.getElementById('tn-sb-cdn')) {\n      var s = document.createElement('script');\n      s.id = 'tn-sb-cdn'; s.async = true;\n      s.src = 'https://cdn.jsdelivr.net/npm/@supabase/supabase-js@2';\n      document.head.appendChild(s);\n    }\n    n = n || 0;\n    if (n < 40) setTimeout(function () { ensureSb(cb, n + 1); }, 150);\n  }\n  /* Escapes the five characters that matter in HTML, including BOTH quote\n     characters. The previous implementation serialised a text node\n     (`d.textContent = x; return d.innerHTML`), which escapes & < > and nothing\n     else, because a text node has no attribute context to escape for. Same\n     hardening as dispatch.html and live-map.html; keep them in step. */\n  function esc(x) {\n    return String(x == null ? '' : x).replace(/[&<>\"']/g, function (c) {\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n    });\n  }\n  function openSearch() {\n    if (!sPanel) return;\n    sPanel.classList.add('is-open'); sPanel.setAttribute('aria-hidden', 'false');\n    if (sBtn) sBtn.setAttribute('aria-expanded', 'true');\n    setTimeout(function () { if (sInput) sInput.focus(); }, 120);\n  }\n  function closeSearch() {\n    if (!sPanel) return;\n    sPanel.classList.remove('is-open'); sPanel.setAttribute('aria-hidden', 'true');\n    if (sBtn) sBtn.setAttribute('aria-expanded', 'false');\n  }\n  function runSearch(q) {\n    ensureSb(function () {\n      if (!sb || !sRes) return;\n      sb.from('news_articles').select('title,slug,category')\n        .eq('is_published', true).ilike('title', '%' + q + '%').limit(8)\n        .then(function (res) {\n          var rows = (res && res.data) || [];\n          if (!rows.length) {\n            sRes.innerHTML = '<p class=\"search-hit-empty\">No results for \\u201C' + esc(q) + '\\u201D</p>';\n            return;\n          }\n          sRes.innerHTML = rows.map(function (r) {\n            var href = r.slug ? '/dispatch/article/' + encodeURIComponent(r.slug) : '/dispatch';\n            return '<a class=\"search-hit\" href=\"' + href + '\" role=\"option\">' +\n              '<p class=\"search-hit-cat\">' + esc(r.category || 'Article') + '</p>' +\n              '<p class=\"search-hit-title\">' + esc(r.title || '') + '</p></a>';\n          }).join('');\n        });\n    });\n  }\n  if (sBtn && sPanel) {\n    sBtn.addEventListener('click', function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      if (sPanel.classList.contains('is-open')) closeSearch(); else openSearch();\n    });\n    /* outside click closes the panel */\n    document.addEventListener('click', function (e) {\n      if (sPanel.classList.contains('is-open') &&\n          !sPanel.contains(e.target) &&\n          !sBtn.contains(e.target)) {\n        closeSearch();\n      }\n    });\n  }\n  if (sClose) sClose.addEventListener('click', closeSearch);\n  if (sInput && sRes) {\n    sInput.addEventListener('input', function () {\n      var q = sInput.value.trim();\n      clearTimeout(sTimer);\n      if (q.length < 2) { sRes.innerHTML = ''; return; }\n      sTimer = setTimeout(function () { runSearch(q); }, 280);\n    });\n  }\n  document.addEventListener('keydown', function (e) {\n    if (e.key === 'Escape') { closeSearch(); closeMob(); if (dd) { dd.classList.remove('is-open'); if (ddT) ddT.setAttribute('aria-expanded', 'false'); } }\n  });\n})();\n</script>\n<!-- ▰▰ /TN-CHROME-HEADER ▰▰ -->\n\n<a class=\"skip-link\" href=\"#main\">Skip to content</a>\n\n\n\n<main id=\"main\">\n\n    <section class=\"legal-frame\" aria-hidden=\"true\">\n        <div class=\"legal-frame__video-wrap\">\n            <video class=\"legal-frame__video\"\n                   autoplay muted loop playsinline preload=\"metadata\"\n                   aria-hidden=\"true\"\n                   poster=\"/assets/video/dark-poster.jpg?v=002020cc\">\n                <source src=\"/assets/video/page-legal.mp4?v=15f94ca5\" type=\"video/mp4\">\n            </video>\n        </div>\n        <div class=\"legal-frame__overlay\"></div>\n    </section>\n\n    <section class=\"legal-hero\" aria-label=\"Terms of Service\">\n        <div class=\"legal-hero__inner\">\n            <p class=\"legal-hero__eyebrow\"><span class=\"legal-hero__rule\" aria-hidden=\"true\"></span>Legal</p>\n            <h1 class=\"legal-hero__title\">Terms of <em>Service.</em></h1>\n            <div class=\"legal-hero__meta\">\n                <span><strong>Effective</strong> January 30, 2026</span>\n                <span><strong>Last updated</strong> September 24, 2026</span>\n            </div>\n        </div>\n    </section>\n\n    <section class=\"legal-body\">\n        <div class=\"legal-body__inner\">\n\n            <aside class=\"legal-body__toc\" aria-label=\"Sections\">\n                <p class=\"legal-body__toc-eyebrow\">Sections</p>\n                <ul class=\"legal-body__toc-list\">\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-agreement\"><span class=\"legal-body__toc-num\">01</span><span>Agreement to Terms</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-services\"><span class=\"legal-body__toc-num\">02</span><span>The Site</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-payment\"><span class=\"legal-body__toc-num\">03</span><span>Memberships &amp; Payments</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-client\"><span class=\"legal-body__toc-num\">04</span><span>Acceptable Use</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-ip\"><span class=\"legal-body__toc-num\">05</span><span>Intellectual Property</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-confidentiality\"><span class=\"legal-body__toc-num\">06</span><span>Submissions &amp; Tips</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-warranties\"><span class=\"legal-body__toc-num\">07</span><span>Warranties</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-liability\"><span class=\"legal-body__toc-num\">08</span><span>Limitation of Liability</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-termination\"><span class=\"legal-body__toc-num\">09</span><span>Access &amp; Termination</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-indemnification\"><span class=\"legal-body__toc-num\">10</span><span>Indemnification</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-disputes\"><span class=\"legal-body__toc-num\">11</span><span>Dispute Resolution</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-changes\"><span class=\"legal-body__toc-num\">12</span><span>Changes to Terms</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-general\"><span class=\"legal-body__toc-num\">13</span><span>General Provisions</span></a></li>\n                    <li><a class=\"legal-body__toc-link\" href=\"#tos-contact\"><span class=\"legal-body__toc-num\">14</span><span>Contact</span></a></li>\n                </ul>\n            </aside>\n\n            <article class=\"legal-body__main\">\n\n                <section class=\"legal-section\" id=\"tos-agreement\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">01</span><h2 class=\"legal-section__title\">Agreement to Terms</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>By accessing or using tnaado.ca or our mobile applications, including <strong>The Dispatch</strong> (together, &ldquo;the Site&rdquo;), you agree to be bound by these Terms of Service (&ldquo;Terms&rdquo;). If you do not agree to these Terms, please do not use the Site.</p>\n                        <p>TNAADO Inc. (&ldquo;TNAADO&rdquo;, &ldquo;we&rdquo;, &ldquo;us&rdquo; or &ldquo;our&rdquo;), a corporation organized under the laws of Ontario, Canada, publishes the Site. These Terms govern your use of the Site (&ldquo;you&rdquo; or &ldquo;your&rdquo;) and constitute a legally binding agreement.</p>\n                        <p>Client services offered by the firm are contracted separately at <a href=\"https://service.tnaado.ca\">service.tnaado.ca</a> and are governed by their own agreements, not by these Terms.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-services\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">02</span><h2 class=\"legal-section__title\">The Site</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>TNAADO is a media and technology firm based in Toronto. The Site carries:</p>\n                        <ul>\n                            <li><strong>The Dispatch</strong>, articles covering business and technology.</li>\n                            <li><strong>The Show</strong>, filmed coverage of the operators and founders building the city.</li>\n                            <li><strong>Apps</strong>, coverage of the software our sister company, TNAADO Labs Inc., ships.</li>\n                        </ul>\n                        <p>Content on the Site is published for information. It may be revised, corrected or removed without notice.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-payment\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">03</span><h2 class=\"legal-section__title\">Memberships &amp; Payments</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>Reading is always free on the Site and in our apps, and no account is required. Optional <strong>memberships</strong> (Supporter, Insider and Patron) are offered as auto-renewing subscriptions and are billed through one of two rails depending on where you subscribe:</p>\n                        <h3>3.1 In our apps &mdash; Apple In-App Purchase</h3>\n                        <ul>\n                            <li>Memberships purchased inside <strong>The Dispatch</strong> app are billed through your Apple Account using Apple&rsquo;s In-App Purchase. We do not receive or store your payment details.</li>\n                            <li>Each membership renews automatically for the same period (monthly) at the price shown in the app, unless cancelled at least 24 hours before the end of the current period.</li>\n                            <li>You can manage or cancel anytime in your Apple Account settings; deleting the app does not cancel a subscription.</li>\n                            <li>Billing, refunds and payment disputes for in-app purchases are handled by Apple under Apple&rsquo;s terms; we are unable to issue App Store refunds directly. Refund requests can be made through Apple at <a href=\"https://reportaproblem.apple.com\">reportaproblem.apple.com</a>.</li>\n                        </ul>\n                        <h3>3.2 On tnaado.ca &mdash; Stripe</h3>\n                        <ul>\n                            <li>Memberships purchased on this website at <a href=\"/supporter\">tnaado.ca/supporter</a> are billed directly by us through <strong>Stripe</strong>, not Apple. Payments are handled securely by Stripe; we do not see or store your card details.</li>\n                            <li>Supporter and Insider renew automatically each month at the price shown at checkout. Patron renews at the recurring amount you choose at checkout.</li>\n                            <li>You can view, change or cancel a Stripe-billed membership anytime from your account at <a href=\"https://sub.tnaado.ca\">sub.tnaado.ca</a>, which opens Stripe&rsquo;s billing portal for payment method changes, cancellation and receipts. Cancelling stops future renewals; you keep the membership&rsquo;s benefits (including ad-free, where applicable) until the end of the period already paid for.</li>\n                        </ul>\n                        <h3>3.3 Refunds (Stripe-billed memberships)</h3>\n                        <p>We do not provide prorated or partial-period refunds for a Stripe-billed membership you cancel or downgrade partway through a billing period, except where required by law. Your access continues, unchanged, through the end of the period you already paid for.</p>\n                        <p>We will refund a Stripe-billed charge in full if it was made in error &mdash; for example, a duplicate charge, a charge after you had already cancelled, or an unauthorized charge. To request one, email <a href=\"/cdn-cgi/l/email-protection#771b1210161b37031916161318591416\"><span class=\"__cf_email__\" data-cfemail=\"6d01080a0c012d19030c0c0902430e0c\">[email&#160;protected]</span></a> within 30 days of the charge, including the email address used at checkout. Approved refunds are issued to the original payment method through Stripe and typically appear within 5&ndash;10 business days, depending on your bank or card issuer.</p>\n                        <p>This rail is unrelated to Apple&rsquo;s In-App Purchase billing above; refunds for an app-purchased membership are handled solely by Apple as described in Section&nbsp;3.1, and refunds for a Stripe-billed membership are handled solely by us as described here.</p>\n                        <p>A membership is tied to your TNAADO account and, once active, applies everywhere you sign in with that account, regardless of which rail you subscribed through.</p>\n                        <p>Client services offered by the firm are contracted and billed separately at <a href=\"https://service.tnaado.ca\">service.tnaado.ca</a>, under their own agreements, not these Terms.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-client\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">04</span><h2 class=\"legal-section__title\">Acceptable Use</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>When using the Site, you agree to:</p>\n                        <ul>\n                            <li>Provide accurate information in anything you submit to us.</li>\n                            <li>Use the Site in compliance with all applicable laws and regulations.</li>\n                            <li>Refrain from scraping, harvesting or republishing our content at scale without written permission.</li>\n                            <li>Refrain from interfering with the operation or security of the Site.</li>\n                            <li>Refrain from misrepresenting an affiliation with TNAADO.</li>\n                        </ul>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-ip\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">05</span><h2 class=\"legal-section__title\">Intellectual Property</h2></header>\n                    <div class=\"legal-section__body\">\n                        <h3>5.1 Our Content</h3>\n                        <p>The articles, video, images, code and design published on the Site belong to TNAADO or its licensors. You may read, link to and quote our work with attribution. Republication at scale or commercial reuse requires our written permission.</p>\n                        <h3>5.2 Your Submissions</h3>\n                        <p>You retain ownership of material you send us. By submitting it, you grant TNAADO a licence to review it and, where you offer it for publication or agree to publication, to use it in our coverage.</p>\n                        <h3>5.3 Marks</h3>\n                        <p>&ldquo;TNAADO&rdquo; and the TNAADO mark are trade names of TNAADO Inc. and may not be used without written permission.</p>\n                        <h3>5.4 Third-Party Materials</h3>\n                        <p>Third-party marks and materials referenced on the Site belong to their respective owners and are used for identification or under licence. You are responsible for holding the rights to any third-party material you submit to us.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-confidentiality\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">06</span><h2 class=\"legal-section__title\">Submissions &amp; Tips</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>Notes sent through the Site are read by the team and are not shared outside the firm, except with the providers who run our systems or where the law compels disclosure. If you are a source and need protection, say so in your first message. We take source protection seriously.</p>\n                        <p>Unsolicited ideas and pitches are not confidential. We may already be working on something similar and receiving your material creates no obligation. TNAADO maintains commercially reasonable safeguards to protect what you send us; no system is impenetrable and TNAADO is not liable for unauthorized access arising from circumstances beyond our reasonable control.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-warranties\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">07</span><h2 class=\"legal-section__title\">Warranties &amp; Disclaimers</h2></header>\n                    <div class=\"legal-section__body\">\n                        <h3>7.1 Accuracy</h3>\n                        <p>We work to keep our reporting accurate and we correct material errors when we find them or when you point them out. We do not warrant that the Site or its content is error-free, complete or current.</p>\n                        <h3>7.2 No Advice</h3>\n                        <p><strong>NOTHING ON THE SITE IS LEGAL, TAX, ACCOUNTING, FINANCIAL, OR INVESTMENT ADVICE. DECISIONS YOU MAKE ON THE BASIS OF OUR COVERAGE ARE YOURS.</strong></p>\n                        <p>To the maximum extent permitted by law, the Site and its content are provided &ldquo;as is&rdquo; and TNAADO disclaims all implied warranties, including those of merchantability and fitness for a particular purpose.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-liability\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">08</span><h2 class=\"legal-section__title\">Limitation of Liability</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>To the maximum extent permitted by law, TNAADO is not liable for any loss arising from your use of or reliance on, the Site or its content.</p>\n                        <p>In no event shall TNAADO be liable for indirect, incidental, consequential, special, exemplary or punitive damages, including lost profits, lost revenue or lost data, even if advised of their possibility.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-termination\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">09</span><h2 class=\"legal-section__title\">Access &amp; Termination</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>You may stop using the Site at any time.</p>\n                        <p>We may suspend or restrict access to the Site or any part of it, at any time and without notice, including for abuse, unlawful conduct or interference with its operation.</p>\n                        <p>Provisions that by their nature should survive, intellectual property, disclaimers, limitation of liability, indemnification and dispute resolution, survive any termination of access.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-indemnification\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">10</span><h2 class=\"legal-section__title\">Indemnification</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>You shall indemnify and hold harmless TNAADO and its directors, officers, employees and contractors from and against any claim, loss, damage or expense (including reasonable legal fees) arising from:</p>\n                        <ul>\n                            <li>Your use or misuse of the Site;</li>\n                            <li>Your breach of these Terms or any applicable law;</li>\n                            <li>Materials or content you submit to us; and</li>\n                            <li>Any infringement by you of a third party&rsquo;s rights.</li>\n                        </ul>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-disputes\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">11</span><h2 class=\"legal-section__title\">Dispute Resolution</h2></header>\n                    <div class=\"legal-section__body\">\n                        <h3>11.1 Governing Law</h3>\n                        <p>These Terms are governed by the laws of the Province of Ontario and the federal laws of Canada applicable therein.</p>\n                        <h3>11.2 Forum</h3>\n                        <p>The parties attorn to the exclusive jurisdiction of the courts of Ontario sitting in the City of Toronto for any dispute arising out of or related to these Terms or your use of the Site.</p>\n                        <h3>11.3 Negotiation First</h3>\n                        <p>Before commencing any proceeding, the parties shall first attempt in good faith to resolve the dispute through direct negotiation between senior representatives.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-changes\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">12</span><h2 class=\"legal-section__title\">Changes to Terms</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>TNAADO may update these Terms from time to time. Material changes will be communicated by notice on this page. Continued use of the Site after the effective date of an update constitutes acceptance of the modified Terms.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-general\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">13</span><h2 class=\"legal-section__title\">General Provisions</h2></header>\n                    <div class=\"legal-section__body\">\n                        <h3>13.1 Entire Agreement</h3>\n                        <p>These Terms constitute the entire agreement between you and TNAADO regarding the Site and supersede all prior understandings on that subject.</p>\n                        <h3>13.2 Severability</h3>\n                        <p>If any provision is held unenforceable, the remaining provisions remain in full force and effect.</p>\n                        <h3>13.3 Assignment</h3>\n                        <p>You may not assign your rights or obligations under these Terms without TNAADO&rsquo;s prior written consent. TNAADO may assign to an affiliate or successor in connection with a corporate reorganization.</p>\n                        <h3>13.4 Force Majeure</h3>\n                        <p>Neither party is liable for failure or delay in performance caused by circumstances beyond reasonable control, including acts of nature, war, pandemic, civil disturbance or governmental action.</p>\n                        <h3>13.5 Survival</h3>\n                        <p>The provisions concerning intellectual property, submissions, warranties and disclaimers, limitation of liability, indemnification, dispute resolution and these general provisions survive termination.</p>\n                    </div>\n                </section>\n\n                <section class=\"legal-section\" id=\"tos-contact\">\n                    <header class=\"legal-section__head\"><span class=\"legal-section__num\">14</span><h2 class=\"legal-section__title\">Contact</h2></header>\n                    <div class=\"legal-section__body\">\n                        <p>For questions about these Terms, please write to us at:</p>\n                        <p><strong>TNAADO Inc., Legal &amp; Risk Affairs</strong><br>1050 King Street West<br>Toronto, Ontario, Canada M6K 0C7<br>Email: <a href=\"/cdn-cgi/l/email-protection#99f5fcfef8f5d9edf7f8f8fdf6b7faf8\"><span class=\"__cf_email__\" data-cfemail=\"d4b8b1b3b5b894a0bab5b5b0bbfab7b5\">[email&#160;protected]</span></a></p>\n                    </div>\n                </section>\n\n            </article>\n\n        </div>\n    </section>\n\n    <section class=\"legal-foot\" aria-label=\"Other legal documents\">\n        <div class=\"legal-foot__inner\">\n            <div class=\"legal-foot__col\">\n                <p class=\"legal-foot__col-eyebrow\">Contact</p>\n                <h3>Legal &amp; Risk Affairs</h3>\n                <p><a href=\"/cdn-cgi/l/email-protection#c6aaa3a1a7aa86b2a8a7a7a2a9e8a5a7\"><span class=\"__cf_email__\" data-cfemail=\"1d71787a7c715d69737c7c7972337e7c\">[email&#160;protected]</span></a></p>\n                <p>1050 King Street West</p>\n                <p>Toronto, ON M6K 0C7</p>\n            </div>\n            <div class=\"legal-foot__col\">\n                <p class=\"legal-foot__col-eyebrow\">The trio</p>\n                <ul class=\"legal-foot__sib\">\n                    <li><a href=\"/privacy\">Privacy Policy</a></li>\n                    <li><a href=\"/legal\">Legal &amp; Business Disclosures</a></li>\n                </ul>\n            </div>\n        </div>\n    </section>\n\n</main>\n\n<div id=\"tnaado-cta\"></div>\n\n<!-- ▰▰ TN-CHROME-FOOTER ▰▰ -->\n<footer class=\"ef-footer\" role=\"contentinfo\">\n  <div class=\"ef-footer-inner\">\n    <div class=\"ef-col ef-col-logo\">\n      <img src=\"/assets/brand/tnaado-logo.png?v=dddae7a3\" alt=\"TNAADO\" width=\"110\" height=\"26\" loading=\"lazy\">\n      <p class=\"ef-tagline\">Media &middot; Toronto</p>\n      <address class=\"ef-contact\">\n        <span class=\"ef-contact__line\">1050 King Street West</span>\n        <span class=\"ef-contact__line\">Toronto, ON M6K 0C7</span>\n        <a class=\"ef-contact__link\" href=\"/cdn-cgi/l/email-protection#573438392336342317233936363338793436\"><span class=\"__cf_email__\" data-cfemail=\"d3b0bcbda7b2b0a793a7bdb2b2b7bcfdb0b2\">[email&#160;protected]</span></a>\n      </address>\n                <div class=\"ef-social\">\n                    <a href=\"https://www.linkedin.com/company/tnaado/\" target=\"_blank\" rel=\"noopener\" aria-label=\"TNAADO on LinkedIn\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0z\"/></svg></a>\n                    <a href=\"https://www.instagram.com/tnaado/\" target=\"_blank\" rel=\"noopener\" aria-label=\"TNAADO on Instagram\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z\"/></svg></a>\n                </div>\n    </div>\n    <div class=\"ef-col\">\n      <p class=\"ef-col-heading\">The Newsroom</p>\n      <nav aria-label=\"Newsroom\">\n        <a href=\"/dispatch\">The Dispatch</a>\n        <a href=\"/show\">The Show</a>\n        <a href=\"/live-map\">Live Map</a>\n        <a href=\"/areas\">Neighbourhoods</a>\n        <a href=\"/on-air\">On Air</a>\n      </nav>\n    </div>\n    <div class=\"ef-col\">\n      <p class=\"ef-col-heading\">The Firm</p>\n      <nav aria-label=\"The Firm\">\n        <a href=\"/about\">About Us</a>\n        <a href=\"/team\">Team</a>\n        <a href=\"/careers\">Careers</a>\n        <a href=\"/submit\">Submit a Story</a>\n      </nav>\n    </div>\n    <div class=\"ef-col\">\n      <p class=\"ef-col-heading\">Across TNAADO</p>\n      <nav aria-label=\"Across TNAADO\">\n        <a href=\"https://apps.tnaado.ca\" target=\"_blank\" rel=\"noopener\">Apps</a>\n        <a href=\"https://service.tnaado.ca\" target=\"_blank\" rel=\"noopener\">Services</a>\n        <a href=\"https://tools.tnaado.ca\" target=\"_blank\" rel=\"noopener\">Tools</a>\n        <a href=\"https://links.tnaado.ca\" target=\"_blank\" rel=\"noopener\">Links</a>\n      </nav>\n    </div>\n  </div>\n  <div class=\"ef-bottom\">\n    <p class=\"ef-copy\">&copy; 2026 TNAADO Inc. &middot; Toronto</p><div class=\"ef-bottom-support\"><a class=\"ef-support\" href=\"/supporter\">Support</a><span id=\"tn-account-slot\"></span></div>\n    <div class=\"ef-bottom-links\">\n      <a href=\"/privacy\">Privacy</a>\n      <a href=\"/terms\">Terms</a>\n      <a href=\"#\" data-tn-consent-open>Cookie preferences</a>\n      <a href=\"/editorial-policy\">Editorial Policy</a>\n    </div>\n  </div>\n</footer>\n<script data-cfasync=\"false\" src=\"/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js\"></script><script type=\"module\" src=\"https://static.cloudflareinsights.com/beacon.min.js\" data-cf-beacon='{\"token\":\"0b7bdb5a0beb425991aedb69d5004f89\"}'></script>\n<!-- ▰▰ /TN-CHROME-FOOTER ▰▰ -->\n\n<script src=\"/js/site-beacon.js?v=eebcec51\" defer></script>\n<script type=\"module\" src=\"https://static.cloudflareinsights.com/beacon.min.js/vce701823e78c4301a35b7e07294d87301792088814092\" integrity=\"sha512-UKNk8GbxkABxKcXYuLkO16EleLGUkcvJWtpSNmExE0Too3ZaFAxTscNWEc1OdAv5/BikHawapSCaiD2XCmp+Bw==\" data-cf-beacon='{\"version\":\"2024.11.0\",\"token\":\"0b7bdb5a0beb425991aedb69d5004f89\",\"r\":1,\"spa\":2}' crossorigin=\"anonymous\"></script>\n</body>\n</html>\n",
  "source_sha256": "877964c5196ad7f70d7a88b8ab97d1b933e2d85deae9118a3f5534176b4f37b4",
  "text": "Legal\n\nTerms of Service.\n\nEffective January 30, 2026\n\nLast updated September 24, 2026\n\nSections\n\n01Agreement to Terms\n\n02The Site\n\n03Memberships & Payments\n\n04Acceptable Use\n\n05Intellectual Property\n\n06Submissions & Tips\n\n07Warranties\n\n08Limitation of Liability\n\n09Access & Termination\n\n10Indemnification\n\n11Dispute Resolution\n\n12Changes to Terms\n\n13General Provisions\n\n14Contact\n\n01\n\nAgreement to Terms\n\nBy accessing or using tnaado.ca or our mobile applications, including The Dispatch (together, “the Site”), you agree to be bound by these Terms of Service (“Terms”). If you do not agree to these Terms, please do not use the Site.\n\nTNAADO Inc. (“TNAADO”, “we”, “us” or “our”), a corporation organized under the laws of Ontario, Canada, publishes the Site. These Terms govern your use of the Site (“you” or “your”) and constitute a legally binding agreement.\n\nClient services offered by the firm are contracted separately at service.tnaado.ca and are governed by their own agreements, not by these Terms.\n\n02\n\nThe Site\n\nTNAADO is a media and technology firm based in Toronto. The Site carries:\n\nThe Dispatch, articles covering business and technology.\n\nThe Show, filmed coverage of the operators and founders building the city.\n\nApps, coverage of the software our sister company, TNAADO Labs Inc., ships.\n\nContent on the Site is published for information. It may be revised, corrected or removed without notice.\n\n03\n\nMemberships & Payments\n\nReading is always free on the Site and in our apps, and no account is required. Optional memberships (Supporter, Insider and Patron) are offered as auto-renewing subscriptions and are billed through one of two rails depending on where you subscribe:\n\n3.1 In our apps — Apple In-App Purchase\n\nMemberships purchased inside The Dispatch app are billed through your Apple Account using Apple’s In-App Purchase. We do not receive or store your payment details.\n\nEach membership renews automatically for the same period (monthly) at the price shown in the app, unless cancelled at least 24 hours before the end of the current period.\n\nYou can manage or cancel anytime in your Apple Account settings; deleting the app does not cancel a subscription.\n\nBilling, refunds and payment disputes for in-app purchases are handled by Apple under Apple’s terms; we are unable to issue App Store refunds directly. Refund requests can be made through Apple at reportaproblem.apple.com.\n\n3.2 On tnaado.ca — Stripe\n\nMemberships purchased on this website at tnaado.ca/supporter are billed directly by us through Stripe, not Apple. Payments are handled securely by Stripe; we do not see or store your card details.\n\nSupporter and Insider renew automatically each month at the price shown at checkout. Patron renews at the recurring amount you choose at checkout.\n\nYou can view, change or cancel a Stripe-billed membership anytime from your account at sub.tnaado.ca, which opens Stripe’s billing portal for payment method changes, cancellation and receipts. Cancelling stops future renewals; you keep the membership’s benefits (including ad-free, where applicable) until the end of the period already paid for.\n\n3.3 Refunds (Stripe-billed memberships)\n\nWe do not provide prorated or partial-period refunds for a Stripe-billed membership you cancel or downgrade partway through a billing period, except where required by law. Your access continues, unchanged, through the end of the period you already paid for.\n\nWe will refund a Stripe-billed charge in full if it was made in error — for example, a duplicate charge, a charge after you had already cancelled, or an unauthorized charge. To request one, email [email protected] within 30 days of the charge, including the email address used at checkout. Approved refunds are issued to the original payment method through Stripe and typically appear within 5–10 business days, depending on your bank or card issuer.\n\nThis rail is unrelated to Apple’s In-App Purchase billing above; refunds for an app-purchased membership are handled solely by Apple as described in Section 3.1, and refunds for a Stripe-billed membership are handled solely by us as described here.\n\nA membership is tied to your TNAADO account and, once active, applies everywhere you sign in with that account, regardless of which rail you subscribed through.\n\nClient services offered by the firm are contracted and billed separately at service.tnaado.ca, under their own agreements, not these Terms.\n\n04\n\nAcceptable Use\n\nWhen using the Site, you agree to:\n\nProvide accurate information in anything you submit to us.\n\nUse the Site in compliance with all applicable laws and regulations.\n\nRefrain from scraping, harvesting or republishing our content at scale without written permission.\n\nRefrain from interfering with the operation or security of the Site.\n\nRefrain from misrepresenting an affiliation with TNAADO.\n\n05\n\nIntellectual Property\n\n5.1 Our Content\n\nThe articles, video, images, code and design published on the Site belong to TNAADO or its licensors. You may read, link to and quote our work with attribution. Republication at scale or commercial reuse requires our written permission.\n\n5.2 Your Submissions\n\nYou retain ownership of material you send us. By submitting it, you grant TNAADO a licence to review it and, where you offer it for publication or agree to publication, to use it in our coverage.\n\n5.3 Marks\n\n“TNAADO” and the TNAADO mark are trade names of TNAADO Inc. and may not be used without written permission.\n\n5.4 Third-Party Materials\n\nThird-party marks and materials referenced on the Site belong to their respective owners and are used for identification or under licence. You are responsible for holding the rights to any third-party material you submit to us.\n\n06\n\nSubmissions & Tips\n\nNotes sent through the Site are read by the team and are not shared outside the firm, except with the providers who run our systems or where the law compels disclosure. If you are a source and need protection, say so in your first message. We take source protection seriously.\n\nUnsolicited ideas and pitches are not confidential. We may already be working on something similar and receiving your material creates no obligation. TNAADO maintains commercially reasonable safeguards to protect what you send us; no system is impenetrable and TNAADO is not liable for unauthorized access arising from circumstances beyond our reasonable control.\n\n07\n\nWarranties & Disclaimers\n\n7.1 Accuracy\n\nWe work to keep our reporting accurate and we correct material errors when we find them or when you point them out. We do not warrant that the Site or its content is error-free, complete or current.\n\n7.2 No Advice\n\nNOTHING ON THE SITE IS LEGAL, TAX, ACCOUNTING, FINANCIAL, OR INVESTMENT ADVICE. DECISIONS YOU MAKE ON THE BASIS OF OUR COVERAGE ARE YOURS.\n\nTo the maximum extent permitted by law, the Site and its content are provided “as is” and TNAADO disclaims all implied warranties, including those of merchantability and fitness for a particular purpose.\n\n08\n\nLimitation of Liability\n\nTo the maximum extent permitted by law, TNAADO is not liable for any loss arising from your use of or reliance on, the Site or its content.\n\nIn no event shall TNAADO be liable for indirect, incidental, consequential, special, exemplary or punitive damages, including lost profits, lost revenue or lost data, even if advised of their possibility.\n\n09\n\nAccess & Termination\n\nYou may stop using the Site at any time.\n\nWe may suspend or restrict access to the Site or any part of it, at any time and without notice, including for abuse, unlawful conduct or interference with its operation.\n\nProvisions that by their nature should survive, intellectual property, disclaimers, limitation of liability, indemnification and dispute resolution, survive any termination of access.\n\n10\n\nIndemnification\n\nYou shall indemnify and hold harmless TNAADO and its directors, officers, employees and contractors from and against any claim, loss, damage or expense (including reasonable legal fees) arising from:\n\nYour use or misuse of the Site;\n\nYour breach of these Terms or any applicable law;\n\nMaterials or content you submit to us; and\n\nAny infringement by you of a third party’s rights.\n\n11\n\nDispute Resolution\n\n11.1 Governing Law\n\nThese Terms are governed by the laws of the Province of Ontario and the federal laws of Canada applicable therein.\n\n11.2 Forum\n\nThe parties attorn to the exclusive jurisdiction of the courts of Ontario sitting in the City of Toronto for any dispute arising out of or related to these Terms or your use of the Site.\n\n11.3 Negotiation First\n\nBefore commencing any proceeding, the parties shall first attempt in good faith to resolve the dispute through direct negotiation between senior representatives.\n\n12\n\nChanges to Terms\n\nTNAADO may update these Terms from time to time. Material changes will be communicated by notice on this page. Continued use of the Site after the effective date of an update constitutes acceptance of the modified Terms.\n\n13\n\nGeneral Provisions\n\n13.1 Entire Agreement\n\nThese Terms constitute the entire agreement between you and TNAADO regarding the Site and supersede all prior understandings on that subject.\n\n13.2 Severability\n\nIf any provision is held unenforceable, the remaining provisions remain in full force and effect.\n\n13.3 Assignment\n\nYou may not assign your rights or obligations under these Terms without TNAADO’s prior written consent. TNAADO may assign to an affiliate or successor in connection with a corporate reorganization.\n\n13.4 Force Majeure\n\nNeither party is liable for failure or delay in performance caused by circumstances beyond reasonable control, including acts of nature, war, pandemic, civil disturbance or governmental action.\n\n13.5 Survival\n\nThe provisions concerning intellectual property, submissions, warranties and disclaimers, limitation of liability, indemnification, dispute resolution and these general provisions survive termination.\n\n14\n\nContact\n\nFor questions about these Terms, please write to us at:\n\nTNAADO Inc., Legal & Risk Affairs\n\n1050 King Street West\n\nToronto, Ontario, Canada M6K 0C7\n\nEmail: [email protected]\n\nContact\n\nLegal & Risk Affairs\n\n[email protected]\n\n1050 King Street West\n\nToronto, ON M6K 0C7\n\nThe trio\n\nPrivacy Policy\n\nLegal & Business Disclosures",
  "text_sha256": "5e57cec91367b827005ffb84b168c950c74f91f8eb4fe09b7e591757d80c0969",
  "extraction": "main text, whitespace normalized"
}
