Skip to content

Use the Dashboard

The Streamlit dashboard provides an operator view into the content pipeline. It runs at https://dashboard.naluma.space in production, protected by Cloudflare Access.

Authentication

The dashboard uses Cloudflare Access (Zero Trust) for authentication. Users authenticate via Google or GitHub OAuth through Cloudflare's identity proxy. The dashboard validates the Cf-Access-Jwt-Assertion header on each request to verify the user's identity.

User accounts are stored in the dashboard_users table. The email from the Cloudflare Access JWT must match a row in this table.

For local development without Cloudflare Access:

ENVIRONMENT=local DASHBOARD_DEV_EMAIL=admin@example.com uv run streamlit run dashboard/app.py

Roles

Role Access
editor All pages except Prompts and User Management
admin All pages, including prompt editing and user management

Pages

1. Pipeline

Overview of pipeline activity: status counts, recent runs, cost summary, and action items (articles pending review).

2. Article Management

Manage the content backlog and article lifecycle with filters by status, pillar, language, and content type.

Views:

  • Flat table — editable data grid with inline editing (title, pillar, language, content type, keyword, priority, status)
  • Tree view — cornerstones as expandable sections with nested satellite tables showing progress

Admin features:

  • Add individual backlog items via form
  • CSV bulk import (see below)
  • Review, edit, approve, or reject pending article briefs
  • Deep-dive into a single article across tabs: overview, drafts, quality scores, cost breakdown, timeline

3. Research Management

Manage RSS feed sources, view triaged items, and preview digest articles.

4. Review & Publishing

Review articles in ready_for_review status, approve or request changes, and trigger publishing to WordPress. Also supports republishing for partial publish recovery.

5. Analytics

Cost trends, quality metrics, production throughput, and source analytics over time.

6. Source Management

Manage the curated catalog of trusted sources and external RSS/PubMed feed registrations. Trusted sources are authoritative tinnitus sources injected into brief generation. Each source has a name, domain, category (academic journal, medical org, patient org, etc.), language, and notes. Sources can be toggled active/inactive.

7. Prompts (Admin)

View, compare, and manage agent prompt versions. Shows active/inactive status and prompt text diff between versions.

8. User Management (Admin)

Create and edit dashboard users, assign roles, and view the audit log. Users are identified by email (matching their Cloudflare Access identity).

CSV Import

The backlog page supports bulk import from CSV files.

Required Columns

Column Type Description
content_type string Article type: satellite, cornerstone, or research_news
pillar string Content pillar: p1 through p5
language string Language code: en or de
primary_keyword string Main SEO keyword
working_title string Article working title
target_word_count integer Target length in words (e.g., 1500)
priority_score number Priority score from 0.0 to 100.0
source string Origin: seo_research, manual, or gap_analysis

Optional Columns

Column Type Default Description
secondary_keywords text {} Comma-separated secondary keywords
search_intent string informational Search intent type
journey_stage string exploration User journey stage
info_gain_angle string "" Unique angle or information gain
aeo_priority string standard AI Engine Optimization priority
authorship_level string brand_attributed Attribution level
status string planned Initial status
cornerstone_id UUID null UUID of parent cornerstone (for satellites)
notes string "" Free-text notes

Example CSV

content_type,pillar,language,primary_keyword,working_title,target_word_count,priority_score,source
satellite,p1,en,tinnitus causes,What Causes Tinnitus?,1500,75.0,seo_research
satellite,p2,de,tinnitus behandlung,Tinnitus Behandlung: Ein Leitfaden,2000,80.5,seo_research
cornerstone,p1,en,tinnitus overview,Complete Guide to Tinnitus,3000,95.0,manual

Import Steps

  1. Navigate to the Backlog page
  2. Scroll to CSV Import (admin only)
  3. Upload your CSV file
  4. Preview the first 20 rows
  5. Click Import to Backlog

Column names must match the database column names exactly. See the Database reference for full column definitions.