Admin Dashboard for Fact Engine (WI-6)
Context
Replace legacy admin pages (urls, domains, audience, diff-settings) with fact engine management views. The admin app at apps/admin/ currently has v1 pages that reference dropped tables.
Current State
- Admin has legacy pages:
audience,avatars,billing,changes,content,diff-settings,domains,feature-flags,feeder-sources,media,onboarding,queue,urls,users - Most reference dropped v1 tables or irrelevant v1 features
- No fact engine management UI exists
Gap Analysis
| Feature | Required | Current | Gap |
|---|---|---|---|
| Dashboard with pipeline stats | Yes | Legacy stats | FAIL |
| Facts list with filters | Yes | Missing | FAIL |
| Stories list with clustering view | Yes | Missing | FAIL |
| Queue depth monitoring | Yes | Legacy queue view | FAIL |
| Challenge review queue | Yes | Missing | FAIL |
| Dispute review queue | Yes | Missing | FAIL |
| Reward milestone config | Yes | Missing | FAIL |
| Remove legacy pages | Yes | Still present | FAIL |
Challenges
Challenge 6.1: Dashboard Stats
Requirement: Main dashboard shows fact engine health. Acceptance Criteria:
- Fact count by status (pending, validated, rejected, archived)
- Ingestion run stats (last 24h: processed, created, failed)
- Pipeline throughput (facts/hour, validation rate)
- Topic category distribution chart
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/page.tsx
Challenge 6.2: Facts Management
Requirement: CRUD list for fact records. Acceptance Criteria:
- Paginated fact list with status filters
- Search by title/topic
- Bulk actions (validate, reject, archive)
- Individual fact detail view with edit capability
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/facts/
Challenge 6.3: Stories View
Requirement: List stories with clustering status. Acceptance Criteria:
- Story list with status filter (clustering, published, archived)
- Source count and domain list per story
- Link to associated fact records
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/stories/
Challenge 6.4: Queue Monitoring
Requirement: Queue health dashboard. Acceptance Criteria:
- Depth per queue (12 queues: 7 original fact engine +
RESOLVE_CHALLENGE_IMAGE,GENERATE_CHALLENGE_CONTENT,EXPLODE_CATEGORY_ENTRY,FIND_SUPER_FACTS, and 1 additional) - Processing rate (messages/minute)
- Stuck message detection
- Manual retry capability
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/queue/(modify existing)
Challenge 6.5: Challenge Review Queue
Requirement: Review and approve/reject AI-generated challenges. Acceptance Criteria:
- List of recently generated challenges
- Preview challenge as user would see it
- Approve/reject/edit actions
- Challenge image review (anti-spoiler compliance)
- Format/style combination preview (8 formats x 6+ styles)
- Drift coordinator results display (voice, structure, schema, taxonomy, difficulty, reveal, textbook)
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/challenges/
Challenge 6.6: Dispute Review
Requirement: See user score disputes and AI decisions. Acceptance Criteria:
- Dispute list with status filters
- View user argument and AI evaluation
- Override capability for admins
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/disputes/
Challenge 6.7: Reward Configuration
Requirement: Manage reward milestones. Acceptance Criteria:
- Milestone list with point thresholds
- Edit milestone rewards (Eko+ days)
- Claim tracking per user
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/rewards/
Challenge 6.8: Remove Legacy Pages
Requirement: Delete admin pages for dropped features. Acceptance Criteria:
- Remove or stub:
audience,avatars,changes,content,diff-settings,domains,feeder-sources,urls - Keep:
billing,feature-flags,media,onboarding,queue,users - No broken imports or dead links Evaluation: FAIL
Challenge 6.9: Enrichment & Pipeline Monitor
Requirement: View enrichment API health and cost tracking. Acceptance Criteria:
- Enrichment API health dashboard (13 clients: Wikipedia, Wikidata, OpenLibrary, MusicBrainz, TMDB, GeoNames, etc.)
- Cache hit rates per API client
- API error rates and latency metrics
- Cost tracking dashboard (model spend by task type, daily caps, per-model budgets)
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/enrichment/
Challenge 6.10: Taxonomy Management
Requirement: Manage subcategory activation and schema coverage. Acceptance Criteria:
- Subcategory list with activation status (~95 active)
- Schema coverage per subcategory (domain-specific schemas)
- Fact count per subcategory
- Schema editor preview
Evaluation: FAIL
Files:
apps/admin/app/(dashboard)/taxonomy/
Quality Tier
Challenge 6.Q: Admin Quality Standards
Requirement: Meet admin dashboard quality criteria. Acceptance Criteria:
- All tables paginated and sortable
- Responsive at desktop breakpoints (admin is desktop-first)
- Loading states for async data
-
bun run buildsucceeds forapps/adminEvaluation: PENDING
Implementation Notes
- Reuse existing admin CRUD table components from
apps/admin/ - Admin queries should use
service_roleSupabase client (bypasses RLS) - Consider adding admin-specific API routes or server actions in
apps/admin/ - 12 queue types now exist (up from 7 at original writing): includes
RESOLVE_CHALLENGE_IMAGE,GENERATE_CHALLENGE_CONTENT,EXPLODE_CATEGORY_ENTRY,FIND_SUPER_FACTS - Enrichment orchestrator has 13 API clients — monitor page should show health for all
- Drift coordinators (7 semantic validators) produce results that should be visible in challenge review