I recently purchased a pair of Meta Glasses to experiment with building a hands-free AI assistant. The idea that got me interested was simple: what changes when AI can see what you see? I often use AI as a cooking assistant, but that usually means touching my phone with busy hands or dirty fingers. That was the practical reason for buying the glasses. While building out the assistant, I have also been looking for other creative ways to use them.

I am not a content creator, but the camera makes it easy to film while keeping my hands free. Think about the YouTube videos where someone walks through a city with a camera and gives you a first-person view. You get to experience the streets, buildings, people, and pace of the city as if you were there. I started wondering if I could make a similar version while riding my e-bike around town. The Meta Glasses are well suited for it because I can start recording without mounting a camera to the bike, holding a phone, or doing much of anything besides enjoying the ride. The camera sees roughly what I see, and the footage feels much closer to being on the bike than watching from a camera mounted somewhere else.

Then I realized the video was only half of the story.

Meta AI app showing the connected glasses and a gallery of first-person e-bike ride clips
The Meta AI app keeps the glasses and their first-person recordings in one place. The five-minute clips in the gallery became the video side of the dataset.

The Bike Was Recording Its Own Version of the Ride

My Specialized e-bike already tracks rides through the Specialized app. I had mostly thought about that data as a nice summary at the end: where I went, how far I rode, and how fast I was moving. Underneath that summary, the bike records location, speed, distance, elevation, cadence, how much power I contributed, how much power the motor contributed, battery use, assist mode, and the timestamps tying it all together.

That meant I had two records of the same ride sitting in two different apps. The glasses captured what I saw, and the bike captured what was happening underneath me. If I could combine them, a hill would no longer be only a hill in a video. I could also see my speed, the grade, how hard I was pedaling, and how much the motor helped. A stop in the ride data could be connected to the intersection, traffic, or whatever else was visible at that exact moment. Combining the two sources could create something more valuable than either one on its own. That became my weekend project.

Specialized app ride detail showing distance, moving time, elevation gain, average speed, rider power, and calories
The ride summary is the human-friendly view: distance, moving time, elevation, speed, rider power, and calories.
Specialized app showing a Turbo Vado 4.0 Step-Through e-bike and its recorded activity totals
The Specialized app also connects the activity history to the bike itself. The exported FIT file provides the timestamped measurements needed for the dataset.

Getting the Two Sources Onto One Timeline

The first step was getting the original files out of each app. Specialized exports the ride as a .FIT file, a format commonly used by fitness devices. The Meta app lets me save the original video clips from the glasses to my photo library.

Next, I created a small Python project to bring those files together. Each ride gets its own folder with one place for the untouched FIT export, one for the original videos, and another for anything generated by the project.

rides/<ride-date>/
  raw/fit/       Specialized ride export
  raw/video/     Original Meta Glasses clips
  derived/       Parsed and aligned data

Keeping the source files untouched was important. Video can include people, license plates, and exact locations, so this is a private, local-first dataset. The pipeline inventories each source file and records a hash before processing it. That gives me a way to trace anything generated later back to the exact file it came from without editing the original.

From there, the Python pipeline does three main things:

  1. It parses the Specialized FIT file into rows of ride telemetry.
  2. It inspects each video and determines when the recording actually started and ended.
  3. It aligns both sources on the same clock and divides the ride into 15-second segments.

The timestamp work was the trickiest part. The Meta Glasses currently stop each recording after five minutes, so longer rides are split across several clips. Restarting the recording also creates short gaps in the video that do not exist in the bike’s continuous ride data. Fortunately, each Meta clip includes a capture-specific QuickTime timestamp. I can use it to identify when the camera started recording and align the clip with the Specialized timestamps.

Once the clocks were aligned, each 15-second segment could include the matching video range along with average and maximum speed, rider power, motor power, cadence, elevation change, estimated grade, battery level, and route position. If there was no video for part of the ride, the pipeline recorded the gap instead of pretending the footage was complete.

The First Dataset

So far I have processed two neighborhood rides: six video clips, just over 23 minutes of riding, and 1,403 telemetry points. About 95% of the ride time has matching video coverage.

The dataset is still small, but it works. I can query a ride locally and pull back sections based on what the bike was doing. More importantly, every result has a path back to the matching moment in the original video.

For example, instead of scrubbing through a long recording looking for the hill climb, I can find segments with a positive grade and higher motor power first, then jump directly to those parts of the video. The telemetry narrows the search, and the video explains what was actually happening.

Together, the two sources are much more useful than either one is on its own.

What I Want to Learn Next

At first, the goal was just to get two clocks to line up. Now that the basic pipeline works, the project has turned into a set of questions I can work through one at a time. I think of them as a loop: build the data, ask something useful, give an AI a way to help, understand more of the video, and turn the result into something worth sharing.

01 Structure

How do I build a useful dataset?

The raw FIT files and videos are only the ingredients. I want to learn how alignment, segment size, labels, gaps, provenance, and privacy turn a folder of recordings into data I can trust and continue building on.

02 Question

How do I ask useful questions about it?

Telemetry is straightforward to search, while video is not. I want to ask questions like: where were the steepest climbs, what was happening when I slowed down, or which sections required the most help from the motor?

03 Connect

How do I make the data available to an AI?

I don't want to hand a model a giant directory and hope it figures everything out. I want to build a small set of tools that let an AI search rides, retrieve the right segment, read its telemetry, and inspect only the relevant part of a video.

04 Understand

What can I learn from the video itself?

The bike can tell me that I stopped, but it cannot tell me whether I was at a stop sign, waiting for traffic, or looking at something interesting. I want to experiment with captions, visual search, object detection, and other ways to add environmental context to the ride.

05 Create

Can I automatically create something people want to watch?

After a ride, could the system find its best moments, cut the matching footage, add a useful telemetry overlay, blur anything private, and produce a short video for social media? That would be a much more interesting finish than manually scrubbing through every five-minute clip.

Better video analysis creates better labels. Better labels make search more useful. Better search makes it easier for an AI to find a good moment, which makes the automated content more interesting. Every new ride gives me another chance to improve the whole loop and build a richer set of data to analyze.

I don’t know which direction will end up being the most useful and that’s ok. I am creating original data from something I already enjoy doing, then learning how to make it useful.

Specialized E-Bike + Meta Glasses = Dataset.

-Jake