Skip to content

Instantly share code, notes, and snippets.

@clsandoval
Created January 16, 2026 08:06
Show Gist options
  • Select an option

  • Save clsandoval/9f9030fc195316fb45ee584ff50aec0d to your computer and use it in GitHub Desktop.

Select an option

Save clsandoval/9f9030fc195316fb45ee584ff50aec0d to your computer and use it in GitHub Desktop.
Decision AI Analysis v3 - Competitor Overview, Pack Manifest Format, Artifact Output Patterns

Competitor Overview

Comprehensive analysis of 26 competitor repositories analyzed for Decision AI product positioning


Executive Summary

This document provides a structured overview of all competitors analyzed during our research phase. Each competitor is categorized by market segment, with detailed profiles including value propositions, target audiences, key features, and user journey diagrams.

Key Finding: The market is fragmented across multiple niches. No single competitor addresses our full vision of unified context across platforms + modular AI sessions (deployable Claude instances) + trust-focused data science. This represents our blue ocean opportunity.


CURRENT STATE vs FUTURE VISION

CRITICAL: This section clearly distinguishes what EXISTS today versus what is PLANNED for the future.

What EXISTS Today (January 2025)

Component Status Description
Discord Bot IMPLEMENTED Primary user interface
Workflow Executor IMPLEMENTED Claude API with workflow_tools
Fly.io Deployment IMPLEMENTED Dynamic machine creation via fly_app_tools
ACP Protocol IMPLEMENTED Inter-session communication via SSE
Session Templates IMPLEMENTED Supabase database records
Builder Claude IMPLEMENTED Containerization service with meta-skills

What is PLANNED (Future Vision)

Component Status Description
Decision Packs PLANNED GitHub repos as deployable units with pack.yaml manifests
Pack Registry PLANNED Searchable index of available packs
Pack Marketplace PLANNED Web UI for discovery and deployment
Voice Sessions PLANNED Hands-free Discord voice interaction
Memory Layer PLANNED Persistent cross-session memory

Builder as Claude Factory: Our Key Differentiator

What makes Decision AI unique: Builder Claude doesn't just containerize codeβ€”it constructs entire intelligent environments.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    BUILDER AS CLAUDE FACTORY (CURRENT)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   INPUT: User's code repository                                              β”‚
β”‚          (any framework: Marimo, Streamlit, FastAPI, etc.)                  β”‚
β”‚                                                                             β”‚
β”‚   BUILDER CLAUDE CONSTRUCTS:                                                 β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚  1. Docker image with user's code                                    β”‚   β”‚
β”‚   β”‚  2. .claude/ directory with:                                         β”‚   β”‚
β”‚   β”‚     β”œβ”€β”€ CLAUDE.md (execution rules + purpose)                        β”‚   β”‚
β”‚   β”‚     └── skills/ (generated from repo analysis)                       β”‚   β”‚
β”‚   β”‚  3. ACP server for communication                                     β”‚   β”‚
β”‚   β”‚  4. GitHub session repo (source of truth)                            β”‚   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚   OUTPUT: Complete Claude Code environment deployed on Fly.io               β”‚
β”‚                                                                             β”‚
β”‚   KEY INSIGHT: Each build = complete Claude Code environment                β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

User Intent Priority (Decision Flow)

Does repo have .claude/?
β”œβ”€β”€ YES β†’ Inherit/merge (user customizations WIN)
β”‚         - Preserve existing skills, hooks, CLAUDE.md
β”‚         - Merge base execution rules
β”‚         - Add missing infrastructure skills
β”‚
└── NO β†’ Did user specify skill preferences?
    β”œβ”€β”€ YES β†’ Follow their guidance exactly
    β”‚
    └── NO β†’ Generate from scratch using meta-skills:
             a. Analyze repo (dependencies, code patterns, purpose)
             b. Detect framework (Marimo, Streamlit, FastAPI, etc.)
             c. Generate domain-specific skills
             d. Create CLAUDE.md with execution rules

Git as Source of Truth

Each session gets its own GitHub repository. This replaces container-as-artifact with git as the unit of reproducibility.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    GIT AS SOURCE OF TRUTH (CURRENT)                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   Session Repo Pattern:                                                      β”‚
β”‚   β€’ New GitHub repo: github.com/org/session-mmm-{hex}                       β”‚
β”‚   β€’ All changes tracked: git add -A && git commit after work                β”‚
β”‚   β€’ Versioning via tags: git tag "template/my-analysis-v1"                  β”‚
β”‚   β€’ Full history: Browsable on GitHub, diffable                             β”‚
β”‚                                                                             β”‚
β”‚   Benefits:                                                                  β”‚
β”‚   β€’ Transparency: Readable source code, not opaque binary images            β”‚
β”‚   β€’ Reproducibility: git clone --branch tag = exact state                   β”‚
β”‚   β€’ Shareability: Link to GitHub repo = shareable, forkable                 β”‚
β”‚   β€’ Auditable: Every change logged with timestamps, diffs                   β”‚
β”‚                                                                             β”‚
β”‚   Build Result Format:                                                       β”‚
β”‚   {                                                                          β”‚
β”‚     "status": "complete",                                                   β”‚
β”‚     "app_name": "template-my-thing",                                        β”‚
β”‚     "image_ref": "registry.fly.io/template-my-thing:v1",                    β”‚
β”‚     "git_repo": "github.com/org/template-my-thing",                         β”‚
β”‚     "git_ref": "snapshot/v1"                                                β”‚
β”‚   }                                                                          β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Current Decision Orchestrator Architecture

