Monday, February 18, 2013

Nike+ Accelerator Ideas

On December 12, 2012, Nike announced their Nike+ Accelerator program in which 10 companies, selected by way of an online application, will be given API access to Nike+ API, mentoring, $20k, and several months of time working at the Nike campus in Portland, Oregon. The program is for companies that intend to leverage "Nike+ technology to create products and services that will inspire athletes across a broad range of activity and health goals including training, coaching, gaming, data visualization and quantified self." The programs is managed in conjunction with TechStars.

As an athlete, mobile app developer and Internet of Things enthusiast a friend who also happens to be a mentor for the program suggested I have a look. While I opted not to apply for various reasons, I thought it was interesting to brainstorm a couple of concepts, just to see what popped.

Data Access & API
First off the data & API, the opportunities are really dependent on the kind of access is available.  What data available via the API provided by Nike?

The information on the Nike developer site are limited but it appears that the data available on the site is limited to the data for a particular user. For example, I could build an app in which a user could log in and access their Nike+ data, which would allow me to present in the app the user's data in my own format or for my own purposes. 
Nike describes their data access into the following four categories. I have included the JSON (JavaScript Object Notation) data structures at the end of this post. These are directly from the Nike developer documentation. 

Aggregate Sports Data: This is a list of "Nike experiences" for which the user has data. An "experience" is, I believe a category of data. For example the Nike running app would collect one category of data and their Fuelband product would collect another.

List Activities: Lits of activities with with summary information for each, including Activity ID, time, duration, calories burned, NikeFuel earned and the device which recorded the data.

Activity Detail: Provides similar data attributes as the data structure above, but for an individual activity.

GPS Data: GPS data in 3-dimensions (lat, long & elevation) for an activity.

This data is available via HTTP GET requests and Nike will provide (coming soon, apparently) a JavaScript auth library that implements the OAuth 2.0 spec. Nike will also provide libraries for Apple iOS and Google Android development. Also,  for iOS Nike will provide the Nike+ FuelBand Dev Kit which will provide bluetooth access directly to the the FuelBand devices.

Concepts
Ultimately, I might get more excited about access to Nike's entire database of activities for all users, even with user ID's scrubbed. With access to a single user's data (upon their logging in) this essentially provides developers with concepts around another screen (mobile device or computer) on which to visualize and manage the data they already have. On the upside, there seems to be tremendous adoption of Nike tracking devices and apps, so this is apparently substantial market for which to build another tool to manipulate this data for the user. On the downside, there are already so many apps in the fitness tracking category that a lot of creative capital has been deployed here and the market is crowded. With access to only one user's data at a time the ability to create a community might be limited to a developers ability to build a bridge from the Nike database to their own. For example, If I built an app and offered to take the Nike+ data for each of my users and reposting it to my own database, then I'd have my own database to work with and I could do things like - see all the runners that run a 10k at a 6 minute per mile pace in your neighborhood. 

Concept 1: The Third Screen - publish your lap times on the scoreboard at your local track
Build a community around a scoreboard of the people running at the local track, so anyone with a Nike+ device could view their times on the scoreboard. The local track in Santa Barbara routinely has 20 or so people running. I get curious about the times of others and I always thought it would be interested to know their paces. This would be an app and associated controller to access the scoreboard at your track. There would be three types of scoreboards: 

  • The existing scoreboard at the field used for the football games,
  • A mobile app, and
  • An after-market screen that track coaches could install at the track.
This is a micro community for any user that uses a Nike+ device that allows a quick visualization of time, pace and laps.

Concept 2: Geographic Community
Leverage GPS coordinates so that anyone running in a local area, such as a local track, would be able to see who else is there. So this is similar to the idea above, but really focused around checking-in and then being able to monitor your pace as well as those of others. 

Concept 3: Nike+ Race Timing
Use Bluetooth communication capabilities of Nike+ devices and apps to implement race timing. In his scenario, if you have a Nike+ device, then you could run in your local 10k race and won't need a timing chip. The race timers will use Bluetooth

