Skip to main content

Session Analysis

Leverage the power of Guido's AI to analyze your driving sessions.

Session Overview

After importing your data, Guido automatically generates a complete analysis:

const analysis = await client.sessions.analyze(sessionId);

console.log('Analysis:', {
totalLaps: analysis.summary.totalLaps,
bestLap: analysis.summary.bestLap,
averageLap: analysis.summary.averageLap,
consistency: analysis.summary.consistency, // in %
});

Key Metrics

Lap Times

// All lap times
const laps = analysis.laps;

laps.forEach((lap, index) => {
console.log(`Lap ${index + 1}: ${lap.time}s`);
});

// Best lap
const bestLap = analysis.bestLap;
console.log('Best lap:', bestLap.time);
console.log('Sectors:', bestLap.sectors);

Sector Analysis

// Sector comparison
const sectorAnalysis = analysis.sectors;

sectorAnalysis.forEach((sector) => {
console.log(`Sector ${sector.id}:`);
console.log(` Best: ${sector.best}s`);
console.log(` Average: ${sector.average}s`);
console.log(` Variance: ${sector.variance}s`);
});

Consistency

const consistency = analysis.consistency;

console.log('Overall consistency:', consistency.overall);
console.log('Lap time variance:', consistency.lapTimeVariance);
console.log('Improvement areas:', consistency.improvementAreas);

Detailed Analysis

Telemetry Data

const telemetry = await client.sessions.getTelemetry(sessionId, lapIndex);

// Available data
console.log('Speed:', telemetry.speed);
console.log('Brake:', telemetry.brake);
console.log('Throttle:', telemetry.throttle);
console.log('Steering angle:', telemetry.steering);
console.log('GPS position:', telemetry.gps);

Visualizations

// Generate charts
const charts = await client.sessions.generateCharts(sessionId, {
types: ['speed', 'brake', 'throttle', 'steering'],
laps: [bestLapIndex, currentLapIndex],
});

// Generated chart URLs
console.log('Speed chart:', charts.speed.url);
console.log('Brake chart:', charts.brake.url);

Lap Comparison

Compare with Best Lap

const comparison = await client.laps.compare({
baseLap: bestLapId,
compareLaps: [lap1Id, lap2Id, lap3Id],
});

comparison.results.forEach((result) => {
console.log(`Lap ${result.lapNumber}:`);
console.log(` Delta: ${result.delta}s`);
console.log(` Loss areas:`);
result.lossAreas.forEach((area) => {
console.log(` - ${area.location}: ${area.timeLost}s`);
});
});

Ideal Lap

// Calculate ideal lap (best of each sector)
const idealLap = await client.laps.calculateIdeal(sessionId);

console.log('Ideal possible time:', idealLap.time);
console.log('Potential gain:', idealLap.improvement);
console.log('Sectors used:', idealLap.sectors);

AI Coach

Automatic Recommendations

const coaching = await client.ai.getRecommendations(sessionId);

coaching.insights.forEach((insight) => {
console.log(`📍 ${insight.location}`);
console.log(` ${insight.message}`);
console.log(` Potential gain: ${insight.potentialGain}s`);
console.log(` Priority: ${insight.priority}`);
});

Example Output

📍 Turn 7 (La Source)
Braking too early by 15m
Potential gain: 0.3s
Priority: High

📍 Exit Turn 12 (Pouhon)
Late re-acceleration, throttle at 70% instead of 85%
Potential gain: 0.2s
Priority: Medium

Data Export

// CSV export
await client.sessions.export(sessionId, {
format: 'csv',
output: './exports/session-analysis.csv',
});

// Full JSON export
await client.sessions.export(sessionId, {
format: 'json',
output: './exports/session-full.json',
includeRawData: true,
});

Next Steps