Hub Updates
Phase 0 Mockups
Index
Standards
Feed
Story
Dashboard
Subscriptions
Author
Editor
Discord
How Hub organizes, classifies, and connects content across platforms. Every piece of NATCA communication — from a breaking legislative alert to a reference SOP — follows this taxonomy so members can find it now and 2 years from now.
Every Hub story is classified on four independent axes. These are not interchangeable — each answers a different question. Authors set three when publishing; the system derives the fourth. Together they power display, filtering, Discord routing, and email delivery.
| Axis | Question it answers | Who sets it? | Values | Where it's used |
|---|---|---|---|---|
| Content Type | What kind of thing is this? | Author picks | Update, Document, Action Needed, Event | Discord tags, Hub card styling, feed filters |
| Topic | What domain does this belong to? | Author picks | Pay, Benefits, Working Conditions, Legislative, Safety, Union | Discord channel routing, Hub topic filter, email lists |
| Area | What specific subject within the topic? | Author picks (from topic-filtered list) | Predefined per topic (e.g., NCEPT, FEHB, ASRS — see below) | Hub sub-filter within a topic, Discord embed chip, search facet |
| Lifecycle | Where is this in its life? | System derives | Developing, Active, Action Needed, Resolved, Reference | Discord tags, Hub status badges, auto-archive rules |
Author picks 3 things, system handles 1. Content Type + Topic + Area = author decisions. Lifecycle = derived from content type + author actions (resolve, archive). This keeps the authoring experience to three dropdowns — and the Area dropdown filters based on the Topic selection.
Axis 1 — what kind of thing is this? The content type determines how the story is displayed in Hub and how it's tagged in Discord. Each story gets exactly one content type. Authors pick the type; the lifecycle is derived automatically.
| Type | When to use | Example | Default lifecycle |
|---|---|---|---|
| 📰 Update | The default — news, coverage, announcements, advisories, anything that isn't a document, event, or action item | Pay raise, staffing numbers, ASRS changes, FAA shutdown coverage, election results | Starts Developing (if rolling) or Active (if one-time). Author resolves when done. |
| 📋 Document | Official artifacts that link to DMS — SOPs, MOUs, contract interpretations, policies | Long-Term Hold SOP, Slate Book Article 35 MOU | Immediately Reference. Documents are evergreen from publish. |
| ⚡ Action Needed | Members must do something by a date | TA vote, benefits enrollment, scholarship application | Action Needed until deadline passes, then auto-Resolved. |
| 📅 Event | Has start/end dates | CFS Conference, NATCA in Washington, regional training | Active until event date passes, then auto-Resolved. |
Why only 4 types? Earlier iterations had 6 (Coverage, Advisory, Announcement were separate). In practice, whether a post gets follow-up updates is a lifecycle question (Developing vs Resolved), not a content type question. An "advisory" that gets 3 updates IS coverage. An "announcement" is just an update that's already resolved. Update covers all of these — the lifecycle does the rest.
Updated NCEPT placement procedures. Off-the-boards reduced from 12 to 6 months. New LTH categories in SWB.
Congress negotiating FY2026 CR. NATCA coordinating contingency ops. 12 updates from 4 contributors.
Registration closes in 9 days. Contact your RVP office for scholarship information.
All facilities: minimum 2.3% adjustment. Highest: SFO at 4.1%. Effective PP01 2026.
Las Vegas, August 18-20. Early-bird pricing through May 31. Scholarships available.
Axis 2 — what domain does this belong to? Topics map 1:1 to Discord forum channels and email subscription lists. Each story belongs to exactly one topic. New topics can be added without code changes.
Axis 3 — what specific subject within the topic? Each topic has a predefined list of areas. Authors pick from a filtered dropdown after selecting the topic. New areas can be added per topic without code changes.
Why areas aren't Discord tags. Discord limits channels to 20 tags and posts to 5 tags. We're already using 8 tags per channel (4 content types + 4 lifecycle stages). That leaves 12 slots — enough for most topics, but some topics (like Union with 10+ committees) would exceed the limit. Instead, areas render as chips in the embed body on Discord and as filter chips on the Hub topic page. No Discord tag limit applies.
| Topic | Areas (predefined, extensible) |
|---|---|
| Pay | Base Pay / GS Scale Locality Pay Premium Pay Overtime |
| Benefits | Health / FEHB Retirement / TSP Mental Health / MAP Leave / FMLA |
| Working Conditions | NCEPT / Employee Movement Equipment / Technology Scheduling Facilities ABACUS |
| Legislative | FAA Reauthorization Appropriations Political Action / PAC |
| Safety | ASRS / Reporting Runway Safety Professional Standards CISM |
| Union | ITC Conferences Political Action Elections CRWG Safety Committee Training Committee Membership + more committees as needed |
| Platform | How areas appear | Filterable? |
|---|---|---|
| Hub — topic page | Filter chips below the topic header. Click "NCEPT" to show only NCEPT stories within Working Conditions. | Yes — client-side filter, instant |
| Hub — story card | Small chip next to the topic badge: NCEPT | — |
| Hub — AI search | Area is indexed as a structured facet. "Show me all NCEPT documents" works as a query. | Yes — via pgvector + metadata filter |
| Discord — forum post | Chip in the embed metadata fields (not a Discord tag). Shows as "Area: NCEPT / Employee Movement" in the embed. | No — Discord search only (not tag filter). Members use Hub for area filtering. |
| Discord — announcement | Same — area shown in the embed fields as a chip. Not a Discord tag. | No |
| Not used for email routing (subscriptions are topic-level). Area appears in the email body for context. | No |
👆 Area appears as an embed field, not a Discord tag — no tag limit applies
Axis 3 — where is this in its life? Not all content goes through every stage. An SOP goes straight to Reference. A shutdown story goes Developing → Resolved. The lifecycle determines the Hub status badge and Discord tag.
Key distinction: Reference ≠ Resolved. An MOU is Reference from the moment it's signed — it was never Developing. A shutdown story goes Developing → Resolved, and its associated SOPs remain Reference. These are different paths.
| Content Type | Typical Path | Example |
|---|---|---|
| 📰 Update | 🔄 Developing → ✅ Resolved (rolling) or → ✅ Resolved immediately (one-time) |
Shutdown coverage, pay raise, ASRS changes, election results |
| 📋 Document | → 📌 Reference (immediate) | LTH SOP, Slate Book MOU, NOTAM lessons learned |
| ⚡ Action Needed | ⚡ Action Needed → ✅ Resolved (at deadline) | TA vote, benefits enrollment, scholarship application |
| 📅 Event | 🟢 Active → ✅ Resolved (after event) | CFS Conference, NIW fly-in, regional training |
Hub explains and discusses. DMS stores and governs. They link to each other — neither contains the other. Every path leads to both the context (Hub story) and the artifact (DMS document).
The communication and context layer:
The canonical artifact:
| Search path | Result |
|---|---|
| Search DMS for "long-term hold SOP" | → Finds the PDF directly. "Related Stories" links to the Hub story. |
| Search Hub for "long-term hold" | → Finds the story. "Related Documents" links to the DMS PDF. |
| Browse Hub → Working Conditions → filter by 📋 Document | → Shows all documents in that topic. Click through to the story + PDF. |
| Search Discord #working-conditions | → Finds the forum post. Buttons link to Hub story and DMS. |
| AI search: "what's the rule about LTH at level 12 facilities?" | → Surfaces both the Hub story and the DMS document via pgvector. |
Hub is the canonical source. Discord and email are distribution channels. DMS is the document archive. Here's how they connect.
| Platform | Role | What lives here | Links to |
|---|---|---|---|
| Hub | Canonical source | Stories + updates, Tiptap-authored, permanent URL | DMS (related docs), Discord (forum post), Email (campaign) |
| Discord | Discussion + notification | Forum posts (by topic), announcement feed, member threads | Hub (via buttons on every post) |
| DMS | Document archive | Official PDFs — SOPs, MOUs, contract interpretations | Hub (related stories, computed) |
| Push delivery | Campaigns per topic subscription, digests, alerts | Hub (every email links to the Hub story) |
Content Standards · MyNATCA Hub Updates System · Phase 0 Mockup
See docs/architecture/decisions/001-updates-system.md for the full ADR.