What ACTUALLY exists today:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    DECISION ORCHESTRATOR - CURRENT STATE                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   Discord Bot (Primary Interface)                                            β”‚
β”‚   └── User sends message                                                     β”‚
β”‚       └── Workflow Executor runs with Claude API                             β”‚
β”‚           └── Uses workflow_tools:                                           β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_LAUNCH_BUILDER (spawn builder session)         β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_LAUNCH_SESSION (launch from template)          β”‚
β”‚               β”œβ”€β”€ CUSTOM_ACP_SEND_MESSAGE (talk to sessions)                β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_STOP_SESSION (destroy session)                 β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_GET_SESSION_STATUS (check health)              β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_LIST_SESSIONS (inventory)                      β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_LIST_TEMPLATES (available templates)           β”‚
β”‚               β”œβ”€β”€ CUSTOM_FLY_SAVE_TEMPLATE (persist as reusable)            β”‚
β”‚               └── human_interaction_tools (wait_for_human_decision)         β”‚
β”‚                                                                             β”‚
β”‚   Builder Sessions (Ephemeral)                                               β”‚
β”‚   └── Name pattern: mmm-builder-{hex}                                        β”‚
β”‚       └── Lifetime: ~5-30 minutes                                            β”‚
β”‚       └── Purpose: Clone, analyze, generate .claude/, build, deploy          β”‚
β”‚       └── Death: After deployment (cleanup via CUSTOM_FLY_STOP_SESSION)     β”‚
β”‚                                                                             β”‚
β”‚   User Work Sessions (Persistent)                                            β”‚
β”‚   └── Name pattern: mmm-{hex}                                                β”‚
β”‚       └── Lifetime: User determines (hours to days)                          β”‚
β”‚       └── Purpose: Interactive analysis, experimentation                     β”‚
β”‚       └── Environment: Framework runtime + Claude Agent SDK/ACP             β”‚
β”‚                                                                             β”‚
β”‚   Templates (Supabase: session_templates table)                              β”‚
β”‚   └── Columns: name, system_prompt, tools_config, mcp_config, metadata      β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Decision AI-Specific Tool Inventory (CURRENT)

Builder Lifecycle Tools

Tool Purpose Returns
CUSTOM_FLY_LAUNCH_BUILDER Spawn ephemeral builder session app_name, acp_url, build_id
CUSTOM_ACP_SEND_MESSAGE Send instructions to builder/session Claude's response
CUSTOM_FLY_STOP_SESSION Destroy session success/error

Session Lifecycle Tools

Tool Purpose Returns
CUSTOM_FLY_LAUNCH_SESSION Launch from pre-saved template app_name, urls, session_repo
CUSTOM_FLY_GET_SESSION_STATUS Check session health status, urls, session_repo
CUSTOM_FLY_LIST_SESSIONS Inventory active sessions session list

Template Management Tools

Tool Purpose Returns
CUSTOM_FLY_LIST_TEMPLATES Show available templates template list
CUSTOM_FLY_SAVE_TEMPLATE Persist build as reusable template success + metadata
CUSTOM_FLY_DELETE_TEMPLATE Remove saved template success/error

What These Tools DON'T Do:

  • No predefined Dockerfile schemasβ€”Builder Claude generates them
  • No rigid skill parametersβ€”Claude-in-Builder decides what to use
  • No forced framework choicesβ€”Claude analyzes and detects

Market Landscape Map

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              COMPETITIVE LANDSCAPE 2025                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                              β”‚
β”‚  ORCHESTRATION & FRAMEWORKS                    OBSERVABILITY & EVALUATION                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚   CrewAI     β”‚  β”‚  LangGraph   β”‚           β”‚   Langfuse   β”‚  β”‚  Braintrust  β”‚           β”‚
β”‚  β”‚  Multi-Agent β”‚  β”‚  Stateful    β”‚           β”‚  LLM Tracing β”‚  β”‚   AI Evals   β”‚           β”‚
β”‚  β”‚  Tool Mgmt   β”‚  β”‚  Workflows   β”‚           β”‚  & Prompts   β”‚  β”‚  Regression  β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                                                                                              β”‚
β”‚  PLATFORMS & BUILDERS                          MEMORY & KNOWLEDGE                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚   LLMStack   β”‚  β”‚  VoltAgent   β”‚           β”‚  ChatMemory  β”‚  β”‚    Glean     β”‚           β”‚
β”‚  β”‚   No-Code    β”‚  β”‚  TypeScript  β”‚           β”‚  4-Tier Mem  β”‚  β”‚  Enterprise  β”‚           β”‚
β”‚  β”‚   Builder    β”‚  β”‚  Full-Stack  β”‚           β”‚  Hierarchy   β”‚  β”‚  Knowledge   β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                                                                                              β”‚
β”‚  CHAT & MULTI-PLATFORM                         MARKETING ANALYTICS (MMM)                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚   Dust.tt    β”‚  β”‚   Clawdbot   β”‚           β”‚   PyMC-      β”‚  β”‚   Google     β”‚           β”‚
β”‚  β”‚  Slack AI    β”‚  β”‚  8-Platform  β”‚           β”‚  Marketing   β”‚  β”‚   LWMMM      β”‚           β”‚
β”‚  β”‚  Assistants  β”‚  β”‚  Personal AI β”‚           β”‚  Bayesian    β”‚  β”‚              β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                                                                                              β”‚
β”‚  TEMPLATE & DEPLOYMENT PLATFORMS (Inspiration for Future Pack System)                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”‚
β”‚  β”‚   Replit     β”‚  β”‚   Railway    β”‚  β”‚   Render     β”‚  β”‚   Vercel     β”‚                     β”‚
β”‚  β”‚  Templates   β”‚  β”‚  Templates   β”‚  β”‚  Blueprints  β”‚  β”‚  Templates   β”‚                     β”‚
β”‚  β”‚  Full Proj   β”‚  β”‚  One-Click   β”‚  β”‚  IaC Deploy  β”‚  β”‚  Frontend    β”‚                     β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β”‚
β”‚                                                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Gap Analysis: Our Opportunity

What NO Competitor Does

