Cryptocurrency sentiment analysis dashboard powered by AI
ChainPulse aggregates crypto news, analyzes sentiment using FinBERT, and delivers actionable market insights through interactive visualizations. This platform is made for people that want to read the market fast.
Click the button below for the LIVE DEMO
- AI-Powered Sentiment Analysis - FinBERT analyzes 100+ daily crypto articles with 85%+ accuracy
- Market Sentiment Tracking - Aggregated scores across 24h, 7d, 30d time periods
- Interactive Visualizations - D3.js bubble charts showing sentiment across 60+ coins
- Smart Coin Matching - Automatic extraction and tagging of mentioned cryptocurrencies
- Performance Optimized - Redis caching + batch processing for sub-400ms responses
- Duplicate Prevention - Intelligent deduplication ensures clean news feed
1. Batch Processing for ML Inference
- Processes 16 articles simultaneously instead of sequential analysis
- Reduces sentiment analysis time from 3 minutes to 15-20 seconds (~10x faster)
2. Caching Strategy
- 5-minute Redis TTL balances freshness with performance
- Query-level caching for news, sentiment, and coin aggregations
- TanStack Query for optimistic frontend updates
3. Database Optimization
- Indexed
published_atandsentiment_labelfor fast filtering - Eager loading (
joinedload) eliminates N+1 query problem - Unique constraint on
(title, published_at)prevents duplicates
4. Startup Model Preloading
- BERT model loads during app startup (not first request)
- Singleton pattern prevents redundant model instances
| Optimization | Before | After | Impact |
|---|---|---|---|
| Batch BERT Processing | 180s | 20s | 9x faster |
| Database Indexes | 2000ms | 300ms | 6.7x faster |
| N+1 Query Fix | 1500ms | 150ms | 10x faster |
| Redis Caching | DB query | <50ms | 30x faster |
_Sentiment gauge, market trends
D3.js visualization showing sentiment distribution across 60+ cryptocurrencies
AI-analyzed crypto news with sentiment scores and coin tags
- Node.js 18+
- Python 3.11+
- PostgreSQL 14+
- Redis (or Upstash account)
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your credentials
# Run migrations
alembic upgrade head
# Start server
uvicorn app.main:app --reloadcd frontend
npm install
# Configure environment
cp .env.local.example .env.local
# Edit .env.local with API URL
# Start development server
npm run devVisit http://localhost:3000
News
GET /api/news- Paginated news with filters (period, sentiment, search)POST /api/news/refresh- Fetch latest news from CryptoPanic
Sentiment
GET /api/sentiment/aggregate- Overall market sentiment by periodGET /api/coins/sentiment- Top 5 bullish/bearish coinsGET /api/coins/bubble- All coins data for bubble chart
- FinBERT: Financial domain-specific BERT model fine-tuned on financial news
- Batch Inference: Processes multiple texts simultaneously for 10x speedup
- Normalization: Scores mapped to -1 (bearish) to +1 (bullish) scale
- Aho-Corasick: Multi-pattern matching for efficient coin symbol detection
- Levenshtein Distance: Fuzzy matching for misspellings and variations
- Coverage: 70+ major and most popular cryptocurrencies (BTC, ETH, SOL, etc.)
- Ingestion: CryptoPanic API provides 20-30 articles per fetch
- Analysis: FinBERT batch processing (16 articles/batch)
- Extraction: Coin matcher identifies mentioned cryptocurrencies
- Storage: PostgreSQL with deduplication and indexing
- Caching: Redis stores aggregated results (5-min TTL)
- ProsusAI/finbert - Financial sentiment analysis model
- CryptoPanic - Crypto news aggregation API
- Railway - Backend deployment
- Vercel - Frontend deployment
Made by Andrew Tedjapratama



