Let me illustrate my idea, to see if this fits. Let L be an ordered list of non-overlapping time range with a count. Initially L is empty.
For each time range d in dailyJobs, d may overlap with SOME time range in L.
For example:
L: [ c ][ c ][ c ][ c ]
d: [ ]
Results:
L: [ c ][c ][c+1 ][c+1][c+1 ][ c ]
That is merging L and d s.t. L continues to be an ordered list of non-overlapping time range. After iterating all d in dailyJobs, walk through the entries in L for the max. count.
Of course, you can also keep a maxCount variable s.t. in every merge of L and d you keep this variable the max count s.t. you can avoid the final O(n) scan.