Analytics engine, insights generation, and recommendation system
Project description
inputless-analytics
Analytics engine for generating insights and recommendations from behavioral patterns and anomalies.
Purpose
High-level analytics engine that transforms patterns, anomalies, and behavioral data into actionable insights and recommendations. Integrates with pattern recognition, predictive models, and graph analysis to provide intelligent analytics.
Features
- Insight Generation: Transform patterns and anomalies into actionable insights
- Recommendation Engine: Generate personalized recommendations based on insights
- Emotional State Analysis: Detect frustration, confusion, engagement, and other emotional states
- Predictive Analytics: Predict conversion likelihood, churn risk, and engagement
- Trend Analysis: Identify behavioral trends over time
- Real-time Processing: Generate insights with <100ms latency for single sessions
Installation
Using Poetry (Development)
cd packages/python-core/analytics
poetry install
poetry run python example_usage.py
Using pip (Production)
pip install inputless-analytics
Dependencies
pydantic- Data validation and modelsnumpy- Numerical computingpandas- Data processingscipy- Statistical analysisstatsmodels- Advanced statisticsscikit-learn- Machine learning utilitiesstatsforecast- Time series forecasting
Usage
Basic Usage
from inputless_analytics import AnalyticsEngine
# Initialize analytics engine
engine = AnalyticsEngine(
min_confidence=0.6,
enable_trends=True,
enable_predictions=True,
enable_personalization=True,
)
# Example patterns (from context engine)
patterns = [
{
"id": "pattern-1",
"type": "behavioral",
"confidence": 0.85,
"indicators": ["frustration", "rage_click"],
"metadata": {},
},
{
"id": "pattern-2",
"type": "sequence",
"confidence": 0.75,
"indicators": ["product_view", "cart_add", "checkout_start"],
"metadata": {"indicators": ["product_view", "cart_add", "checkout_start"]},
},
]
# Example anomalies
anomalies = [
{
"id": "anomaly-1",
"score": 0.92,
"threshold": 0.7,
"is_anomaly": True,
"reason": "Unusual click pattern detected",
}
]
# Session context
session_context = {
"session_id": "session-123",
"user_id": "user-456",
"emotional_state": {
"primary": "frustration",
"confidence": 0.8,
},
}
# Analyze and generate insights/recommendations
result = engine.analyze(
patterns=patterns,
anomalies=anomalies,
session_context=session_context,
)
# Access results
print(f"Generated {len(result.insights)} insights")
print(f"Generated {len(result.recommendations)} recommendations")
# Process insights
for insight in result.insights:
if insight.priority == "critical":
print(f"Critical: {insight.message}")
print(f"Actions: {insight.recommended_actions}")
# Process recommendations
for rec in result.recommendations:
if rec.priority == "high":
print(f"Recommendation: {rec.title}")
print(f"Action: {rec.action}")
print(f"Implementation: {rec.implementation}")
Using Individual Components
from inputless_analytics import InsightsGenerator, RecommendationsEngine
# Generate insights only
insights_generator = InsightsGenerator(
min_confidence=0.6,
enable_trends=True,
enable_predictions=True,
)
insights = insights_generator.generate(
patterns=patterns,
anomalies=anomalies,
session_context=session_context,
)
# Generate recommendations from insights
recommendations_engine = RecommendationsEngine(
enable_personalization=True,
enable_ab_testing=True,
)
recommendations = recommendations_engine.generate(
insights=insights,
user_context=user_context,
session_context=session_context,
)
Module Structure
src/
├── __init__.py # Main exports
├── analytics_engine.py # Main orchestrator
├── insights_generator.py # Insight generation
├── recommendations.py # Recommendation engine
├── trend_analyzer.py # Advanced trend analysis
├── correlation_finder.py # Correlation discovery
├── aggregators/
│ ├── __init__.py
│ ├── pattern_aggregator.py # Pattern aggregation
│ ├── anomaly_aggregator.py # Anomaly aggregation
│ └── trend_aggregator.py # Trend aggregation
├── analyzers/
│ ├── __init__.py
│ ├── behavior_analyzer.py # Behavioral analysis
│ ├── engagement_analyzer.py # Engagement analysis
│ ├── conversion_analyzer.py # Conversion analysis
│ └── retention_analyzer.py # Retention analysis
├── predictors/
│ ├── __init__.py
│ ├── behavior_predictor.py # Behavior prediction
│ └── outcome_predictor.py # Outcome prediction
├── models/
│ ├── __init__.py
│ ├── insight.py # Insight data model
│ ├── recommendation.py # Recommendation data model
│ └── analytics_result.py # Analytics result model
└── utils/
├── __init__.py
└── scoring.py # Scoring utilities
Capabilities
Insight Types
- Behavioral Insights: Frustration, confusion, engagement, abandonment
- Performance Insights: Performance issues, slow pages, error patterns
- User Journey Insights: Journey optimization, drop-off points, conversion blockers
- Anomaly Insights: Anomaly detection, security risks, fraud indicators
- Predictive Insights: Conversion prediction, churn prediction, engagement prediction
Recommendation Types
- UX Recommendations: UI improvements, navigation optimization, content personalization
- Conversion Recommendations: Conversion optimization, checkout optimization, pricing strategy
- Engagement Recommendations: Re-engagement, content recommendations, feature highlights
- Support Recommendations: Proactive support, help content, tutorials
- Performance Recommendations: Performance optimization, resource optimization
- A/B Testing Recommendations: A/B test variants, feature flags
Data Models
Insight
from inputless_analytics import Insight, InsightType
insight = Insight(
id="insight-1",
type=InsightType.FRUSTRATION,
message="User frustration detected",
description="User shows signs of frustration",
confidence=0.85,
priority="high",
patterns=[...],
recommended_actions=["Show help dialog", "Offer live chat"],
estimated_impact=0.75,
)
Recommendation
from inputless_analytics import Recommendation, RecommendationType
recommendation = Recommendation(
id="rec-1",
type=RecommendationType.PROACTIVE_SUPPORT,
title="Show Proactive Support",
description="User shows signs of frustration - offer immediate help",
action="Show help dialog or live chat",
priority="high",
confidence=0.85,
implementation={
"type": "ui_intervention",
"component": "help_dialog",
"trigger": "immediate",
},
expected_impact=0.75,
)
Analytics Result
from inputless_analytics import AnalyticsResult
result = AnalyticsResult(
session_id="session-123",
user_id="user-456",
insights=[...],
recommendations=[...],
metrics={
"total_patterns": 5,
"total_anomalies": 1,
"total_insights": 3,
"total_recommendations": 2,
},
summary="Generated 3 insights (1 critical, 1 high priority)...",
)
Integration
The analytics package integrates with:
- inputless-context: Receives patterns and anomalies from context engine
- inputless-models: Uses ML models for predictive analytics (future)
- inputless-graph: Uses graph data for correlation analysis (future)
- inputless-engines: Uses AI engines for advanced reasoning (future)
Performance
- Real-time Processing: <100ms for single session analysis
- Batch Processing: Supports large-scale batch analysis
- Scalability: Handles high-volume pattern/anomaly data
Distribution
PyPI package: inputless-analytics
Version: 1.0.0+
Registry: PyPI
Advanced Features
Aggregators
Aggregate patterns and anomalies for batch analysis:
from inputless_analytics import PatternAggregator, AnomalyAggregator
# Aggregate patterns by type
pattern_agg = PatternAggregator()
aggregated = pattern_agg.aggregate(patterns, group_by="type")
stats = pattern_agg.get_statistics(patterns)
# Aggregate anomalies by reason
anomaly_agg = AnomalyAggregator()
aggregated = anomaly_agg.aggregate(anomalies, group_by="reason")
stats = anomaly_agg.get_statistics(anomalies)
Analyzers
Specialized analyzers for different use cases:
from inputless_analytics import (
BehaviorAnalyzer,
EngagementAnalyzer,
ConversionAnalyzer,
RetentionAnalyzer,
)
# Behavior analysis
behavior_analyzer = BehaviorAnalyzer()
behavior_analysis = behavior_analyzer.analyze(patterns, session_context)
print(f"Engagement: {behavior_analysis['engagement_level']}")
print(f"Frustration: {behavior_analysis['frustration_level']}")
# Engagement analysis
engagement_analyzer = EngagementAnalyzer()
engagement_analysis = engagement_analyzer.analyze(patterns, session_context)
print(f"Engagement score: {engagement_analysis['engagement_score']}")
print(f"Trend: {engagement_analysis['engagement_trend']}")
# Conversion analysis
conversion_analyzer = ConversionAnalyzer()
conversion_analysis = conversion_analyzer.analyze(patterns, session_context)
print(f"Conversion probability: {conversion_analysis['conversion_probability']}")
print(f"Funnel stage: {conversion_analysis['funnel_stage']}")
# Retention analysis
retention_analyzer = RetentionAnalyzer()
retention_analysis = retention_analyzer.analyze(patterns, session_context)
print(f"Churn risk: {retention_analysis['churn_risk']}")
print(f"Retention probability: {retention_analysis['retention_probability']}")
Predictors
Predict future behavior and outcomes:
from inputless_analytics import BehaviorPredictor, OutcomePredictor
# Behavior prediction
behavior_predictor = BehaviorPredictor()
predictions = behavior_predictor.predict(patterns, session_context)
print(f"Next action: {predictions['next_action_probability']}")
print(f"Session duration: {predictions['session_duration']} minutes")
# Outcome prediction
outcome_predictor = OutcomePredictor()
outcomes = outcome_predictor.predict(patterns, session_context)
print(f"Conversion probability: {outcomes['conversion_probability']}")
print(f"Estimated revenue: ${outcomes['revenue_estimate']:.2f}")
print(f"CLV estimate: ${outcomes['lifetime_value_estimate']:.2f}")
Trend Analysis
Analyze trends over time:
from inputless_analytics import TrendAnalyzer
from datetime import timedelta
trend_analyzer = TrendAnalyzer()
trends = trend_analyzer.analyze(
current_data=current_patterns,
historical_data=historical_patterns,
time_window=timedelta(days=7),
)
print(f"Trend direction: {trends['trend_direction']}")
print(f"Trend strength: {trends['trend_strength']}")
for pattern_type, type_data in trends['by_type'].items():
print(f"{pattern_type}: {type_data['direction']} ({type_data['change_percent']:.1f}%)")
Correlation Discovery
Find correlations between patterns and outcomes:
from inputless_analytics import CorrelationFinder
correlation_finder = CorrelationFinder()
correlations = correlation_finder.find(
patterns=patterns,
anomalies=anomalies,
outcomes=outcomes,
)
print(f"Pattern correlations: {correlations['pattern_correlations']}")
print(f"Anomaly correlations: {correlations['anomaly_correlations']}")
print(f"Pattern-outcome correlations: {correlations['pattern_outcome_correlations']}")
Examples
See src/example_usage.py for complete usage examples including:
- Basic usage
- Frustration detection
- Conversion optimization
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file inputless_analytics-1.0.2.tar.gz.
File metadata
- Download URL: inputless_analytics-1.0.2.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0cb149976beb376a47ff2b5019aa447ab942c32d887aed5f638af71ac09725
|
|
| MD5 |
e988e67fee74d007d329d93055d03f23
|
|
| BLAKE2b-256 |
7152ff5f607afcb239ca876b619496035c4cf19131565b4dac1e58f293ff4127
|
File details
Details for the file inputless_analytics-1.0.2-py3-none-any.whl.
File metadata
- Download URL: inputless_analytics-1.0.2-py3-none-any.whl
- Upload date:
- Size: 38.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eeeca9164f4365e6caca77147c151af23fb62dd119b55fd8d5c1f7df2f57db9e
|
|
| MD5 |
25d2b7c0c75e39a8fb88c36f5ae1eaec
|
|
| BLAKE2b-256 |
9b38bcb392af75d75a0310817e60f7e1216390810ccccb04e0f8974d842ef68f
|