Skip to content

Conversation

@bokelley
Copy link
Contributor

Summary

Enables working groups to track external documents (Google Docs) with automatic content monitoring and AI-powered summaries:

  • Document Tracking: Store and manage tracked documents per working group
  • Automatic Indexing: Scheduled job fetches Google Docs content hourly, detects changes via SHA-256 hashing
  • AI Summaries: Generates document summaries and change descriptions using Claude
  • Activity Feed: Tracks all document changes for committee activity summaries
  • Frontend UI: Leaders can add/edit/delete documents via manage page; public detail page shows documents with summaries

Security Improvements

  • Rate limiting on manual reindex endpoint (5 requests/minute per user)
  • Strict URL validation using domain whitelist (only Google Docs/Sheets/Drive)
  • UUID validation on all document ID parameters
  • Empty content edge case handling

Database

New tables: committee_documents, committee_summaries, committee_document_activity
Migration: 159_committee_documents.sql

Test plan

  • Build passes
  • All tests pass
  • Manual testing with Vibium browser automation
  • Code review completed and suggestions addressed

🤖 Generated with Claude Code

bokelley and others added 2 commits January 11, 2026 15:47
Enables working groups to track external documents (Google Docs) with:
- Automatic content indexing and change detection via SHA-256 hashing
- AI-powered document summaries and change descriptions
- Scheduled jobs for hourly document indexing and daily activity summaries
- Frontend UI for leaders to manage tracked documents
- Public display of documents with summaries on working group pages

Security improvements:
- Rate limiting on manual reindex endpoint (5 req/min per user)
- Strict URL validation (whitelist Google Docs domains only)
- UUID validation on all document ID parameters
- Empty content edge case handling

Database: New tables committee_documents, committee_summaries,
committee_document_activity with composite index for efficient queries.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moves committee document indexer and summary generator job scheduling
from http.ts to a centralized scheduler.ts module. This:
- Reduces http.ts file size by ~70 lines
- Creates a single place to manage scheduled jobs
- Makes it easier to add new jobs in the future
- Improves code organization

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@bokelley bokelley merged commit 544a29e into main Jan 11, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant