           try
             content = JSON.parse(body)
             for job in content.jobs
+              # Add the job to the jobList
+              index = jobList.indexOf(job.name)
+              if index == -1
+                jobList.push(job.name) 
+                index = jobList.indexOf(job.name)
+
               state = if job.color == "red" then "FAIL" else "PASS"
               if filter.test job.name
-                response += "#{state} #{job.name}\n"
+                response += "[#{index + 1}] #{state} #{job.name}\n"
             msg.send response
           catch error
             msg.send error
 
 module.exports = (robot) ->
-  robot.respond /jenkins build ([\w\.\-_ ]+)(, (.+))?/i, (msg) ->
+  robot.respond /j(?:enkins)? build ([\w\.\-_ ]+)(, (.+))?/i, (msg) ->
     jenkinsBuild(msg)
 
-  robot.respond /jenkins list( (.+))?/i, (msg) ->
+  robot.respond /j(?:enkins)? b (\d+)/i, (msg) ->
+    jenkinsBuildById(msg)
+
+  robot.respond /j(?:enkins)? list( (.+))?/i, (msg) ->
     jenkinsList(msg)
 
-  robot.respond /jenkins describe (.*)/i, (msg) ->
+  robot.respond /j(?:enkins)? describe (.*)/i, (msg) ->
     jenkinsDescribe(msg)
 
   robot.jenkins = {

          try
            content = JSON.parse(body)
            response += "JOB: #{content.displayName}\n"

            if content.description
              response += "DESCRIPTION: #{content.description}\n"

#   dougcole

querystring = require 'querystring'

# Holds a list of jobs, so we can trigger them with a number
# instead of the job's name. Gets populated on when calling
# list.
jobList = []

jenkinsBuildById = (msg) ->
  # Switch the index with the job name
  job = jobList[parseInt(msg.match[1]) - 1]

  if job
    msg.match[1] = job
    jenkinsBuild(msg)
  else
    msg.reply "I couldn't find that job. Try `jenkins list` to get a list."

jenkinsBuild = (msg) ->
    url = process.env.HUBOT_JENKINS_URL
