     "beginningOfUTCDay": beginningOfUTCDay
     "currentTime": currentTime
     "mailTaskName": @mailTaskName
-    
   async.waterfall [
     findNonApprovedCandidatesWhoUpdatedJobProfileToday.bind(asyncContext)
     (unfilteredCandidates, cb) ->
       async.reject unfilteredCandidates, candidatesUpdatedTodayFilter.bind(asyncContext), cb.bind(null,null)
     (filteredCandidates, cb) ->
       async.each filteredCandidates, sendInternalCandidateUpdateReminder.bind(asyncContext), cb
-  ], cb
+  ], internalCandidateUpdateReminderCallback
     
 findNonApprovedCandidatesWhoUpdatedJobProfileToday = (cb) ->
   findParameters = 
     "jobProfile.updated":
       $lte: @currentTime.toISOString()
       gt: @beginningOfUTCDay.toISOString()
-    "jobProfileApproved": false
+    "jobProfileApproved": false 
   User.find(findParameters).select("_id jobProfile.name jobProfile.updated").lean().exec cb
   
 candidatesUpdatedTodayFilter = (candidate, cb) ->
   findParameters =
     "user": candidate._id
     "mailTask": @mailTaskName
-    "metadata.beginningOfUTCDay": @beginningOfUTCDay
+    "metadata.beginningOfUTCDay": @beginningOfUTCDay 
   MailSent.find(findParameters).lean().exec (err, sentMail) ->
-    if err? then return errors.serverError("Error fetching sent mail in #{@mailTaskName}")
-    cb Boolean(sentMail.length)
+    if err?
+      log.error "Error finding mail sent for task #{@mailTaskName} and user #{candidate._id}!"
+      cb true
+    else
+      cb Boolean(sentMail.length)
     
 sendInternalCandidateUpdateReminder = (candidate, cb) ->
   context =
     email_id: "tem_Ac7nhgKqatTHBCgDgjF5pE"
-    recipient:
+    recipient: 
       address: "team@codecombat.com" #Change to whatever email address is necessary
       name: "The CodeCombat Team"
+    email_data:
+      new_candidate_profile: "https://codecombat.com/account/profile/#{candidate._id}"
   log.info "Sending candidate updated reminder for #{candidate.jobProfile.name}"
-  
   newSentMail =
     mailTask: @mailTaskName
     user: candidate._id

      email_id: "tem_CCcHKr95Nvu5bT7c7iHCtm"
      recipient:
        address: employer.email
        name: employer.name
      email_data:
        new_candidates: numberOfCandidatesSinceLogin
        employer_company_name: employer.employerAt
        company_name: "CodeCombat"
    
    log.info "Sending available candidates update reminder to #{context.recipient.name}(#{context.recipient.address})"
    newSentMail =
      mailTask: @mailTaskName

    sendwithus.api.send context, (err, result) ->
      log.error "Error sending interal candidate update email: #{err} with result #{result}" if err
      cb null

### End Internal Candidate Update Reminder Email ###
### Employer New Candidates Available Email ###
employerNewCandidatesAvailableTask = ->
  mailTaskName = "employerNewCandidatesAvailableTask"
  lockDurationMs = 6000 #TODO: Update this lock duration
  lockManager.setLock mailTaskName, lockDurationMs, (err) ->
    if err? then return log.error "There was an error getting a task lock!"
    emailEmployerNewCandidatesAvailable.apply {"mailTaskName":mailTaskName}, (err) ->
      if err
        log.error "There was an error completing the new candidates available task: #{err}"
      else
        log.info "Completed the employer new candidates available task!"
      lockManager.releaseLock mailTaskName, (err) ->
        if err? then return log.error "There was an error releasing the distributed lock for task #{mailTaskName}: #{err}"

emailEmployerNewCandidatesAvailable = (emailEmployerNewCandidatesAvailableCallback) ->
  currentTime = new Date()
  asyncContext = 
    "currentTime": currentTime
