Topic Analysis (ABSA)
ABSA (Aspect-Based Sentiment Analysis) extracts specific topics from employee reviews and their associated sentiment.
🎯 What is ABSA?
ABSA goes beyond simple positive/negative classification. It identifies what aspects employees discuss and how they feel about each one.
Example:
"Great salary but terrible management"
| Aspect | Sentiment |
|---|---|
| Salary and Benefits | POSITIVE |
| Management | NEGATIVE |
📊 Predefined Aspects
The system recognizes 10 core workplace topics:
| # | Aspect | Keywords |
|---|---|---|
| 1 | Salary and Benefits | pay, bonus, insurance, pension |
| 2 | Work-Life Balance | hours, overtime, remote, flexibility |
| 3 | Management | boss, leadership, supervision |
| 4 | Company Culture | atmosphere, values, team spirit |
| 5 | Career Growth | promotion, opportunities, development |
| 6 | Job Security | stability, layoffs, restructuring |
| 7 | Work Environment | office, facilities, equipment |
| 8 | Colleagues | coworkers, team dynamics |
| 9 | Training | learning, courses, skills |
| 10 | Communication | transparency, feedback, information |
🔧 Extraction Methods
1. Rule-Based (Default)
- Fast keyword matching
- ~65% accuracy
- No API costs
- Runs automatically
2. AI-Powered (Gemini)
- Context-aware extraction
- ~85% accuracy
- ~$0.001 per review
- Used for high-priority companies
📈 Dashboard: Topics Tab
The Topics page in the dashboard shows:
Top 10 Discussed Topics
Bar chart of most frequently mentioned aspects with sentiment breakdown.
Topic Insights
- Most positive topic - Highest positive sentiment
- Most negative topic - Highest negative sentiment
- Most discussed - Highest mention count
Detailed Breakdown
Click any topic to see:
- Sample review excerpts
- Sentiment distribution
- Trend over time
🔌 API Access
curl "https://sentryanalytic.com/api/aspects?company=BMW"
Response:
{
"company": "BMW",
"aspects": [
{"aspect": "salary and benefits", "sentiment": "positive", "count": 421},
{"aspect": "management", "sentiment": "negative", "count": 318},
{"aspect": "work-life balance", "sentiment": "positive", "count": 256}
]
}
🔄 Automation
ABSA runs automatically after scraping:
Scraping Complete → Sentiment Analysis → ABSA → Materialized Views Refresh
No manual intervention needed!
🛠️ Manual Run
For ad-hoc analysis:
cd backend
source venv/bin/activate
# Analyze specific company
python absa_analyzer.py --company "BMW" --limit 200
# Use AI mode (more accurate)
python absa_analyzer.py --company "BMW"
# Rule-based only (faster)
python absa_analyzer.py --company "BMW" --no-ai
📊 Database Schema
CREATE TABLE review_aspects (
id SERIAL PRIMARY KEY,
review_id VARCHAR REFERENCES reviews(review_id),
aspect VARCHAR(100),
sentiment VARCHAR(20),
confidence FLOAT,
snippet TEXT
);
🎨 Use Cases
For Job Seekers
- "What do employees say about work-life balance at BMW?"
- Quickly identify company strengths and weaknesses
For HR Teams
- "Which topics have the most negative feedback?"
- Prioritize improvement areas
For Investors
- "Is there a pattern of management issues?"
- Risk assessment for due diligence
ABSA is powered by Gemini 2.5 Flash for AI-powered extraction.