Gap Description Our Approach
Builder as Claude Factory No one generates complete Claude environments from repo analysis Meta-skills construct .claude/ dynamically
Git as Source of Truth Competitors use opaque container images Session repos track all changes via git
Unified Context No one offers context continuity across Discord/Slack/Teams/CLI Interface Primitives + Shared Memory (PLANNED)
Domain-Specific Evals No one has insight recovery benchmarks for analytics MMM Insight Recovery Experiments
Trust-First Data Science No one combines Bayesian causal + LLM + governance Trust Differentiators
ACP Protocol No standard for inter-Claude communication Our implemented protocol

What We Should Adopt

Pattern From Why
ToolCollection CrewAI Best-in-class tool management
Thread-as-Boundary Dust.tt Essential for chat context
Statistical Evals Braintrust Right approach to AI testing
4-Tier Memory ChatMemory Complete hierarchy
Manifest Format Awesome Skills Proven skill structure
Streaming Progress Replit Great deploy UX
Bayesian Foundation PyMC-Marketing Trust through uncertainty

Architectural Philosophy: Embodied vs Puppeteer

Repo2Run Pattern (Puppeteer)

🧠 (External LLM) ─────► πŸ“¦ (Dumb container)
- LLM remote-controls container
- Container has no intelligence
- Intelligence only during build time
- After build: container is static code

Our Approach (Embodied)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 🧠 (Claude INSIDE)   β”‚
β”‚ πŸ“¦ (Container/body)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
- Claude inhabits the container
- Container is Claude's body
- Intelligence at runtime
- Interactive collaboration with user

Trade-offs

Aspect Repo2Run Decision AI
External rollback Excellent Requires orchestrator
Deterministic outputs Yes No (but adaptive)
Runtime adaptation No Yes
Domain expertise None Skills loaded in session
User collaboration None Interactive
Multi-repo composition Hard Flexible merging
Framework support Python-only Framework-agnostic

Complete Competitor List

# Competitor Category What They Do (One-Liner)
1 CrewAI Framework Multi-agent orchestration with role-based collaboration and tool collections
2 LangGraph Framework Stateful graph-based workflows for LLM applications
3 Swarm Framework Lightweight multi-agent handoffs (educational, by OpenAI)
4 Claude-Flow Framework Enterprise multi-agent swarms with neural learning and MCP
5 AutoGen Framework Microsoft's multi-agent conversation framework
6 Pydantic-AI Framework Type-safe Python agents with structured outputs
7 VoltAgent Platform TypeScript full-stack agent framework with VoltOps observability
8 LLMStack Platform No-code visual builder for AI agents and workflows
9 BotSharp Platform .NET/C# agent framework with plugin architecture
10 Composio SDK 500+ app integrations for AI agents
11 Langfuse Observability LLM tracing, prompt management, and evaluation
12 Braintrust Observability Statistical AI evaluation with regression detection
13 AgentOps Observability Agent session replay and cost tracking
14 ChatMemory Memory 4-tier hierarchical memory for AI assistants
15 Glean Knowledge Enterprise permission-aware knowledge search
16 Dust.tt Chat Thread-aware Slack AI assistants
17 Clawdbot Chat 8-platform personal AI assistant (desktop)
18 KIRA Chat Privacy-first desktop AI coworker
19 Runbear Chat Tiered Slack/Teams bot platform
20 Awesome Claude Skills Skills Open-source skill manifest patterns
21 PyMC-Marketing MMM Bayesian causal marketing mix modeling
22 Meta Robyn MMM Automated MMM with Pareto optimization
23 Replit Templates Templates Full project templates with instant deployment
24 Railway Templates Templates One-click deployable app templates
25 Render Blueprints Templates Infrastructure-as-code deployment templates
26 Vercel Templates Templates Frontend/fullstack starter templates

Master Comparison Table

Competitor Category Primary Language Deploy Model Key Differentiator Pricing
CrewAI Framework Python Library Role-based multi-agent + ToolCollection OSS
LangGraph Framework Python Library Stateful graphs + checkpointing OSS + Cloud
Swarm Framework Python Library Minimal primitives (educational) OSS
Claude-Flow Framework TypeScript Enterprise 54+ agents + neural learning OSS
AutoGen Framework Python Library Conversational multi-agent OSS
Pydantic-AI Framework Python Library Type safety + structured outputs OSS
VoltAgent Platform TypeScript Hybrid Full-stack + VoltOps console OSS + Cloud
LLMStack Platform Python Self-hosted No-code visual builder OSS + Cloud
BotSharp Platform C# Enterprise .NET ecosystem + plugins OSS
Composio SDK TypeScript Multi-framework 500+ integrations Freemium
Langfuse Observability TypeScript Self-hosted Tracing + prompt management OSS + Cloud
Braintrust Observability Python Cloud Statistical evals + regression Freemium
AgentOps Observability Python Cloud Session replay + cost tracking Freemium
ChatMemory Memory Python Library 4-tier hierarchy + pgvector OSS
Glean Knowledge - Enterprise Permission-aware search Enterprise
Dust.tt Chat - Cloud Thread-aware Slack AI Tiered
KIRA Chat Python Desktop Privacy-first, local-only OSS
Clawdbot Chat TypeScript Desktop 8-platform personal AI OSS
Runbear Chat - Cloud Tiered bot platform Tiered
Awesome Skills Skills - - Manifest format pattern OSS
PyMC-Marketing MMM Python Library Bayesian causal inference OSS
Robyn MMM R Library Automated Pareto optimization OSS
LightweightMMM MMM Python Library Google's Bayesian MMM OSS
Nielsen MMM - Service Industry standard Enterprise
Replit Agent Deploy - Cloud Zero-friction deploy Freemium
Hex AI Artifacts - Cloud Professional notebooks Tiered
v0.dev Artifacts - Cloud AI-generated UI preview Freemium

Document generated for Decision AI competitive analysis - January 2025 26 competitors analyzed across 9 categories Updated to reflect actual current state + Builder as Claude Factory architecture

Session Templates & Future Pack Architecture

This document describes the CURRENT template system in Decision Orchestrator and the FUTURE VISION for "Decision Packs" as deployable repositories.


