Workflow
How SS-1 works
A complete walkthrough of the SS-1 intelligence loop — from project initialisation to approved manifest update. The scenario: a fictional company, Meridian Analytics, monitoring a competitor called DataVault Pro.
System overview
User Input (CommandBar)
│
▼
┌─────────────────────────────────────────────┐
│ SS-1 Sidecar (Python FastAPI) │
│ │
│ Intent Classifier (Haiku) │
│ │ │
│ ▼ │
│ Monitor Node (Haiku + Firecrawl/Tavily) │
│ │ ← scans tracked URLs │
│ ▼ │
│ Analyst Node (Sonnet) │
│ │ ← compares against manifest │
│ ▼ │
│ Significance Gate (Haiku) │
│ │ score < 40 → discard │
│ │ score ≥ 40 → continue │
│ ▼ │
│ Propose Node (Sonnet) │
│ │ ← generates intelligence brief │
│ ▼ │
│ HITL Approval Gate ← blocks thread │
│ │ user approves / dismisses │
│ ▼ │
│ Apply Node │
│ │ ← writes manifest via GitPython │
│ ▼ │
│ manifest.md ←→ git repo │
└─────────────────────────────────────────────┘
│ WebSocket stream
▼
React UI (MessageStream + Cards)
Project initialisation
User runs ss1 init "Meridian Analytics" in the command bar. The backend creates a project record in SQLite, initialises a local git repo, and generates a blank manifest.md from the standard template.
A SCAN_STATUS card streams to the UI confirming the project path. The manifest editor panel opens so the user can define their vision, competitors, and archetypes.
Command
❯ ss1 init "Meridian Analytics"
✓ Project initialised at ~/ss1-projects/meridian-analytics/
Manifest definition
The manifest is a plain markdown file under git version control. It defines everything the intelligence pipeline reasons against: product vision, strategic priorities, competitive landscape (competitor names + tracked URLs), and target user archetypes.
For this demo, the manifest tracks two competitors:
### DataVault Pro
- URLs: datavault-pro.com/changelog, datavault-pro.com/blog
- Threat level: MEDIUM
### InsightFlow
- URLs: insightflow.io/features
- Threat level: LOW
On-demand market sync
Monitor Nodeclaude-haiku-4-5User runs ss1 sync. The backend reads the manifest, extracts competitor URLs, and dispatches them to the Monitor Node (Haiku).
Firecrawl fetches content from each tracked URL. Each fetch streams a log line to the UI in real-time. In the demo scenario, five pages are scanned across two competitors.
[SCANNING] datavault-pro.com/changelog
[SCANNING] datavault-pro.com/blog
[SCANNING] insightflow.io/features
Delta analysis
Analyst Nodeclaude-sonnet-4-6Sonnet compares the newly scraped content against the last known snapshot stored in SQLite and against the manifest context. This is not keyword matching — it is semantic comparison. The analyst is instructed to reason about whether the change is relevant to the manifest's vision, priorities, and archetypes.
[ANALYSING] Comparing snapshots against manifest context...
[ANALYSING] Extracting semantic deltas from 5 pages...
Significance scoring
Significance Gateclaude-haiku-4-5Each delta is scored 0–100 by Haiku. The score reflects how strategically significant the change is relative to the manifest. Signals below 40 are logged silently and discarded. Signals at 40+ continue to the Propose node.
In the demo: DataVault Pro's changelog scores 72 (surfaced). Their blog scores 29 (discarded). InsightFlow features score 18 (discarded).
[SCORING] DataVault Pro (changelog) → 72/100 — surfacing
[SCORING] DataVault Pro (blog) → 29/100 — below threshold, discarded
[SCORING] InsightFlow (features) → 18/100 — below threshold, discarded
Brief generation
Propose Nodeclaude-sonnet-4-6Sonnet generates a structured intelligence brief. Not a news summary. A brief contains:
- ·Signal title and competitor attribution
- ·Plain-language summary of what changed
- ·Strategic implication — how this relates to manifest vision and archetypes
- ·Proposed manifest update — specific text change as a before/after diff
- ·Three strategic response options (not tactical feature requests)
- ·Significance rationale — why it scored what it scored
HITL approval gate
The brief renders as a SignalBriefCard in the stream. The thread is paused. Three actions are available:
Manifest update + git commit
On approval, the Apply Node writes the proposed changes to manifest.md via GitPython and creates a git commit. A ManifestDiffCard streams to the UI showing what changed — removed lines in rose, added lines in green.
The manifest version is recorded in the manifest_versions table alongside the triggering signal ID and commit hash. Every agent-triggered update is distinguishable from user-triggered edits in the history view.
Export and history
ss1 export --latest renders the approved brief as a clean Markdown document and saves it to the project's /briefs directory. An ExportReadyCard confirms the path and word count.
ss1 history surfaces a timeline of all manifest versions, including commit hash, date, change summary, and whether the update was agent-triggered or manually authored.
Command reference
ss1 init "Name"Initialise a new project and manifestss1 syncTrigger on-demand market scanss1 historyView manifest version timeliness1 export --latestExport most recent approved briefss1 statusShow project status cardss1 manifest editOpen manifest in editor panel