European Parliament Intelligence Platform
Monitor political activity with systematic transparency
|
|
European Parliament Intelligence Platform β an automated multi-language news platform that monitors EU Parliament activities with 14-language support, covering plenary sessions, committee reports, propositions, and breaking news. |
π Quick Links:
π ISMS Compliance:
MCP Server Integration: The project is designed to use the European-Parliament-MCP-Server for accessing real EU Parliament data.
USE_EP_MCP=false to disable MCP client
connection attemptsOnce the European-Parliament-MCP-Server is fully implemented, the system will automatically:
Note: The current implementation generates placeholder content in English for all languages when MCP server is unavailable. To enable full functionality:
Complete the MCP Server: The European-Parliament-MCP-Server needs implementation of:
get_plenary_sessions toolsearch_documents toolget_parliamentary_questions toolget_committee_info toolInstall MCP Server: Once ready, install the MCP server:
npm install -g european-parliament-mcp-server
# or clone and build locally
Enable MCP Client: The news generator will automatically connect when the server is available
EU Parliament Monitor is an automated news generation platform that monitors European Parliament activities and generates multi-language news articles covering:
EU Parliament Monitor implements security-by-design with comprehensive security controls and ISMS compliance.
Project Classification (per ISMS Classification Framework and Open Source Policy):
Key Security Controls:
Security Metrics:
This project follows Hack23 ISMS Secure Development Policy:
EU Parliament Monitor is an open source project with transparent governance and community standards.
This project adheres to:
EU Parliament Monitor maintains high code quality standards with comprehensive testing:
Code Standards: See docs/CODE_STANDARDS.md for detailed coding guidelines.
Comprehensive test suite with Vitest and Playwright covering all functionality:
# Run unit & integration tests
npm test
# Run with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:watch
# Run with UI (browser interface)
npm run test:ui
# Run E2E tests
npm run test:e2e
# Run with UI (interactive)
npm run test:e2e:ui
# Run in headed mode (see browser)
npm run test:e2e:headed
# View test report
npm run test:e2e:report
Testing Documentation:
EU Parliament Monitor includes 8 specialized GitHub Copilot custom agents to streamline development:
Usage Example:
# Use product-task-agent to analyze repository and create improvement issues
@product-task-agent analyze the multi-language support and create issues for any gaps
# Use news-journalist to generate content
@news-journalist create a week-ahead article for the upcoming plenary session
# Use frontend-specialist for UI improvements
@frontend-specialist make the language switcher fully keyboard accessible
Learn More: See Custom Agents Documentation for detailed agent capabilities, usage patterns, and examples.
You can verify your Node.js version with:
node --version # Should be v25.x.x or higher
npm --version # Should be 10.x.x or higher
# Clone the repository
git clone https://github.com/Hack23/euparliamentmonitor.git
cd euparliamentmonitor
# Install dependencies
npm install
For real EU Parliament data integration, install the MCP server:
# Clone the MCP server repository
git clone https://github.com/Hack23/European-Parliament-MCP-Server.git
cd European-Parliament-MCP-Server
# Install dependencies and build
npm install
npm run build
# The server will be available at dist/index.js
# You can install it globally or reference the path
Configure the MCP server path in environment variables:
export EP_MCP_SERVER_PATH="/path/to/European-Parliament-MCP-Server/dist/index.js"
Note: The MCP server is currently in development. News generation works without it using placeholder content.
# Generate week ahead article in English
npm run generate-news -- --types=week-ahead --languages=en
# Generate multiple article types in multiple languages
npm run generate-news -- --types=week-ahead,committee-reports --languages=en,de,fr
# Generate in all eu-core preset languages
npm run generate-news -- --types=week-ahead --languages=eu-core
# Generate in all supported languages
npm run generate-news -- --types=week-ahead --languages=all
# Generate language-specific index pages
npm run generate-news-indexes
# Generate sitemap.xml
npm run generate-sitemap
# Serve the site locally
npm run serve
# Open http://localhost:8080 in your browser
euparliamentmonitor/
βββ .github/
β βββ agents/ # Custom GitHub Copilot agents
β βββ workflows/ # CI/CD workflow configurations
β βββ release-drafter.yml # Release notes configuration
βββ src/ # TypeScript source (compiles to scripts/)
β βββ constants/ # Language data, configuration
β βββ generators/ # News, index, sitemap generators
β βββ mcp/ # European Parliament MCP client
β βββ templates/ # HTML article templates
β βββ types/ # Shared TypeScript interfaces
β βββ utils/ # File utilities, metadata
βββ scripts/ # Compiled JavaScript output
β βββ constants/ # Compiled constants
β βββ generators/ # Compiled generators
β βββ mcp/ # Compiled MCP client
β βββ templates/ # Compiled templates
β βββ types/ # Compiled type definitions
β βββ utils/ # Compiled utilities
βββ news/ # Generated news articles
β βββ metadata/ # Generation metadata
βββ test/ # Vitest unit & integration tests
βββ e2e/ # Playwright E2E tests
βββ docs/ # Generated documentation
βββ styles.css # Article styling
βββ index-{lang}.html # Language-specific index pages
βββ typedoc.json # TypeDoc configuration
βββ tsconfig.json # TypeScript configuration
βββ sitemap.xml # SEO sitemap
βββ package.json # Project dependencies
The repository includes comprehensive GitHub Actions workflows for automation and quality assurance:
.github/workflows/news-generation.ymlWorkflow Inputs:
article_types: Comma-separated list of article types (default: week-ahead)languages: Languages to generate (en, eu-core, all, or custom list)force_generation: Force generation even if recent articles exist.github/labeler.yml.github/workflows/labeler.yml.github/workflows/setup-labels.yml once to create all labels.github/workflows/release.yml.github/release-drafter.yml.github/workflows/codeql.yml, .github/workflows/scorecards.yml, .github/dependabot.yml, .github/workflows/dependency-review.yml.github/workflows/reuse.yml, .github/workflows/release.yml.github/workflows/test-and-report.ymlπ Evidence: See Workflow Status Badges at top of README.
Core Workflows:
Security Workflows:
Compliance Workflows:
To create a new release:
v1.0.0)π ISMS Evidence:
Every release automatically generates comprehensive documentation:
| Documentation | Description | Link |
|---|---|---|
| API Documentation | TypeDoc-generated API reference from TypeScript source | View Docs |
| Test Coverage | Interactive Vitest coverage reports (82%+) | View Coverage |
| E2E Test Reports | Playwright test results with screenshots | View Report |
| Documentation Index | Beautiful hub linking all reports | View Index |
π How It Works:
docs/main branchπ― Run Locally:
npm run docs:generate # Generate all documentation
npm run docs:api # Generate API docs only
npm run docs:index # Generate index page
π ISMS Compliance:
First-time setup requires running the label creation workflow:
en - English onlyeu-core - English, German, French, Spanish, Dutchnordic - English, Swedish, Danish, Norwegian, Finnishall - All 14 supported languagesweek-ahead - Preview of upcoming parliamentary eventscommittee-reports - Committee activity analysis (coming soon)propositions - Legislative proposals analysis (coming soon)motions - Parliamentary motions analysis (coming soon)breaking - Breaking news coverage (coming soon)We welcome contributions from developers, journalists, translators, and security researchers!
Please read our comprehensive Contributing Guide for:
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to conduct@hack23.com.
If you discover a security vulnerability, please follow our Security Policy for responsible disclosure. Do not report security issues through public GitHub issues.
See AUTHORS.md for a list of contributors who have helped make this project possible. Contributions are welcome! Please see CONTRIBUTING.md for detailed guidelines on:
Security-Critical Contributions: All security-related changes must align with SECURITY_ARCHITECTURE.md and Hack23 ISMS Secure Development Policy.
For security vulnerability reporting and disclosure process, please see SECURITY.md.
Responsible Disclosure:
EU Parliament Monitor maintains security excellence through continuous compliance with OpenSSF best practices:
Current Optimizations:
main branchMonitoring: View current score at OpenSSF Scorecard Dashboard
Requirements Met:
Registration: Complete questionnaire at CII Best Practices
Provenance Generation:
.github/workflows/release.ymlactions/attest-build-provenance@v2Verification: View attestations at https://github.com/Hack23/euparliamentmonitor/attestations/
Setup Required:
Badge: Updates automatically after scan completion
Compliance Verification:
.reuse/dep5 covers all files without headersWorkflow: Runs on push, pull requests, and weekly via .github/workflows/reuse.yml
This project adheres to Hack23 ISMS policies:
| Policy | Relevance | Implementation |
|---|---|---|
| Open Source Policy | Security badge requirements, governance artifacts | All badges, docs, REUSE compliance |
| CRA Conformity Assessment Process | EU Cyber Resilience Act compliance | CRA-ASSESSMENT.md |
| Secure Development Policy | Development security standards | SECURITY_ARCHITECTURE.md, SAST/SCA/DAST |
| Threat Modeling Policy | Threat analysis requirements | STRIDE analysis in THREAT_MODEL.md |
| Vulnerability Management | Remediation SLAs | SECURITY.md disclosure timeline |
| Classification Framework | Data classification | Public/Medium/Medium (L1/L2/L2) |
| Incident Response Plan | Security incident procedures | Linked in SECURITY.md |
EU Parliament Monitor aligns with multiple compliance frameworks:
| Framework | Controls | Evidence |
|---|---|---|
| ISO 27001 | A.12.6.1 (Vulnerability Management), A.14.2.8 (Security Testing) | CodeQL, Dependabot, npm audit |
| NIST CSF 2.0 | Identify, Protect, Detect, Respond, Recover | SECURITY_ARCHITECTURE.md compliance matrix |
| CIS Controls v8.1 | 18.3 (Remediate Vulnerabilities), 2.7 (Allowlisting) | Automated scanning, SBOM |
| GDPR | Data Protection by Design | European Parliament open data (public) |
| NIS2 | Article 20, 21 (Cybersecurity Risk Management) | Threat model, security controls |
| EU Cyber Resilience Act | SBOM, Vulnerability Disclosure, Annex I/V | CRA-ASSESSMENT.md, SLSA provenance, SECURITY.md |
"While traditional newsrooms debate whether AI will replace journalists, EU Parliament Monitor quietly deployed 8 autonomous AI agents that generate investigative political intelligence in 14 languages before most reporters have finished their morning coffee. The future of parliamentary journalism didn't send a memo β it opened a pull request."
The EU Parliament Monitor doesn't just report on European Parliament activity β it autonomously generates deep political intelligence at machine speed, with editorial quality that would make legacy news desks nervous. Every article is researched, written, localized, and prepared for publication by AI agents that operate by default on live European Parliament data via the MCP Server (46 tools, real-time data), with transparent fallback to placeholder/test data when live access is unavailable as described above. The agents automatically generate content and open publication-ready pull requests; publication to the site occurs when a human reviews and merges those PRs.
8 autonomous news workflows run on precision schedules, each powered by a dedicated GitHub Copilot agentic workflow that fetches live EP data (with documented fallback behavior), generates Economist-style analysis, and opens publication-ready pull requests across all 14 languages:
graph LR
subgraph "π
Daily Cycle (Mon-Fri)"
CR["ποΈ Committee Reports<br/>04:00 UTC"]
PR["π Propositions<br/>05:00 UTC"]
MO["βοΈ Motions<br/>06:00 UTC"]
end
subgraph "π Weekly Cycle"
WA["π Week Ahead<br/>Fri 07:00 UTC"]
WR["π Weekly Review<br/>Sat 09:00 UTC"]
end
subgraph "π
Monthly Cycle"
MA["π Month Ahead<br/>1st 08:00 UTC"]
MR["π Monthly Review<br/>28th 10:00 UTC"]
end
subgraph "ποΈ On-Demand"
AG["π Article Generator<br/>Manual Dispatch"]
end
MCP["π EP MCP Server<br/>46 Tools Β· Live Data"]
MCP --> CR & PR & MO & WA & WR & MA & MR & AG
style CR fill:#1a5276,color:#fff
style PR fill:#1a5276,color:#fff
style MO fill:#1a5276,color:#fff
style WA fill:#117a65,color:#fff
style WR fill:#117a65,color:#fff
style MA fill:#7d3c98,color:#fff
style MR fill:#7d3c98,color:#fff
style AG fill:#b9770e,color:#fff
style MCP fill:#c0392b,color:#fff
| Workflow | Schedule | Focus | Output |
|---|---|---|---|
| ποΈ Committee Reports | MonβFri 04:00 UTC | Committee decisions & activities | 14 language articles |
| π Propositions | MonβFri 05:00 UTC | Legislative proposals analysis | 14 language articles |
| βοΈ Motions | MonβFri 06:00 UTC | Motions & resolutions analysis | 14 language articles |
| π Week Ahead | Fridays 07:00 UTC | Upcoming parliamentary preview | 14 language articles |
| π Weekly Review | Saturdays 09:00 UTC | Past week retrospective | 14 language articles |
| π Month Ahead | 1st of month 08:00 UTC | Strategic monthly outlook | 14 language articles |
| π Monthly Review | 28th of month 10:00 UTC | Monthly retrospective analysis | 14 language articles |
| π Article Generator | Manual dispatch | Multi-type article generation | Configurable |
The platform combines 8 core news-pipeline AI agents (from a catalog of 22+ specialized agents), 39+ TypeScript source modules, 21 CI/CD workflows, and 46 MCP data tools into a fully autonomous political intelligence pipeline:
graph TB
subgraph "π€ 8 Core News Pipeline Agents"
A1["π° News Journalist<br/><i>Economist-style reporting</i>"]
A2["π Data Pipeline<br/><i>MCP integration</i>"]
A3["π¨ Frontend<br/><i>WCAG 2.1 AA</i>"]
A4["β
Quality Engineer<br/><i>Testing & validation</i>"]
A5["π Security Architect<br/><i>ISMS compliance</i>"]
A6["π Documentation<br/><i>C4 & architecture</i>"]
A7["βοΈ DevOps Engineer<br/><i>CI/CD automation</i>"]
A8["π Product Task<br/><i>Issue management</i>"]
end
subgraph "βοΈ 21 CI/CD Workflows"
W1["8 News Generation"]
W2["5 Security & Compliance"]
W3["2 Testing"]
W4["2 Release & Deploy"]
W5["4 Automation & Infra"]
end
subgraph "π Data Layer"
MCP["π EP MCP Server<br/>46 Tools"]
TS["π¦ 39+ TypeScript Modules"]
L14["π 14 Languages"]
end
A1 --> W1
A2 --> MCP
A7 --> W2 & W3 & W4
W1 --> TS --> L14
style A1 fill:#2e86c1,color:#fff
style A2 fill:#2e86c1,color:#fff
style A3 fill:#2e86c1,color:#fff
style A4 fill:#2e86c1,color:#fff
style A5 fill:#2e86c1,color:#fff
style A6 fill:#2e86c1,color:#fff
style A7 fill:#2e86c1,color:#fff
style A8 fill:#2e86c1,color:#fff
style W1 fill:#1a5276,color:#fff
style W2 fill:#7d3c98,color:#fff
style W3 fill:#117a65,color:#fff
style W4 fill:#b9770e,color:#fff
style MCP fill:#c0392b,color:#fff
style TS fill:#1c2833,color:#fff
style L14 fill:#117a65,color:#fff
"We're not just keeping up with AI β we're building the editorial infrastructure for the era when machines understand parliamentary procedure better than most MEPs."
The platform evolves through six phases from agentic news generation to AGI-enhanced transformative democracy. Full details in Future Mindmap and Future Workflows.
timeline
title EU Parliament Monitor β AI Evolution Roadmap
section Phase 1 (2026)
Agentic News : 8 autonomous workflows
: 14-language generation
: MCP data integration
: Economist-style analysis
section Phase 2 (2027)
Predictive Analytics : Voting outcome prediction
: Legislative impact forecasting
: Cross-party coalition detection
: Automated trend analysis
section Phase 3 (2028β2029)
Multi-Modal Intelligence : Video plenary analysis
: Real-time debate tracking
: Infographic auto-generation
: Autonomous content pipelines
section Phase 4 (2030β2031)
Near-Expert Analysis : 50+ parliament coverage
: Expert-level policy briefs
: Predictive governance models
: Universal language support
section Phase 5 (2032β2033)
Global Coverage : 100+ parliaments
: Pre-AGI capabilities
: Real-time policy impact
: Cross-jurisdiction analysis
section Phase 6 (2034β2037)
AGI Era : Transformative democracy
: 195 national legislatures
: Policy prediction before proposal
: Human oversight maintained
When AGI or near-AGI systems become available, the platform architecture is designed to scale responsibly:
| Capability | Description |
|---|---|
| π€ Autonomous Analysis | AGI-powered real-time political intelligence across all 195 national legislatures |
| π Universal Language Support | Every UN language supported natively β no translation pipeline, native generation |
| π Predictive Governance | Policy impact prediction before legislation is proposed β anticipatory intelligence |
| βοΈ Ethical AI Governance | Human oversight maintained regardless of AI capability level β democratic safeguards hardcoded |
| π‘οΈ Democratic Safeguards | Platform architecture prevents weaponization or manipulation β transparency by design |
Assumptions: Major AI model upgrades annually, competitors (OpenAI, Google, Meta, EU sovereign AI) evaluated at each release. Architecture accommodates potential paradigm shifts (quantum AI, neuromorphic computing).
Projected workflow counts below include all CI/CD workflow definitions, agentic workflow sources, and planned variants across the platform. The 2026 baseline (~44) builds on the current 21 deployed .yml workflows + 8 agentic .md sources (29 today) plus planned security, localization, and data-pipeline additions.
| Year | Projected Workflow Definitions | AI Model | Key Capability |
|---|---|---|---|
| 2026 | 44β50 | Opus 4.6β4.9 | π’ Agentic news generation |
| 2027 | 50β55 | Opus 5.x | π΅ Predictive analytics |
| 2028 | 55β65 | Opus 6.x | π£ Multi-modal content |
| 2029 | 65β75 | Opus 7.x | π Autonomous pipeline |
| 2030 | 75β85 | Opus 8.x | π΄ Near-expert analysis |
| 2031β2033 | 85β100 | Opus 9β10.x / Pre-AGI | βͺ Global coverage |
| 2034β2037 | 100β120+ | AGI / Post-AGI | β Transformative platform |
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#1a5276', 'primaryTextColor': '#fff', 'lineColor': '#2e86c1', 'secondaryColor': '#117a65'}}}%%
xychart-beta
title "Projected Workflow Definitions & Variants (2026β2037)"
x-axis ["2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033", "2034", "2035", "2036", "2037"]
y-axis "Workflow definitions & variants" 0 --> 130
bar [44, 53, 60, 70, 80, 88, 94, 100, 105, 110, 115, 120]
line [44, 53, 60, 70, 80, 88, 94, 100, 105, 110, 115, 120]
| Document | Focus | Coverage |
|---|---|---|
| π Future Mindmap | Capability evolution & system vision | 2026β2037 AI/ML roadmap, multi-parliament expansion, API ecosystem |
| π Future Workflows | CI/CD evolution & automation roadmap | Security hardening, performance optimization, AGI-ready pipelines |
Copyright 2024-2026 Hack23 AB
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
See LICENSE file for full details.
This project is based on the news generation implementation from Hack23/riksdagsmonitor.
Hack23 AB - Intelligence Operations Team