Concept 4: Coaching App
Allows a coach, while at the track, to monitor the workouts of the runners. The runners would all have their Nike+ FuelBand, wristbands, that would monitor progress and report the results on the coache's app. This would also enable lap counters.

Concept 5: Avalanche Beacon / Transceiver
Use the Nike+ technology and a mobile device as an avalanche beacon. Having done extensive out-of-bounds and backcountry skiing and alpine mountaineering, I am aware of the risk of avalanches, the challenge in determining the risk of an avalanche release (especially when staring down at 1000 vertical foot of untracked snow) and the difficulty of using an avalanche beac such as an Ortovox (chances are they'll be dead by the time you find them).  I think the ubiquity of the Nike+ technology along with some creative mesh networking and tracking algorithms, might provide the basis for a reasonable solution. GPS signaling appears to provide reasonable signal attenuation through snow, but there is still a question of the kind of signal that would be able to transmit the GPS location back to unburies members in the party. 

Concept 6: Augmented Reality Glasses
FuelBand stats project on sunglasses. Good for stats for skiing, for example. This project would likely want to wait for the release of Google's Project Glass, which, if successful, might release an SDK (software development kit) for the technology.

Concept 7. App to convert FuelBand Data to Audio
Stats, triggers and alerts could be relayed to helmet speakers, for snowboard/ski helmets for example. This would be interesting for any application in which the user has gloves on or otherwise finds it difficult to access their mobile device.

Summary
I am not sure if any of these ideas were necessarily winners, but they do get me thinking, and perhaps by using these as inputs for some brainstorming and then starting down some market validation for a revised concept, something marketable would appear. One common denominator with my thinking above, that I would presume is inline with Nike's thinking on their accelerator is that these concepts would all strive to drive adoption with the Nike technology. Whether it is a race, track coach or sense of community, driving adoption seems to be the common denominator with my thinking.

Appendix: Data Structures
These are directly from the Nike Developer Site.


Aggregate Sports Data

{
  "experienceTypes": [
    "FUELBAND",
    "RUNNING"
  ],
  "summaries": [
    {
      "experienceType": "ALL",
      "records": {
        "lifetimeFuel": 17617
      }
    },
    {
      "experienceType": "FUELBAND",
      "records": {
        "dailyGoalTargetValue": 2000,
        "currentStreak": 2,
        "totalDailyGoalsAchieved": 2,
        "lifetimeAverageFuelDay": 2422,
        "lifetimeAverageFuelWeek": 16955,
        "lifetimeAverageFuelMonth": 16955,
        "numOfActivities": 7
      }
    },
    {
      "experienceType": "RUNNING",
      "records": {
        "level": 0,
        "lifetimeDuration": 871000,
        "lifetimeGpsRuns": 1,
        "lifetimeHeartActivities": 0,
        "lifetimeAveragePace": 278114.8221470081
      }
    }
  ]
}

List Activities

{
  "data": [
    {
      "activityId": "91b501dc-4a38-...",
      "calories": 2475,
      "fuel": 7500,
      "distance": 19.665315,
      "steps": 24975,
      "duration": "0:01:00.0000",
      "activityType": "ALL_DAY",
      "startTime": "2012-02-26T08:00:00Z",
      "activityTimeZone": "America/Los_Angeles",
      "status": "COMPLETE",
      "deviceType": "FUELBAND",
      "tags": [],
      "streams": []
    },
    {
      "activityId": "8554c3bb-f985-4700-a52d-6235475a10f0",
      "calories": 1848,
      "fuel": 5555,
      "distance": 14.6834352,
      "steps": 18648,
      "duration": "0:01:00.0000",
      "activityType": "ALL_DAY",
      "startTime": "2012-02-25T08:00:00Z",
      "activityTimeZone": "America/Los_Angeles",
      "status": "COMPLETE",
      "deviceType": "FUELBAND",
      "tags": [],
      "streams": []
    },
    {
      "activityId": "b7511567-9414-429a-9b7b-40ebc15af985",
      "calories": 396,
      "fuel": 1200,
      "distance": 3.1464504,
      "steps": 3996,
      "duration": "0:01:00.0000",
      "activityType": "ALL_DAY",
      "startTime": "2012-02-24T08:00:00Z",
      "activityTimeZone": "America/Los_Angeles",
      "status": "COMPLETE",
      "deviceType": "FUELBAND",
      "tags": [],
      "streams": []
    },
    {
      "activityId": "b87bb409-a618-47ee-a75e-1bb5f8daf9a6",
      "calories": 300,
      "fuel": 900,
      "distance": 2.3621999999999996,
      "steps": 3000,
      "duration": "0:01:00.0000",
      "activityType": "ALL_DAY",
      "startTime": "2012-02-23T08:00:00Z",
      "activityTimeZone": "America/Los_Angeles",
      "status": "COMPLETE",
      "deviceType": "FUELBAND",
      "tags": [],
      "streams": []
    },
    {
      "activityId": "6c6eb89c-fa42-49a6-8b04-2596297a7c3a",
      "calories": 200,
      "fuel": 600,
      "distance": 1.5748,
      "steps": 2000,
      "duration": "0:01:00.0000",
      "activityType": "ALL_DAY",
      "startTime": "2012-02-22T08:00:00Z",
      "activityTimeZone": "America/Los_Angeles",
      "status": "COMPLETE",
      "deviceType": "FUELBAND",
      "tags": [],
      "streams": []
    }
  ],
  "paging": {
    "next": "/me/sport/activities?access_token=a1ad3b349cd73983b34&offset=6"
  }
}



Activity Detail

{
  "activityId": "104019031",
  "calories": 257,
  "fuel": 662,
  "distance": 3.1318,
  "steps": 10,
  "duration": "0:14:31.000",
  "activityType": "RUN",
  "startTime": "2011-08-11T02:44:39Z",
  "activityTimeZone": "GMT-08:00",
  "status": "COMPLETE",
  "deviceType": "SPORTWATCH",
  "tags": [
    {
      "tagType": "EMOTION",
      "value": "HAPPY"
    },
    {
      "tagType": "TERRAIN",
      "value": "TRAIL"
    },
    {
      "tagType": "COURT",
      "value": "DUNK"
    },
    {
      "tagType": "SHOES",
      "value": "AirMax"
    },
    {
      "tagType": "WEATHER",
      "value": "RAINY"
    },
    {
      "tagType": "NOTE",
      "value": "text string"
    }
  ],
  "metrics": [
    {
      "intervalMetric": 10,
      "intervalUnit": "SEC",
      "metricType": "DISTANCE",
      "values": [
        0.0299,
        0.0562,
        0.0794,
        0.114,
        3.0967,
        3.1296
      ]
    }
  ]
}

GPS Data
{
  "elevationLoss": 54.089367,
  "elevationGain": 57.98948,
  "elevationMin": 52.071926,
  "elevationMax": 71.568146,
  "intervalMetric": 10,
  "intervalUnit": "SEC",
  "wayPoints": [
    {
      "latitude": 45.508057,
      "longitude": -122.83315,
      "elevation": 53.09316
    },
    {
      "latitude": 45.508034,
      "longitude": -122.83313,
      "elevation": 53.151
    },
    {
      "latitude": 45.50786,
      "longitude": -122.832954,
      "elevation": 53.86401
    },
    {
      "latitude": 45.508175,
      "longitude": -122.833206,
      "elevation": 56.81296
    },
    {
      "latitude": 45.508156,
      "longitude": -122.83318,
      "elevation": 56.870304
    },
    {
      "latitude": 45.508133,
      "longitude": -122.83316,
      "elevation": 56.99327
    }
  ]
}




2 comments:

  1. I really like your thoughts and ideas you have here. I came up of a couple similar to yours as well.
    Do you happen to know when the Nike+ API will be available to the public?

    ReplyDelete
  2. Do you think it is possible to retrieve LAP information from an activity using the public API?

    ReplyDelete