Architecture

Pressroom is a hosted platform with a web dashboard, a REST API, and an MCP server for headless access via Claude Code.

Architecture

System overview

Pressroom is a hosted platform with a web dashboard, a REST API, and an MCP server for headless access via Claude Code.

┌──────────────────────────────────────────────────────────────┐
│                       Web Dashboard                          │
│  Scout | Stories | Queue | Publish | Audit | Voice | Video   │
│  GSC | Blog | Assets | Scoreboard | Activity Log             │
└─────────────────────────┬────────────────────────────────────┘

┌─────────────────────────┴────────────────────────────────────┐
│                    Pressroom Platform                          │
│                                                               │
│  ┌──────────┐  ┌───────────┐  ┌───────────────────────────┐  │
│  │ API      │  │ Engine    │  │ Skills                    │  │
│  │          │→ │           │→ │ humanizer, seo_geo, taste │  │
│  │          │  │           │  │ channels/*, custom...     │  │
│  └──────────┘  └─────┬─────┘  └───────────────────────────┘  │
│                       │                                       │
│  ┌────────────────────┴──────────────────────────────────┐   │
│  │                  Service Layer                          │   │
│  │  services/performance.py — Content performance metrics │   │
│  │  services/blog_publisher.py — Blog publishing          │   │
│  │  services/storage.py — S3/cloud storage                │   │
│  │  services/social_auth.py — Social OAuth helpers        │   │
│  │  skills/channels/ — Channel generation templates       │   │
│  └────────────────────┬──────────────────────────────────┘   │
│                       │                                       │
│  ┌────────────────────┴──────────────────────────────────┐   │
│  │                   Data Layer                            │   │
│  │   Per-org isolated storage + DreamFactory               │   │
│  └────────────────────────────────────────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

┌─────────────────────────┴────────────────────────────────────┐
│                    External Services                           │
│  Claude API | GitHub | LinkedIn | HubSpot | RSS | Medium      │
│  Google Search Console | Slack | Dev.to | YouTube | S3        │
└─────────────────────────┬────────────────────────────────────┘

┌─────────────────────────┴────────────────────────────────────┐
│               Remotion Renderer (React/Node)                  │
│  YouTube scripts → Remotion components → rendered video       │
└─────────────────────────┬────────────────────────────────────┘

┌─────────────────────────┴────────────────────────────────────┐
│                       MCP Server                              │
│  ~100 tools — headless access for Claude Code                 │
└──────────────────────────────────────────────────────────────┘

Data model

Core

ConceptPurpose
OrganizationsMulti-tenant workspaces — each org is isolated
SignalsIndustry signals pulled from HN, Reddit, GitHub, RSS
ContentGenerated content queue with status workflow
StoriesEditorial story containers (curated signals + angle)
Story signalsSignal-story relationships with editor notes
BriefsDaily brief summarizing signals + editorial angle
SettingsKey-value org configuration

SIGINT pipeline

ConceptPurpose
SourcesGlobal source library (Reddit, HN, RSS, X search, trends)
Org sourcesPer-org source subscriptions
Raw signalsCrawled signals before relevance filtering
Org fingerprintsPer-org embedding vector for relevance scoring

Wire

ConceptPurpose
Wire sourcesCompany-owned feeds (GitHub repos, blog RSS, changelog)
Wire signalsSignals from company’s own channels

Supporting

ConceptPurpose
Team membersDiscovered team members with expertise tags and voice analysis
Blog postsScraped blog context for voice training
Company assetsTracked digital assets (logos, images, brand materials)
Site propertiesSEO properties (domains, blog URLs) for auditing workflows
Audit resultsSEO/README audit results
SEO PR runsSEO PR pipeline run tracking
Email draftsComposed email templates
AI visibilityQuestions + citation results from ChatGPT/Perplexity/Claude
Competitor auditsCompetitor SEO + citation scores
Token usageAPI token consumption tracking by operation and over time
Activity logWar room log of all platform actions
Data sourcesCustom external data source connections (MCP, REST API)
GSC dataGoogle Search Console analytics, URL inspection, sitemaps
Brand assetsAuto-discovered brand colors, logos, assets from domain crawl
ScoreboardMulti-org rankings and per-team-member activity stats

Content status workflow

generating → queued → approved → published → tracked
                  ↘ spiked
  • generating — Claude is producing content
  • queued — Ready for human review
  • approved — Greenlit for publish
  • spiked — Rejected (used as anti-pattern memory for future generation)
  • published — Sent to destination platform
  • tracked — Post-publish performance metrics (views, likes, comments, shares) collected from LinkedIn, Dev.to

Multi-tenancy

Each organization is fully isolated. Signals, content, settings, team members, and audit results are scoped per org. Account-level settings (API keys, OAuth credentials) are shared across orgs within the same account.

Signal types

TypeSource
github_releaseGitHub releases API
github_commitGitHub commits API
hackernewsHN search API
redditReddit scraping
rssRSS feed parsing
web_searchWeb search
trendTrend discovery
supportSupport ticket analysis
performancePerformance metrics
gscGoogle Search Console data

Content channels

ChannelOutput format
linkedinProfessional post with hooks
devtoDev.to article with frontmatter
x_threadThread-format short posts
facebookSocial post
blogLong-form article with headers
release_emailEmail template with subject line
newsletterNewsletter digest format
yt_scriptYouTube script with hook, sections, lower thirds
github_gistGitHub gist (generated and published for team members)

AI models

TaskModel
Content generationClaude Sonnet
HumanizationClaude Sonnet
Relevance filteringClaude Sonnet
SEO analysisClaude Sonnet
Fast tasks (classification)Claude Haiku
Embeddings (optional)Voyage

Access methods

MethodBest for
Web dashboardDay-to-day content workflow, approvals, publishing
REST APICustom integrations, automation, programmatic access
MCP server (~100 tools)Claude Code sessions, AI-driven content operations