Files
gridpilot.gg/docs/MESSAGING.md
2025-12-31 19:55:43 +01:00

3.7 KiB
Raw Blame History

GridPilot — Messaging & Communication System

Design Document (Code-First, Admin-Safe)


1. Goals

The messaging system must:

  • be code-first
  • be fully versioned
  • be safe by default
  • prevent admins from breaking tone, structure, or legality
  • support transactional emails, announcements, and votes
  • give admins visibility, not creative control

This is not a marketing CMS.
It is infrastructure.


2. Core Principles

2.1 Code is the Source of Truth

  • All email templates live in the repository
  • No WYSIWYG editors
  • No runtime editing by admins
  • Templates are reviewed like any other code

2.2 Admins Trigger, They Dont Author

Admins can:

  • preview
  • test
  • trigger
  • audit

Admins cannot:

  • edit wording
  • change layout
  • inject content

This guarantees:

  • consistent voice
  • legal safety
  • no accidental damage

3. Template System

3.1 Template Structure

Each template defines:

  • unique ID
  • version
  • subject
  • body (HTML + plain text)
  • allowed variables
  • default values
  • fallback behavior

Example (conceptual):

  • league_invite_v1
  • season_start_v2
  • penalty_applied_v1

Templates are immutable once deprecated.


3.2 Variables

  • Strictly typed
  • Explicit allow-list
  • Required vs optional
  • Default values for previews

Missing variables:

  • never crash delivery
  • always fall back safely

4. Admin Preview & Testing

4.1 Preview Mode

Admins can:

  • open any template
  • see rendered output
  • switch between HTML / text
  • inspect subject line

Preview uses:

  • test data only
  • never real user data by default

4.2 Test Send

Admins may:

  • send a test email to themselves
  • choose a predefined test dataset
  • never inject arbitrary values

Purpose:

  • sanity check
  • formatting validation
  • confidence before triggering

5. Delivery & Audit Trail

Every sent message is logged.

For each send event, store:

  • template ID + version
  • timestamp
  • triggered by (admin/system)
  • recipient(s)
  • delivery status
  • error details (if any)

Admins can view:

  • delivery history
  • failures
  • resend eligibility

6. Trigger Types

6.1 Automatic Triggers

  • season start
  • race reminder
  • protest resolved
  • penalty applied
  • standings updated

6.2 Manual Triggers

  • league announcement
  • sponsor message
  • admin update
  • vote launch

Manual triggers are:

  • explicit
  • logged
  • rate-limited

7. Newsletter Handling

Newsletters follow the same system.

Characteristics:

  • predefined formats
  • fixed structure
  • optional sections
  • no free-text editing

Admins can:

  • choose newsletter type
  • select audience
  • trigger send

Admins cannot:

  • rewrite copy
  • add arbitrary sections

8. Voting & Poll Messaging

Polls are also template-driven.

Flow:

  1. Poll defined in code
  2. Admin starts poll
  3. System sends notification
  4. Users vote
  5. Results summarized automatically

Messaging remains:

  • neutral
  • consistent
  • auditable

9. Admin UI Scope

Admin interface provides:

  • template list
  • preview button
  • test send
  • send history
  • delivery status
  • trigger actions

Admin UI explicitly excludes:

  • template editing
  • layout controls
  • copywriting fields

10. Why This Matters

This approach ensures:

  • trust
  • predictability
  • legal safety
  • consistent brand voice
  • low operational risk
  • no CMS hell

GridPilot communicates like a tool, not a marketing department.


11. Non-Goals

This system will NOT:

  • support custom admin HTML
  • allow per-league copy editing
  • replace marketing platforms
  • become a newsletter builder

That is intentional.


12. Summary

Code defines communication.
Admins execute communication.
Users receive communication they can trust.

Simple. Stable. Scalable.