-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Overview
Generate rich, AI-synthesized council member profiles from transcripts, votes, and motions — surfacing policy positions, legislative effectiveness, speaking patterns, voting alignment by topic, and notable moments.
Tasks
- Schema: Create
person_profilestable,agenda_item_topicstable. Addpronounsandshort_biotopeople. - Topic taxonomy: Define
MUNICIPAL_TOPICS(housing, transportation, environment, budget, etc.). Implement agenda item topic classifier. Backfill for all existing items. - Deterministic stats:
compute_legislative_stats()(motion success, dissent rate, co-sponsorship),compute_speaking_stats()(segments/meeting, HHI, question rate),compute_alignment_by_topic(),detect_key_votes()(score 0-5). - AI profile generation:
generate_position_summaries()(top 5 topics),detect_notable_moments(),generate_summary()(2-3 sentences),generate_short_bio()(one-liner). - Pipeline integration: Add
--regenerate-profilesflag. Hook into post-ingestion. Incremental updates only for councillors with new data. - Profile page redesign: At-a-glance stat cards, AI summary, expandable policy position cards with stance indicators, key votes highlight reel, topic-scoped alignment selector, speaking profile charts.
- RAG integration: Wire
get_person_activitytool to read fromperson_profilesfor quick stats.
Profile Page Layout (top to bottom)
- Header: Name, role, photo, short_bio, tenure
- At a Glance: Attendance rate (trend), voting record pie, motion success rate, dissent rate, speaking rank
- AI Summary: 2-3 sentence overview with timestamp and meeting count
- Policy Positions: Expandable cards per topic with stance indicator, summary, key quotes, key votes
- Key Votes: Top 5-10 most noteworthy votes with context
- Voting Alignment: Overall + topic-specific + time-series sparklines + bloc detection
- Speaking Profile: Topic distribution chart, role breakdown, debate engagement
- Electoral History (existing, moved lower)
- Full Records (moved to subpages)
Key Vote Detection Criteria (algorithmic, not AI)
- Councillor was in the minority
- Motion was close (passed/failed by 1-2 votes)
- Councillor broke from usual allies
- Councillor moved or seconded the motion
- Motion was on one of their top topics
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request