Legal

Cookie Policy

Last updated: 11 June 2026 · Applies to ouridea.ai, app.ouridea.ai and all OurIdea.ai products

This policy explains what cookies and similar technologies (such as local storage) we use, why we use them, and how you can control them. It should be read alongside our Privacy Policy.

1. What are cookies?

Cookies are small text files placed on your device when you visit a website. They're used to make sites work, remember your preferences, and understand how the site is used. "Similar technologies" includes browser local storage, which we use within the abi. app to remember settings such as light/dark mode.

2. Cookies we use

Cookie / storageTypePurposeDuration
sb-access-token / sb-refresh-tokenStrictly necessaryKeeps you logged in to the abi. platform (Supabase Auth session)Session / up to 7 days
cookie_consentStrictly necessaryRemembers your cookie preference so we don't show the banner again12 months
theme (local storage)FunctionalRemembers your light/dark mode preference in the abi. appPersistent until cleared
Google Analytics 4 (_ga, _ga_*)AnalyticsUnderstand site traffic and usage patterns on ouridea.ai (anonymised IP)Up to 14 months

We do not use third-party advertising cookies, and we do not sell or share cookie data with advertisers.

3. Strictly necessary cookies

These cookies are essential for the website and app to function — for example, keeping you logged in or remembering that you've responded to the cookie banner. Because they're essential, they can't be switched off, and under PECR they don't require consent.

4. Analytics cookies

We use Google Analytics 4 to understand how visitors use our marketing site (ouridea.ai), so we can improve it. GA4 cookies are only set if you accept analytics cookies via the banner. You can withdraw consent at any time using the "Cookie preferences" link in the footer.

5. Managing cookies

You can control cookies via:

Note: blocking strictly necessary cookies will prevent you from logging in to the abi. platform.

6. Cookie consent banner — implementation

The snippet below implements a lightweight, PECR/GDPR-compliant cookie banner. Non-essential (analytics) scripts should only load after consent is granted. Add this snippet before the closing </body> tag on every marketing page (home, launchpad, signal, platform, pulse), and gate the GA4 script tag using cookieConsent.allowAnalytics() as shown.

How it works: on first visit, the banner appears. "Accept all" sets cookie_consent=all and loads GA4. "Necessary only" sets cookie_consent=necessary and GA4 never loads. The choice is stored for 12 months in localStorage, then the banner won't reappear until it expires or the user clears their browser data.
<!-- Cookie consent banner -->
<div id="cookie-banner">
  <p>We use essential cookies to run this site, and (with your consent) analytics
  cookies to understand how it's used. See our
  <a href="/legal/cookies.html">Cookie Policy</a> for details.</p>
  <div class="row">
    <button class="btn btn-primary" onclick="cookieConsent.set('all')">Accept all</button>
    <button class="btn btn-outline" onclick="cookieConsent.set('necessary')">Necessary only</button>
  </div>
</div>

<script>
const cookieConsent = {
  key: 'cookie_consent',
  get(){ return localStorage.getItem(this.key); },
  set(value){
    localStorage.setItem(this.key, value);
    localStorage.setItem(this.key + '_ts', Date.now());
    document.getElementById('cookie-banner').classList.remove('show');
    if(value === 'all') cookieConsent.loadAnalytics();
  },
  allowAnalytics(){ return this.get() === 'all'; },
  loadAnalytics(){
    if(window.gaLoaded) return;
    window.gaLoaded = true;
    const s = document.createElement('script');
    s.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX'; // TODO: replace with real GA4 ID
    s.async = true;
    document.head.appendChild(s);
    window.dataLayer = window.dataLayer || [];
    function gtag(){ dataLayer.push(arguments); }
    gtag('js', new Date());
    gtag('config', 'G-XXXXXXX');
  },
  init(){
    const stored = this.get();
    const ts = parseInt(localStorage.getItem(this.key + '_ts') || '0', 10);
    const expired = Date.now() - ts > 1000 * 60 * 60 * 24 * 365; // 12 months
    if(!stored || expired){
      document.getElementById('cookie-banner').classList.add('show');
    } else if(stored === 'all'){
      this.loadAnalytics();
    }
  }
};
document.addEventListener('DOMContentLoaded', () => cookieConsent.init());
</script>

To add a footer "Cookie preferences" link that re-opens the banner, add: <a href="#" onclick="document.getElementById('cookie-banner').classList.add('show');return false">Cookie preferences</a>

7. Changes to this policy

We may update this policy as our cookie usage changes. Check back periodically for updates — the "last updated" date above reflects the latest revision.

8. Contact

Questions about cookies? Email privacy@ouridea.ai.