From 0312ed7932e9ac9688dd241aab0e04d5782c0e83 Mon Sep 17 00:00:00 2001 From: Nathan Schneider Date: Fri, 19 Sep 2025 12:44:30 -0600 Subject: [PATCH] Fixed tag issue on legal-snippets --- content/legal-snippets/airbnb-compensatory.md | 23 +++++++++++++------ layouts/_default/list.html | 23 +++++++++++-------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/content/legal-snippets/airbnb-compensatory.md b/content/legal-snippets/airbnb-compensatory.md index ccf41b2..fca119d 100644 --- a/content/legal-snippets/airbnb-compensatory.md +++ b/content/legal-snippets/airbnb-compensatory.md @@ -1,11 +1,20 @@ --- -title: Airbnb RFC on compensatory offerings -description: In 2018, as it approached an IPO, Airbnb submitted a letter to the US Securities and Exchange Commission requesting permission to distribute shares to users. The permission was not granted. +title: Workers Capital Rider +description: A rider for investment terms that helps ensure a worker-friendly outcome, developed by Eduardo Cabral of Triple Beam Advisors. tags: -- Exit -- Filing -- Public-policy -- United-States -external_url: https://www.sec.gov/comments/s7-18-18/s71818-4403356-175575.pdf + - cooperative + - investment +external_url: https://www.triplebeamadvisors.com/ files_media: ../../Exit%20to%20Community%20Stories%20&%20Strategies%202ee6f9c491af45648511f5df33c5cfc5/s71818-4403356-175575.pdf --- + +1. Reserve **X%** of the total financing round (or **$Xk**) for investors committed to: + 1. A **capped return model**, targeting no more than **X% IRR or a fixed MOIC**, with excess gains recycled into employee equity pools or retained for other company purposes; and/or + 2. **Aligned exit incentives** whereby upon a Corporate Transaction (or other to-be-agreed milestones), investors recoup any gain on their invested capital _only_ if employee ownership pools or other forms of incentive equity (excluding those granted to the founders) also receive at least 50% of the full liquidity they are entitled to under the waterfall provisions (or otherwise distributions will be prorated as needed to ensure an equitable distribution to the employees). +2. **Prioritize Shared-Risk & Embedded Shared-Outcome Structures**: Collaborate with Investors who embrace frameworks inspired by solidarity economics and cooperative finance, such as: + 1. **Profit-sharing**: Returns tied to enterprise success, not fixed interest; + 2. **Worker-Investor Covenants**: Mechanisms (e.g., side agreements, SAFE-like instruments) to ensure capital providers share both upside and downside risk with labor stakeholders. + 3. **Worker Friendly Governance**: Optionality for economic rebalancing (e.g., redistributive equity pools triggered at exit). + 4. **Vesting-Adjusted Dividends**: Investor dividends accrue but only vest upon equivalent employee profit-sharing milestones. +3. **Transparency & Accountability**: + 1. Report annually on progress toward sourcing solidarity-aligned capital, including challenges faced. diff --git a/layouts/_default/list.html b/layouts/_default/list.html index f23735b..ef88dd9 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -512,7 +512,7 @@ document.addEventListener('DOMContentLoaded', function() { selectedTags.add(preSelectedTag); } - // Collect all unique tags + // Collect all unique tags (normalize case for consistency) const allTags = new Set(); cards.forEach(card => { const tags = card.dataset.tags; @@ -527,8 +527,9 @@ document.addEventListener('DOMContentLoaded', function() { Array.from(allTags).sort().forEach(tag => { const option = document.createElement('div'); option.className = 'tag-option'; + const isSelected = Array.from(selectedTags).some(selected => selected.toLowerCase() === tag.toLowerCase()); option.innerHTML = ` - + ${tag} `; @@ -537,7 +538,9 @@ document.addEventListener('DOMContentLoaded', function() { if (checkbox.checked) { selectedTags.add(tag); } else { - selectedTags.delete(tag); + // Remove tag case-insensitively + const tagToRemove = Array.from(selectedTags).find(selected => selected.toLowerCase() === tag.toLowerCase()); + if (tagToRemove) selectedTags.delete(tagToRemove); } updateSelectedTagsDisplay(); filterAndSort(); @@ -584,8 +587,10 @@ document.addEventListener('DOMContentLoaded', function() { const checkboxes = tagOptions.querySelectorAll('input[type="checkbox"]'); checkboxes.forEach((checkbox, index) => { const tag = Array.from(allTags).sort()[index]; - checkbox.checked = selectedTags.has(tag); - checkbox.parentElement.classList.toggle('selected', selectedTags.has(tag)); + // Case-insensitive check for selected tags + const isSelected = Array.from(selectedTags).some(selected => selected.toLowerCase() === tag.toLowerCase()); + checkbox.checked = isSelected; + checkbox.parentElement.classList.toggle('selected', isSelected); }); } @@ -662,10 +667,10 @@ document.addEventListener('DOMContentLoaded', function() { description.includes(searchTerm) || content.includes(searchTerm); - // Tag filter - must match ALL selected tags - const matchesTags = selectedTags.size === 0 || - (tags && Array.from(selectedTags).every(selectedTag => - tags.split(',').map(t => t.trim()).includes(selectedTag) + // Tag filter - must match ALL selected tags (case-insensitive) + const matchesTags = selectedTags.size === 0 || + (tags && Array.from(selectedTags).every(selectedTag => + tags.split(',').map(t => t.trim().toLowerCase()).includes(selectedTag.toLowerCase()) )); return matchesSearch && matchesTags;