CRITICAL: Current State vs. Future Vision

Aspect CURRENT (Implemented) FUTURE (Planned)
Storage Supabase database records GitHub repositories
Format JSON in database columns pack.yaml manifests + code
Deployment Dynamic Fly.io machines Pre-built container images
Discovery Query by name Trigger-based matching
Versioning metadata.version field Git tags
Status IMPLEMENTED VISION - NOT YET BUILT

CURRENT STATE: Session Templates (IMPLEMENTED)

Template Structure

-- Current schema (from supabase/migrations/)
CREATE TABLE session_templates (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    name TEXT UNIQUE NOT NULL,
    system_prompt TEXT NOT NULL,
    tools_config JSONB DEFAULT '{}',
    mcp_config JSONB DEFAULT '{}',
    metadata JSONB DEFAULT '{}',
    is_default BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMPTZ DEFAULT now(),
    updated_at TIMESTAMPTZ DEFAULT now()
);

How Templates Work Today

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    CURRENT TEMPLATE SYSTEM (IMPLEMENTED)                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   Supabase: session_templates table                                          β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚ id          β”‚ UUID (primary key)                                     β”‚   β”‚
β”‚   β”‚ name        β”‚ "marketing-analyst"                                    β”‚   β”‚
β”‚   β”‚ system_promptβ”‚ "You are a marketing analysis assistant..."          β”‚   β”‚
β”‚   β”‚ tools_configβ”‚ {"allowed_tools": ["search", "calculate"]}            β”‚   β”‚
β”‚   β”‚ mcp_config  β”‚ {"servers": [...]}                                     β”‚   β”‚
β”‚   β”‚ metadata    β”‚ {"version": "1.0", "author": "team"}                  β”‚   β”‚
β”‚   β”‚ is_default  β”‚ false                                                  β”‚   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚   How it's used:                                                             β”‚
β”‚   1. User requests session via Discord                                       β”‚
β”‚   2. Workflow executor queries session_templates by name                     β”‚
β”‚   3. System prompt and configs are loaded                                   β”‚
β”‚   4. Fly.io machine is created with this configuration                       β”‚
β”‚   5. Claude instance runs with the template's instructions                   β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Example Template Record

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "marketing-analyst",
  "system_prompt": "You are a marketing analytics assistant specializing in budget optimization and ROI analysis...",
  "tools_config": {
    "allowed_tools": ["search_web", "calculate", "create_chart"],
    "restrictions": []
  },
  "mcp_config": {
    "servers": []
  },
  "metadata": {
    "version": "1.0",
    "category": "analytics",
    "author": "pymc-labs"
  },
  "is_default": false
}

CURRENT STATE: Builder Claude's Role (IMPLEMENTED)

Builder Claude doesn't just use templatesβ€”it generates complete Claude environments from repository analysis.

Builder as Claude Factory

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    BUILDER AS CLAUDE FACTORY (CURRENT)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   When Builder receives a repo URL:                                          β”‚
β”‚                                                                             β”‚
β”‚   1. CLONE repository to /workspace/app                                      β”‚
β”‚                                                                             β”‚
β”‚   2. ANALYZE the repo:                                                       β”‚
β”‚      β”œβ”€β”€ Detect framework (Marimo, Streamlit, FastAPI, etc.)                β”‚
β”‚      β”œβ”€β”€ Check for existing .claude/ directory                              β”‚
β”‚      └── Identify dependencies and purpose                                  β”‚
β”‚                                                                             β”‚
β”‚   3. CONSTRUCT production .claude/ using META-SKILLS:                        β”‚
β”‚      β”œβ”€β”€ claude-factory.md (master skill)                                   β”‚
β”‚      β”œβ”€β”€ skill-creation.md (generate domain-specific skills)                β”‚
β”‚      β”œβ”€β”€ claude-md-templates.md (CLAUDE.md generation)                      β”‚
β”‚      └── merge-strategy.md (if repo has existing .claude/)                  β”‚
β”‚                                                                             β”‚
β”‚   4. GENERATE Dockerfile using framework skills:                             β”‚
β”‚      └── dockerfile-gen.md (framework-specific patterns)                    β”‚
β”‚                                                                             β”‚
β”‚   5. SET UP ACP server (always required)                                     β”‚
β”‚                                                                             β”‚
β”‚   6. DEPLOY via Fly: fly deploy --remote-only                               β”‚
β”‚                                                                             β”‚
β”‚   7. CREATE GitHub session repo as source of truth                           β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Meta-Skills (What Builder Uses)

Meta-Skill Purpose Location
claude-factory Orchestrate entire .claude/ construction .claude/skills/meta/
skill-creation Generate new skills from repo analysis .claude/skills/meta/
claude-md-templates Templates for CLAUDE.md generation .claude/skills/meta/
merge-strategy Combine repo's .claude/ with base .claude/skills/meta/
dockerfile-gen Framework-specific Dockerfile patterns .claude/skills/building/

Production Image Structure (What Builder Creates)

production-image/
β”œβ”€β”€ app/                    # User's code
β”œβ”€β”€ acp-server/             # Claude Agent SDK ACP server (REQUIRED)
β”‚   β”œβ”€β”€ server.py
β”‚   β”œβ”€β”€ tools/
β”‚   └── pyproject.toml
└── .claude/
    β”œβ”€β”€ CLAUDE.md           # Execution rules + purpose (REQUIRED)
    └── skills/             # Generated domain-specific skills (optional)

Git as Source of Truth (CURRENT)

Each session gets its own GitHub repository. This is IMPLEMENTED, not future vision.

