In 2009, the Duke men’s cross country team placed fourth in the Southeast Regional meet, and for the first time in eight years, it seemed like an at-large bid to the NCAA Championship meet might be in the cards. Long before any running websites posted results or the NCAA made its anxiously-awaited announcement, one runner on the Duke team predicted the result.

While the rest of his teammates waited, then-sophomore Bo Waggoner entered results from all the regions into a computer program he had written and revealed not only whether or not the Blue Devils would get the chance to run on the championship course, but also the entire list of 31 teams that had made it, including predictions for all 13 of the at-large bids.

He did not make a single mistake.

“It first started… because we really wanted to know as soon as we could whether we would get in or not. I was learning computer science so it seemed like a good chance to try that out,” Waggoner said. “From there I just started collecting results of the meets over the course of the year and testing it to make sure it worked, and then the day of regionals I was able to use it to figure out that we were going to be in.”

When the 2009 cross country season began, Waggoner thought of finding a way to more quickly determine the teams that would be competing in the national meet—something that would be useful for a team like Duke’s which had a history of placing outside the top-two at its regional meet. Because only teams that finish in the top-two in their region receive automatic bids, any team that does not accomplish this must depend on previous performances in hopes of collecting enough points for an at-large bid. Once the 18 total teams from the nine regional meets are in, an NCAA subcommittee begins reviewing the remaining programs, beginning a long and complicated process awarding points to potential at-large teams by measuring the their success at different meets during the season.

“His algorithm… saves a lot of time,” Duke head coach Norm Ogilvie said. “We did it in the past on a yellow legal pad on a hotel bed once all the results came in. But what Bo has done… is put together a computer program that… spits it out. It’s all about the speed.”

When Waggoner first decided to undertake the task of writing this code, he was an interdepartmental math and computer science major at Duke, and it seemed like a fun challenge. He began his task by taking out the NCAA rulebook and trying to make sense of it all, referring to previous years’ results for guidance.

Waggoner was not the first to come up with the idea of constructing an algorithm to help slog through the rules and determine the 13 at-large bids. A popular running website,, had created their own program for determining the qualification results about a year prior. Shortly after Waggoner had run his program for the first time, determining that Duke would be present at the national meet, Flotrack posted contradicting results.

“I trusted [Bo] completely,” teammate James Kostelnik said. “I still remember, we were at a layover in the Charlotte airport and Flotrack announced who they calculated to make the meet and we weren’t in there.”

It turned out that Flotrack had miscalculated a tie, something that would make all the difference for the Duke team. Waggoner immediately understood what had happened and told his teammates, whose faith in him proved well-justified.

Although his program was a large success, the Duke team qualified for an automatic bid the following season and was not close to contention in 2011, so for the Blue Devils, Waggoner’s program faded to the background as he graduated and went off to Harvard for his Ph.D in computer science. That is, until the Blue Devils finished in fifth at this year’s regional meet.

Even before this year’s runners got off the course, they were worrying about their chances of making the national meet. Going into the contest, both they and Ogilvie had stated that a top-four finish would mean a trip to the Championships, so when they finished in fifth it did not take long before they started calling Waggoner.

As for Waggoner, he was already snapping up regional results and entering them into his code as soon as they came out. Because his program spit out the results before anybody else’s had, the runners knew they would earn a berth to the 2012 National Championships before they had even made it back to campus.

Waggoner did not keep the good news to himself though, and quickly posted his list on running website, along with detailed reasoning for his decisions, under the username ‘devils advocate.’ Although he and his algorithm had thus far gone unnoticed by LetsRun founders Robert and Weldon Johnson, this time Waggoner caught their eye.

“I had gone to the message boards, and he had gotten the teams right and the explanations seemed logical to me,” Robert said. “I’ve seen people do it manually… it’s just incredibly time-intensive to do it, so I’ve never been that concerned, I always wait for someone else to figure it out.”

This time, however, the Johnson brothers did not have to wait. Once Waggoner’s results were on their site, the brothers publicized the post by the person they described as a formerly unknown poster. Shortly afterwards, an interested party emailed Robert to inform him that Waggoner had actually been doing this for years, prompting further interest.

“I’ve always thought that if I had [a program like Bo’s] and could predict [the qualifying teams] people would like that,” Robert said. “I realized I could put it up within minutes, and I just thought that would be a service to the coaches.”

Robert soon posted a reply to ‘devils advocate’ on the message board, stating his interest in purchasing the program and providing his email.

“As LetsRun has turned more and more into a business, I realized that everything in life is a negotiation,” Robert said. “People have said, ‘Well why don’t you get interns?’ I think it’s kind of wrong for people to do stuff for free. I feel like people deserve to be paid.”

Despite Robert’s offer to buy the program from him, Waggoner felt that the coding had been so simple there was no reason to charge for it and posted a link to the code as a response in the thread.

Although the entire code can now be found online, Waggoner is still hoping to stay as involved with the Duke team as before.

“I’m definitely going to still be following results closely [in the future], and I’m definitely going to go to the national cross country championships every year that I possibly can because its such an awesome experience,” Waggoner said. “As for keeping in touch, I hope so, I hope to keep meeting the new guys on the team…. Probably I’ll get old someday and just be the weird has-been who shows up and cheers them on, but that’ll be fun too, so no worries either way.”