Claude Code Plugins

Community-maintained marketplace

Feedback

trip-reconstruction

@ceo-whyd-it/car-log
0
0

Fill gaps between checkpoints using hybrid GPS (70%) + address (30%) template matching with high confidence

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name trip-reconstruction
description Fill gaps between checkpoints using hybrid GPS (70%) + address (30%) template matching with high confidence

Skill 3: Trip Reconstruction (GPS-First Matching)

Purpose: Automatically fill gaps between checkpoints using hybrid GPS (70%) + address (30%) template matching with high-confidence proposals

Activation: Automatic trigger after checkpoint creation shows gap, or manual request: "fill trips", "reconstruct from November 1"


Overview

Trip Reconstruction is Car Log's core innovation - using GPS-first hybrid matching to automatically propose trips based on recurring route templates. When a checkpoint gap is detected (e.g., 820km between refuels), the system matches against saved templates using precise GPS coordinates (70% weight) combined with address similarity (30% weight) to generate high-confidence proposals.

Key Innovation: GPS coordinates are the source of truth, enabling 90%+ confidence matches even when addresses are ambiguous ("Košice" could mean 3 fuel stations, but GPS 48.7164°N, 21.2611°E is exact).


Workflow (7 Steps)

Step 1: Gap Analysis

When a checkpoint is created, automatically analyze the gap to the previous checkpoint:

  • Distance gap (odometer delta)
  • Time gap (days between checkpoints)
  • Start/end locations (GPS + address)
  • Vehicle context

MCP Tool: car-log-core.analyze_gap(checkpoint1_id, checkpoint2_id)

User Message Pattern:

"Gap Analysis:
• Start: Bratislava (Nov 1, 45,000 km)
• End: Košice (Nov 8, 45,820 km)
• Distance: 820 km
• Duration: 7 days

How would you like to fill this gap?
1. Use my templates (automatic matching)
2. Tell me specific trips
3. I'll do it later"

Step 2: Template Fetching

If user chooses automatic matching, fetch all saved templates for the vehicle.

MCP Tool: car-log-core.list_templates(vehicle_id)

Considerations:

  • If no templates exist, suggest creating one from gap data
  • Templates must have GPS coordinates (mandatory for high-confidence matching)
  • Show template count and brief summary

Step 3: Template Matching (GPS-First Algorithm)

Run hybrid GPS + address matching using the core algorithm:

MCP Tool: trip-reconstructor.match_templates(gap_data, templates, gps_weight=0.7, address_weight=0.3)

GPS-First Scoring Algorithm:

GPS Distance Scoring (70% weight):

  • < 100m: Score 100 (perfect match - within parking lot variance)
  • 100m-500m: Score 90 (excellent - same building area)
  • 500m-2km: Score 70 (good - same neighborhood)
  • 2km-5km: Score 40 (poor - different area)
  • 5km: Score 0 (no match)

Address Similarity Scoring (30% weight):

  • Exact match: 100
  • Substring match: 80 ("Bratislava" in "Bratislava City Center")
  • City match: 60 (both contain same city name)
  • Levenshtein similarity: 0-100

Final Confidence Calculation:

confidence = (gps_score * 0.7) + (address_score * 0.3)

Bonus factors (up to +10%):
+ 5% if day-of-week matches template's typical_days
+ 5% if distance matches within 10km

Matching Mode Selection:

  • MODE_A (GPS-only): Both checkpoints have GPS, no addresses → GPS 100%
  • MODE_B (Hybrid): Both have GPS + addresses → GPS 70% + Address 30%
  • MODE_C (Fallback): No GPS, addresses only → Address 100% (low confidence)

Step 4: Proposal Presentation

Present matching results based on confidence tiers:

High Confidence (90-100%):

"Reconstruction Proposal (92% confidence):

✓ Exact GPS match (within 50m)
✓ Day-of-week matches template
✓ Distance matches expected route

Proposal:
2× Warehouse Run (Bratislava ↔ Košice)
• Nov 1-2: Bratislava → Košice (410km)
• Nov 6-7: Košice → Bratislava (410km)

Coverage: 820km / 820km (100%) ✓

This looks very reliable. Accept?"

Medium Confidence (70-89%):

"Reconstruction Proposal (75% confidence):