Session Repo Pattern

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    GIT AS SOURCE OF TRUTH (IMPLEMENTED)                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   For each snapshot/template, Builder CREATES a new GitHub repo:            β”‚
β”‚                                                                             β”‚
β”‚   1. gh repo create org/template-{name} --private                           β”‚
β”‚   2. Push the snapshot to that repo                                         β”‚
β”‚   3. Return the repo URL + app name to Orchestrator                         β”‚
β”‚                                                                             β”‚
β”‚   Build Result Format:                                                       β”‚
β”‚   {                                                                          β”‚
β”‚     "status": "complete",                                                   β”‚
β”‚     "app_name": "template-my-thing",                                        β”‚
β”‚     "image_ref": "registry.fly.io/template-my-thing:v1",                    β”‚
β”‚     "git_repo": "github.com/org/template-my-thing",                         β”‚
β”‚     "git_ref": "snapshot/v1"                                                β”‚
β”‚   }                                                                          β”‚
β”‚                                                                             β”‚
β”‚   Orchestrator handles saving metadata to Supabase.                          β”‚
β”‚   Git repo IS the source of truth.                                          β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Multi-Repo Sessions (Combined State)

When user clones repos A, B, C and tinkers:

  1. Session workspace has A/, B/, C/ directories (each with .git)
  2. On snapshot: Remove nested .git directories (flatten)
  3. Initialize single root .git (new Repo D)
  4. Snapshot manifest records provenance (where each part came from)
  5. Dockerfile becomes simple COPY . . (not multiple clones)
  6. Result: Combined state becomes the template source

Configuration Spectrum (CURRENT)

The system slides along a spectrum based on use case:

HARDCODED ◄─────────────────────────────────────────► DYNAMIC
(batch)                                              (R&D)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Static   β”‚  β”‚Template  β”‚  β”‚ Custom   β”‚  β”‚ Blank    β”‚
β”‚ Script   β”‚  β”‚ Launch   β”‚  β”‚ Build    β”‚  β”‚ Slate    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Position Type Builder Claude Example
Far left Static Not used Not needed Pre-built script, just execute
Left-center Template Runs once In session Pre-saved image, launch and work
Right-center Custom Build Runs now In builder & session "Build this repo, then I'll analyze it"
Far right Blank Slate Interactive Full "Install Python, let me tinker"

Key: Same architecture at all points, different configuration. Not different systems.


FUTURE VISION: Decision Packs (NOT YET IMPLEMENTED)

NOTE: Everything below this line describes a FUTURE architecture that does not yet exist in the codebase.

The Pack Vision

A Decision Pack would be a complete, deployable repository containing:

  • Dockerfile for containerization
  • All dependencies and tooling
  • Agent/skill logic and instructions
  • Manifest/configuration
  • Ready to deploy on Fly.io
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    FUTURE: DECISION PACK = DEPLOYABLE REPOSITORY             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  Current (Template):                    Future Vision (Pack):               β”‚
β”‚  ──────────────────                     ───────────────────────             β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Supabase record:    β”‚               β”‚ github.com/org/pack-mmm         β”‚ β”‚
β”‚  β”‚ - name              β”‚               β”‚                                  β”‚ β”‚
β”‚  β”‚ - system_prompt     β”‚               β”‚ β”œβ”€β”€ Dockerfile        ← BUILD   β”‚ β”‚
β”‚  β”‚ - tools_config      β”‚               β”‚ β”œβ”€β”€ fly.toml          ← DEPLOY  β”‚ β”‚
β”‚  β”‚ - mcp_config        β”‚               β”‚ β”œβ”€β”€ requirements.txt  ← DEPS    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚ β”œβ”€β”€ pack.yaml         ← MANIFESTβ”‚ β”‚
β”‚                                        β”‚ β”œβ”€β”€ .claude/                    β”‚ β”‚
β”‚  Just database config.                 β”‚ β”‚   β”œβ”€β”€ CLAUDE.md     ← BRAIN   β”‚ β”‚
β”‚  Session created                       β”‚ β”‚   └── skills/                 β”‚ β”‚
β”‚  dynamically.                          β”‚ β”œβ”€β”€ acp-server/       ← COMMS   β”‚ β”‚
β”‚                                        β”‚ └── app/              ← CODE    β”‚ β”‚
β”‚                                        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                             β”‚
β”‚                                        Complete. Self-contained. Deployable.β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Proposed Pack Manifest (pack.yaml) - FUTURE

# pack.yaml - Pack Manifest (PROPOSED - NOT YET IMPLEMENTED)
name: marketing-mmm
version: 2.1.0
description: Marketing Mix Modeling with Bayesian inference and budget optimization

# Identity
author: decision-ai
license: Apache-2.0
repository: github.com/decision-ai/pack-mmm

# Discovery triggers - WHEN should this pack be suggested?
triggers:
  keywords:
    - "marketing.*budget"
    - "ROI|ROAS"
    - "attribution"
    - "media mix"
  file_patterns:
    - "*.csv"           # Marketing data files
    - "*.parquet"
  contexts:
    - analytics
    - marketing
    - planning

# Capabilities - WHAT does this pack provide?
provides:
  - bayesian-inference
  - budget-optimization
  - uncertainty-quantification
  - channel-attribution

# Dependencies - WHAT other packs does this need?
requires:
  - name: data-loader
    version: ">=1.0"
  - name: visualization
    version: ">=2.0"
    optional: true

# Runtime requirements
runtime:
  base_image: python:3.11-slim
  memory: 2gb
  cpu: shared-2x
  gpu: false

# Environment variables needed
environment:
  required:
    - ANTHROPIC_API_KEY
  optional:
    - DATABASE_URL
    - REDIS_URL

# Health check
health:
  path: /healthz
  interval: 30s
  timeout: 5s

Roadmap: From Current to Future

Phase 0: Current State (IMPLEMENTED)

  • Supabase session_templates table
  • Dynamic Fly.io machine creation
  • System prompts loaded from database
  • ACP communication between sessions
  • Builder Claude with meta-skills
  • Git repos as source of truth for sessions

Phase 1: Enhanced Templates (PLANNED)

  • Add git_repo_url field to session_templates
  • If git_url present, clone and extract .claude/
  • Template versioning via git refs

