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:
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¶
- Navigate to the Backlog page
- Scroll to CSV Import (admin only)
- Upload your CSV file
- Preview the first 20 rows
- Click Import to Backlog
Column names must match the database column names exactly. See the Database reference for full column definitions.