⚠️ GPS match is approximate (within 1.5km)
✓ City names match (Bratislava, Košice)
⚠️ Days don't match typical pattern

Proposal: 2× Warehouse Run (820km total)

This is likely correct, but please verify:
1. Did you drive to Košice on Nov 1?
2. Did you return to Bratislava on Nov 6?

Accept, modify, or reject?"

Low Confidence (<70%):

"No High-Confidence Match Found

I found potential matches, but none are above 70% confidence:
• Warehouse Run (58%) - Distance matches, but GPS is 8km off
• Client Visit (42%) - Wrong direction

Options:
1. Manually describe the trips
2. Create a new template for this route
3. Skip reconstruction for now"

Multiple High-Confidence Matches: Present all options sorted by confidence (descending) and let user choose the best match.

Step 5: User Approval

Request explicit approval before creating trips:

  • Accept proposal → Proceed to Step 6
  • Modify proposal → Allow trip adjustments
  • Reject → Offer manual entry or skip

Always require confirmation - never auto-create trips without approval.

Step 6: Batch Trip Creation

Create all approved trips in a single batch operation with Slovak compliance fields:

MCP Tool: car-log-core.create_trips_batch(trips[])

Required Slovak Compliance Fields:

  • driver_name: Full name (MANDATORY for Slovak VAT Act 2025)
  • trip_start_datetime: ISO 8601 format
  • trip_end_datetime: ISO 8601 format
  • trip_start_location: Address/label
  • trip_end_location: Address/label
  • distance_km: From template or calculated
  • purpose: "Business" or "Personal"
  • business_description: Required if Business purpose
  • reconstruction_method: "template"
  • template_id: Reference to matched template
  • confidence_score: Matching confidence

Step 7: Automatic Validation

Immediately after trip creation, run validation checks:

MCP Tools:

  • validation.validate_checkpoint_pair(checkpoint1_id, checkpoint2_id) - Check distance sum (±10% threshold)
  • validation.validate_trip(trip_id) - Check each trip's fuel efficiency

Validation Thresholds:

  • Distance sum: ±10% (odometer delta vs. sum of trip distances)
  • Fuel consumption: ±15% (expected vs. actual fuel)
  • Efficiency range: Diesel 5-15 L/100km, Gasoline 6-20 L/100km

User Message Pattern:

"✅ Validation Passed:
• Distance: 820km / 820km (0% variance) ✓
• Fuel: 72.8L / 69.7L (+4.4%, within 15% threshold) ✓
• Efficiency: 8.9 L/100km (Diesel range: 5-15) ✓

Your trips are ready for tax reporting!"

If validation warnings appear (e.g., fuel +25%), show clear explanation but don't block trip creation - allow user to review and adjust.


Related Skills

Auto-triggered after:

  • Skill 2 (Checkpoint from Receipt) → Gap detection

May trigger:

  • Skill 4 (Template Creation) → If no templates exist or no match found
  • Skill 6 (Data Validation) → Automatic validation after trip creation

Success Criteria

  • GPS matching uses 70% weight, address matching 30% weight
  • Confidence ≥70% required for automatic proposals
  • Multiple high-confidence matches presented with user choice
  • Stateless orchestration (Skill fetches all data, servers are stateless)
  • Automatic validation runs immediately after trip creation
  • Natural language proposals ("2× Warehouse Run" not "trip_001, trip_002")
  • Clear confidence breakdown shown to user
  • Slovak compliance fields mandatory (driver_name, VIN, etc.)
  • Coverage percentage calculated (distance covered / total gap)
  • User always has option to reject or modify proposals

Key Algorithms Reference

GPS Distance Calculation (Haversine):

distance = 2 * R * arcsin(√(sin²(Δφ/2) + cos(φ1) * cos(φ2) * sin²(Δλ/2)))
R = 6371 km (Earth radius)

Confidence Tiers:

  • 90-100%: High (strong recommendation, minimal verification needed)
  • 70-89%: Medium (likely correct, user verification recommended)
  • <70%: Low (do not show as automatic proposal)

Template Completeness Score: Essential fields (GPS coords): 60% Distance: +10% Typical days: +10% Purpose: +10% Business description: +10%


Implementation Status: Specification complete, implementation pending Estimated Effort: 5 hours Dependencies: car-log-core, trip-reconstructor, geo-routing, validation (all functional)