Phase 2: Pack System (FUTURE VISION)

  • Git repositories as deployable units
  • pack.yaml manifest for discovery
  • Container registry for pre-built images
  • Pack marketplace

Migration Path

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        EVOLUTION PATH                                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  TODAY (Current)             NEAR-TERM                    FUTURE            β”‚
β”‚  ──────────────              ─────────                    ──────            β”‚
β”‚                                                                             β”‚
β”‚  session_templates           session_templates            Pack repos        β”‚
β”‚  (Supabase)                  + git_repo_url field         (GitHub)          β”‚
β”‚       β”‚                          β”‚                           β”‚              β”‚
β”‚       β–Ό                          β–Ό                           β–Ό              β”‚
β”‚  system_prompt               system_prompt OR            .claude/CLAUDE.md  β”‚
β”‚  in database                 .claude/ from repo          in repository      β”‚
β”‚       β”‚                          β”‚                           β”‚              β”‚
β”‚       β–Ό                          β–Ό                           β–Ό              β”‚
β”‚  Dynamic Fly.io            Clone repo β†’                Pre-built images     β”‚
β”‚  machine creation          Build β†’ Deploy              from registry        β”‚
β”‚                                                                             β”‚
β”‚  Builder Claude            Builder Claude              Pack discovery       β”‚
β”‚  generates .claude/        respects repo .claude/      + pre-built         β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Summary

Aspect Current (Templates) Future (Packs)
Storage Supabase database + Git session repos GitHub pack repositories
Format JSON records + generated .claude/ YAML manifests + code
Deployment Builder generates, Fly deploys Pre-built containers
Discovery Query by name Trigger-based matching
Versioning Git tags on session repos Git tags on pack repos
Distribution Supabase + GitHub Container registry
Status IMPLEMENTED VISION

This document reflects the actual state of Decision Orchestrator as of January 2025. The pack system described is a future vision based on roadmap documents in the codebase.

Artifact Output Patterns

How AI agents produce, structure, and present actionable outputs to users


The Core Insight

An artifact is a discrete, actionable unit of agent output. Unlike conversational text, artifacts are:

  • Structured and machine-parseable
  • Designed for a specific next action
  • Often rendered specially in UI
  • Versioned and comparable

The best agents don't just respondβ€”they produce artifacts that enable action.


Artifact Taxonomy

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          ARTIFACT TYPES                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  CODE ARTIFACTS                         DOCUMENT ARTIFACTS                   β”‚
β”‚  ──────────────                         ──────────────────                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚ Type: code      β”‚                    β”‚ Type: document  β”‚                 β”‚
β”‚  β”‚ Lang: python    β”‚                    β”‚ Format: markdownβ”‚                 β”‚
β”‚  β”‚ Executable: yes β”‚                    β”‚ Sections: yes   β”‚                 β”‚
β”‚  β”‚ Testable: yes   β”‚                    β”‚ Exportable: yes β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                                                                             β”‚
β”‚  VISUAL ARTIFACTS                       DATA ARTIFACTS                       β”‚
β”‚  ────────────────                       ──────────────                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚ Type: visual    β”‚                    β”‚ Type: data      β”‚                 β”‚
β”‚  β”‚ Format: SVG     β”‚                    β”‚ Format: JSON    β”‚                 β”‚
β”‚  β”‚ Renderable: yes β”‚                    β”‚ Schema: defined β”‚                 β”‚
β”‚  β”‚ Interactive: ?  β”‚                    β”‚ Queryable: yes  β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                                                                             β”‚
β”‚  COMPOSITE ARTIFACTS                    ACTION ARTIFACTS                     β”‚
β”‚  ───────────────────                    ────────────────                     β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚ Type: report    β”‚                    β”‚ Type: action    β”‚                 β”‚
β”‚  β”‚ Contains:       β”‚                    β”‚ Executable: yes β”‚                 β”‚
β”‚  β”‚  - text         β”‚                    β”‚ Reversible: ?   β”‚                 β”‚
β”‚  β”‚  - charts       β”‚                    β”‚ Confirmable: yesβ”‚                 β”‚
β”‚  β”‚  - tables       β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚  β”‚  - code         β”‚                                                        β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                        β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The Artifact Lifecycle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      ARTIFACT LIFECYCLE                                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚  GENERATE  │───►│  VALIDATE  │───►│  PRESENT   │───►│   ACTION   β”‚      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β”‚        β”‚                 β”‚                 β”‚                 β”‚              β”‚
β”‚        β–Ό                 β–Ό                 β–Ό                 β–Ό              β”‚
β”‚  Agent creates     Schema check      UI renders       User acts on         β”‚
β”‚  structured        Type validation   Special display  artifact             β”‚
β”‚  output            Completeness      Action buttons   (copy, run, etc.)    β”‚
β”‚                                                                             β”‚
β”‚  ════════════════════════════════════════════════════════════════════════  β”‚
β”‚                                                                             β”‚
β”‚                         ITERATION LOOP                                       β”‚
β”‚                                                                             β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚     β”‚                                                          β”‚            β”‚
β”‚     β”‚    User: "Make the chart blue"                          β”‚            β”‚
β”‚     β”‚         β”‚                                                β”‚            β”‚
β”‚     β”‚         β–Ό                                                β”‚            β”‚
β”‚     β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚            β”‚
β”‚     β”‚    β”‚Artifact │────►│ Update  │────►│Artifact β”‚         β”‚            β”‚
β”‚     β”‚    β”‚  v1     β”‚     β”‚ Command β”‚     β”‚  v2     β”‚         β”‚            β”‚
β”‚     β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚            β”‚
β”‚     β”‚                                         β”‚               β”‚            β”‚
β”‚     β”‚                                         β”‚               β”‚            β”‚
β”‚     β”‚    Both versions preserved for comparison/rollback      β”‚            β”‚
β”‚     β”‚                                                          β”‚            β”‚
β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Structured Output Schema Pattern

