Skill: aipoch-ai/funding-trend-forecaster (version 0.1.0)

--- name: funding-trend-forecaster description: Predict funding trend shifts using NLP analysis of grant abstracts from NIH, NSF, and Horizon Europe version: 1.0.0 category: Grant tags: [] author: AIPOCH license: MIT status: Draft risk_level: High skill_type: Hybrid (Tool/Script + Network/API) owner: AIPOCH reviewer: '' last_updated: '2026-02-06' --- # Skill: Funding Trend Forecaster **ID:** 200 **Version:** 1.0.0 **Author:** OpenClaw Agent **License:** MIT --- ## Overview Funding Trend Forecaster is an intelligent analysis tool that uses Natural Language Processing (NLP) technology to analyze awarded project abstracts from major global research funding agencies (NIH, NSF, Horizon Europe) and predict funding preference shift trends for the next 3-5 years. ## Features - **Multi-source Data Collection**: Automatically fetches awarded project data from NIH, NSF, Horizon Europe - **NLP Deep Analysis**: Uses advanced text mining techniques to extract topics, keywords, and research trends - **Trend Prediction Model**: Predicts funding direction changes based on time series analysis and topic modeling - **Visualized Reports**: Generates charts and trend reports for intuitive display of analysis results - **Field Segmentation**: Categorized analysis by medicine, engineering, natural sciences, and other fields ## Installation ```bash # Enter skill directory cd skills/funding-trend-forecaster # Install dependencies pip install -r requirements.txt # Download NLTK data python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords'); nltk.download('wordnet')" ``` ## Dependencies ``` requests>=2.28.0 beautifulsoup4>=4.11.0 pandas>=1.5.0 numpy>=1.23.0 scikit-learn>=1.1.0 textblob>=0.17.1 nltk>=3.7 matplotlib>=3.6.0 seaborn>=0.12.0 wordcloud>=1.8.0 python-dateutil>=2.8.0 ``` ## Usage ### Command Line Interface ```bash # Run full analysis workflow python scripts/main.py --analyze-all --output report.json # Analyze specific agency only python scripts/main.py --source nih --months 6 # Generate visualization report python scripts/main.py --visualize --input data.json --output charts/ # View trend forecast python scripts/main.py --forecast --years 5 --output forecast.json ``` ### API Call ```python from scripts.main import FundingTrendForecaster # Initialize forecaster forecaster = FundingTrendForecaster() # Collect data forecaster.collect_data(sources=['nih', 'nsf', 'horizon_europe'], months=6) # Execute analysis results = forecaster.analyze_trends() # Generate forecast forecast = forecaster.predict_trends(years=5) # Export report forecaster.export_report(output_path='report.pdf', format='pdf') ``` ## Parameters | Parameter | Type | Default | Required | Description | |-----------|------|---------|----------|-------------| | `--analyze-all` | flag | false | No | Run full analysis workflow on all sources | | `--source` | string | - | No | Specific agency to analyze (nih, nsf, horizon_europe) | | `--months` | int | 6 | No | Number of months of historical data to analyze | | `--years` | int | 5 | No | Years ahead for trend prediction | | `--visualize` | flag | false | No | Generate visualization charts | | `--forecast` | flag | false | No | Generate trend forecast | | `--input`, `-i` | string | - | No | Input data file path (for visualization/forecast) | | `--output`, `-o` | string | - | No | Output file path | | `--config` | string | config.json | No | Path to configuration file | ## Data Sources | Agency | Data Source URL | Update Frequency | |------|-----------|---------| | NIH | https://reporter.nih.gov/ | Daily | | NSF | https://www.nsf.gov/awardsearch/ | Daily | | Horizon Europe | https://ec.europa.eu/info/funding-tenders/opportunities/ | Weekly | ## Configuration Create `config.json` file to customize analysis parameters: ```json { "sources": { "nih": { "enabled": true, "base_url": "https://reporter.nih.gov/", "max_results": 1000 }, "nsf": { "enabled": true, "base_url": "https://www.nsf.gov/awardsearch/", "max_results": 1000 }, "horizon_europe": { "enabled": true, "base_url": "https://ec.europa.eu/info/funding-tenders/", "max_results": 500 } }, "nlp": { "language": "en", "min_word_length": 3, "max_topics": 20, "stop_words": ["research", "study", "project"] }, "forecast": { "method": "lda_trend", "confidence_level": 0.95, "years_ahead": 5 } } ``` ## Output Format ### JSON Report Structure ```json { "metadata": { "generated_at": "2024-01-15T10:30:00Z", "data_period": "2023-07-01 to 2024-01-01", "sources": ["nih", "nsf", "horizon_europe"], "total_projects": 15420 }, "trend_analysis": { "top_keywords": [ {"term": "artificial intelligence", "frequency": 342, "growth": 0.45}, {"term": "climate change", "frequency": 298, "growth": 0.32} ], "emerging_topics": [ {"topic": "Large Language Models", "projects": 89, "trend": "rising"}, {"topic": "Carbon Capture", "projects": 156, "trend": "stable"} ], "funding_shifts": { "increasing": ["AI/ML", "Climate Tech", "Quantum Computing"], "decreasing": ["Traditional Materials", "Fossil Fuels Research"] } }, "forecast": { "2025": { "predicted_hot_topics": ["Generative AI", "Gene Editing", "Fusion Energy"], "confidence": 0.87 }, "2026-2029": { "long_term_trends": ["AGI Safety", "Personalized Medicine", "Space Mining"], "confidence": 0.72 } } } ``` ## Architecture ``` funding-trend-forecaster/ ├── scripts/ │ ├── main.py # Main entry │ ├── collectors/ # Data collection module │ │ ├── __init__.py │ │ ├── nih_collector.py │ │ ├── nsf_collector.py │ │ └── horizon_collector.py │ ├── analyzers/ # NLP analysis module │ │ ├── __init__.py │ │ ├── text_processor.py │ │ ├── topic_modeler.py │ │ └── trend_detector.py │ ├── predictors/ # Prediction module │ │ ├── __init__.py │ │ └── trend_forecaster.py │ └── utils/ # Utility module │ ├── __init__.py │ ├── config.py │ └── visualizer.py ├── data/ # Data storage │ ├── raw/ │ └── processed/ ├── output/ # Output directory ├── config.json # Configuration file ├── requirements.txt # Python dependencies └── SKILL.md # This document ``` ## Roadmap - [x] Basic architecture design - [x] Core analysis module - [ ] More data source support (Wellcome Trust, JSPS, etc.) - [ ] Real-time data stream processing - [ ] Interactive web interface - [ ] Machine learning model optimization ## License MIT License - See LICENSE file in project root directory --- *Generated by OpenClaw Agent | Skill ID: 200* ## Risk Assessment | Risk Indicator | Assessment | Level | |----------------|------------|-------| | Code Execution | Python scripts with tools | High | | Network Access | External API calls | High | | File System Access | Read/write data | Medium | | Instruction Tampering | Standard prompt guidelines | Low | | Data Exposure | Data handled securely | Medium | ## Security Checklist - [ ] No hardcoded credentials or API keys - [ ] No unauthorized file system access (../) - [ ] Output does not expose sensitive information - [ ] Prompt injection protections in place - [ ] API requests use HTTPS only - [ ] Input validated against allowed patterns - [ ] API timeout and retry mechanisms implemented - [ ] Output directory restricted to workspace - [ ] Script execution in sandboxed environment - [ ] Error messages sanitized (no internal paths exposed) - [ ] Dependencies audited - [ ] No exposure of internal service architecture ## Prerequisites ```bash # Python dependencies pip install -r requirements.txt ``` ## Evaluation Criteria ### Success Metrics - [ ] Successfully executes main functionality - [ ] Output meets quality standards - [ ] Handles edge cases gracefully - [ ] Performance is acceptable ### Test Cases 1. **Basic Functionality**: Standard input → Expected output 2. **Edge Case**: Invalid input → Graceful error handling 3. **Performance**: Large dataset → Acceptable processing time ## Lifecycle Status - **Current Stage**: Draft - **Next Review Date**: 2026-03-06 - **Known Issues**: None - **Planned Improvements**: - Performance optimization - Additional feature support

path: requirements.txt
content: beautifulsoup4
dateutil
matplotlib
numpy
pandas
python-dateutil
requests
scikit-learn
seaborn


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)