The key insight: artifacts need schemas for reliability.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SCHEMA-DRIVEN ARTIFACTS                                   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  WITHOUT SCHEMA                          WITH SCHEMA                         β”‚
β”‚  ──────────────                          ───────────                         β”‚
β”‚                                                                             β”‚
β”‚  Agent output:                           Agent output:                       β”‚
β”‚  "The ROI is about 2.5x,                 {                                   β”‚
β”‚   give or take, and                        "artifact_type": "analysis",     β”‚
β”‚   you should probably                      "metrics": {                     β”‚
β”‚   increase digital spend"                    "roi": {                       β”‚
β”‚                                                "value": 2.5,               β”‚
β”‚  Problems:                                     "unit": "multiple",         β”‚
β”‚  β€’ Can't extract metrics                       "confidence": 0.87          β”‚
β”‚  β€’ Can't compare versions                    }                              β”‚
β”‚  β€’ Can't feed to downstream                },                               β”‚
β”‚  β€’ UI can't render specially               "recommendations": [             β”‚
β”‚                                              {                              β”‚
β”‚                                                "action": "increase_spend", β”‚
β”‚                                                "channel": "digital",       β”‚
β”‚                                                "amount_pct": 15            β”‚
β”‚                                              }                              β”‚
β”‚                                            ]                                β”‚
β”‚                                          }                                  β”‚
β”‚                                                                             β”‚
β”‚                                          Benefits:                          β”‚
β”‚                                          β€’ Machine-parseable               β”‚
β”‚                                          β€’ Validatable                     β”‚
β”‚                                          β€’ Comparable                      β”‚
β”‚                                          β€’ UI can render richly            β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Decision AI Artifacts: Build Results

In Decision AI, build results are a key artifact type. Builder Claude produces structured build results:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    BUILD RESULT ARTIFACT (DECISION AI)                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  After Builder Claude completes a build:                                     β”‚
β”‚                                                                             β”‚
β”‚  ## Build Result                                                             β”‚
β”‚                                                                             β”‚
β”‚  | Field | Value |                                                           β”‚
β”‚  |-------|-------|                                                           β”‚
β”‚  | **App Name** | `mmm-session-abc123` |                                    β”‚
β”‚  | **App URL** | `https://mmm-session-abc123.fly.dev` |                     β”‚
β”‚  | **Image** | `registry.fly.io/mmm-session-abc123:deployment-xyz` |        β”‚
β”‚  | **Framework** | `marimo` |                                               β”‚
β”‚  | **Git Repo** | `github.com/org/session-mmm-abc123` |                     β”‚
β”‚  | **Git Ref** | `snapshot/v1` |                                            β”‚
β”‚                                                                             β”‚
β”‚  ### Services Config                                                         β”‚
β”‚  ```json                                                                     β”‚
β”‚  [                                                                           β”‚
β”‚    {"protocol": "tcp", "internal_port": 8080,                               β”‚
β”‚     "ports": [{"port": 443, "handlers": ["tls", "http"]}]},                 β”‚
β”‚    {"protocol": "tcp", "internal_port": 3017,                               β”‚
β”‚     "ports": [{"port": 3017, "handlers": ["tls"]}]}                         β”‚
β”‚  ]                                                                           β”‚
β”‚  ```                                                                         β”‚
β”‚                                                                             β”‚
β”‚  ### Save as Template                                                        β”‚
β”‚  CUSTOM_FLY_SAVE_TEMPLATE(                                                  β”‚
β”‚    slug="mmm-analysis",                                                     β”‚
β”‚    name="MMM Analysis Session",                                             β”‚
β”‚    image_ref="registry.fly.io/mmm-session-abc123:deployment-xyz",           β”‚
β”‚    services=[...],                                                          β”‚
β”‚    framework="marimo",                                                      β”‚
β”‚    description="Marketing mix modeling with PyMC"                           β”‚
β”‚  )                                                                           β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Artifact Presentation Patterns

How artifacts are displayed to users:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    PRESENTATION PATTERNS                                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  PATTERN 1: INLINE EXPANSION                                                 β”‚
β”‚  ───────────────────────────                                                 β”‚
β”‚                                                                             β”‚
β”‚     Conversation:                                                            β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                              β”‚
β”‚     β”‚ User: "Generate a budget allocation"   β”‚                              β”‚
β”‚     β”‚                                        β”‚                              β”‚
β”‚     β”‚ Agent: "Here's the optimized budget:"  β”‚                              β”‚
β”‚     β”‚                                        β”‚                              β”‚
β”‚     β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚                              β”‚
β”‚     β”‚ β”‚ [ARTIFACT: Budget Table]           β”‚ β”‚ ◄── Rendered inline          β”‚
β”‚     β”‚ β”‚                                    β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚ Channel  β”‚ Current β”‚ Recommended  β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚ ─────────┼─────────┼────────────  β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚ TV       β”‚ $500K   β”‚ $420K        β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚ Digital  β”‚ $300K   β”‚ $380K        β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚                                    β”‚ β”‚                              β”‚
β”‚     β”‚ β”‚ [Copy] [Export CSV] [Apply]       β”‚ β”‚ ◄── Action buttons           β”‚
β”‚     β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚                              β”‚
β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                              β”‚
β”‚                                                                             β”‚
β”‚  PATTERN 2: SIDE PANEL                                                       β”‚
β”‚  ─────────────────────                                                       β”‚
β”‚                                                                             β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚
β”‚     β”‚   Conversation      β”‚     Artifact Panel               β”‚               β”‚
β”‚     β”‚                     β”‚                                  β”‚               β”‚
β”‚     β”‚  User: "Show me     β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚               β”‚
β”‚     β”‚   the analysis"     β”‚  β”‚  [LIVE PREVIEW]           β”‚  β”‚               β”‚
β”‚     β”‚                     β”‚  β”‚                           β”‚  β”‚               β”‚
β”‚     β”‚  Agent: "I've       β”‚  β”‚   Chart renders here      β”‚  β”‚               β”‚
β”‚     β”‚   created a viz..." β”‚  β”‚   Updates in real-time    β”‚  β”‚               β”‚
β”‚     β”‚                     β”‚  β”‚   as conversation         β”‚  β”‚               β”‚
β”‚     β”‚  User: "Make it     β”‚  β”‚   progresses              β”‚  β”‚               β”‚
β”‚     β”‚   a bar chart"      β”‚  β”‚                           β”‚  β”‚               β”‚
β”‚     β”‚                     β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚               β”‚
β”‚     β”‚  Agent: "Updated."  β”‚                                  β”‚               β”‚
β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚                                                                             β”‚
β”‚  PATTERN 3: ARTIFACT GALLERY                                                 β”‚
β”‚  ───────────────────────────                                                 β”‚
β”‚                                                                             β”‚
β”‚     Session artifacts:                                                       β”‚
β”‚     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                     β”‚
β”‚     β”‚ Chart   β”‚  β”‚ Code    β”‚  β”‚ Report  β”‚  β”‚ Config  β”‚                     β”‚
β”‚     β”‚ v3      β”‚  β”‚ v2      β”‚  β”‚ v1      β”‚  β”‚ v1      β”‚                     β”‚
β”‚     β”‚ [view]  β”‚  β”‚ [view]  β”‚  β”‚ [view]  β”‚  β”‚ [view]  β”‚                     β”‚
β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                     β”‚
β”‚         β–²                                                                   β”‚
β”‚         └── Click to expand, compare with previous versions                 β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Action Buttons Pattern

Every artifact should have clear next actions:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      ACTION BUTTON TAXONOMY                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  CODE ARTIFACTS                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  [Copy to Clipboard] [Run in Sandbox] [Insert into File] [Explain] β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚  DATA ARTIFACTS                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  [Download CSV] [Download JSON] [Open in Spreadsheet] [Visualize]  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚  BUILD ARTIFACTS (Decision AI specific)                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  [Open Session] [Save as Template] [View Logs] [Stop Session]      β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚  ANALYSIS ARTIFACTS                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  [Export Report] [Schedule Re-run] [Share with Team] [Add to Dash] β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β”‚  RECOMMENDATION ARTIFACTS                                                    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  [Apply Changes] [Modify Parameters] [Reject] [Request Explanation]β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Streaming & Progressive Rendering

For long-running artifact generation:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   PROGRESSIVE ARTIFACT RENDERING                             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  USER REQUEST: "Generate a comprehensive marketing report"                   β”‚
β”‚                                                                             β”‚
β”‚  TIME ────────────────────────────────────────────────────────────────►     β”‚
β”‚                                                                             β”‚
β”‚  t=0s     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚           β”‚  [ARTIFACT: Report]                          β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  Status: Generating...                       β”‚                  β”‚
β”‚           β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘  15%              β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  Sections:                                   β”‚                  β”‚
β”‚           β”‚  βœ“ Executive Summary (ready)                β”‚                  β”‚
β”‚           β”‚  ⟳ Channel Analysis (in progress)           β”‚                  β”‚
β”‚           β”‚  β—‹ Recommendations (pending)                 β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  [View Available Sections]                   β”‚                  β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β”‚                                                                             β”‚
β”‚  t=60s    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚           β”‚  [ARTIFACT: Report]                          β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  Status: Complete βœ“                          β”‚                  β”‚
β”‚           β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ  100%             β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  All 5 sections ready                        β”‚                  β”‚
β”‚           β”‚                                              β”‚                  β”‚
β”‚           β”‚  [Download PDF] [Share] [Schedule Update]    β”‚                  β”‚
β”‚           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Design Principles

Principle Implementation
Schema-First Define artifact structure before generation
Progressive Display Show what's ready while generating rest
Clear Actions Every artifact has obvious next steps
Versioning Track changes, enable comparison & rollback
Export Flexibility Multiple formats for different consumers
Inline Context Keep artifacts near relevant conversation

Common Pitfalls

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       ARTIFACT ANTI-PATTERNS                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚  PROBLEM: Wall of Text                  SOLUTION: Structured Artifact        β”‚
β”‚  ─────────────────────                  ────────────────────────             β”‚
β”‚                                                                             β”‚
β”‚  "Here's your analysis:                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚   The ROI for TV is 2.1x               β”‚ [Analysis Artifact]      β”‚        β”‚
β”‚   which is lower than digital          β”‚                          β”‚        β”‚
β”‚   at 3.2x but social is only           β”‚ ROI Summary Table        β”‚        β”‚
β”‚   1.8x so you should..."               β”‚ Key Insight: Digital > TVβ”‚        β”‚
β”‚                                         β”‚ [See Full Report]        β”‚        β”‚
β”‚  Can't scan, extract, or act            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                         Scannable, actionable               β”‚
β”‚                                                                             β”‚
β”‚  PROBLEM: No Next Steps                 SOLUTION: Action Buttons             β”‚
β”‚  ──────────────────────                 ────────────────────────             β”‚
β”‚                                                                             β”‚
β”‚  "Here's the code."                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚                                         β”‚ [Code Artifact]          β”‚        β”‚
β”‚  User: "Now what?"                      β”‚                          β”‚        β”‚
β”‚                                         β”‚ [Run] [Copy] [Test]      β”‚        β”‚
β”‚                                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β”‚                                                                             β”‚
β”‚  PROBLEM: Lost Artifacts                SOLUTION: Artifact Gallery           β”‚
β”‚  ───────────────────────                ────────────────────────             β”‚
β”‚                                                                             β”‚
β”‚  User: "Where's that chart             Session artifacts persisted          β”‚
β”‚   you made earlier?"                    and browsable in sidebar            β”‚
β”‚                                                                             β”‚
β”‚  Scroll, scroll, scroll...              One-click to find any output        β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Great artifacts are not just outputsβ€”they're starting points for the next action. The difference between "here's some text" and "here's a structured artifact with clear next steps" is the difference between a chatbot and a productive AI assistant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment