   controls whether `pmap` or `map` is returned."
   []
   (if (cfg/value :parallel-proc) pmap map))
+(def ^:private filter-map
+  {:not-short proc/not-short?
+   :noun proc/noun?
+   :min-confidence proc/min-confidence?
+   :good-confidence proc/good-confidence?
+   :no-punctuation proc/no-punctuation?
+   :not-in-blacklist bl/not-in-blacklist?})
+
+(defn- word-predicate
+  "Create the word predicate for the video index."
+  [{:keys [configuration] :as job}]
+  (let [filters (map #(% filter-map) (cfg/value :index-filter configuration))]
+    (partial multi-filter (filter #(not (nil? %)) filters))))
 
 
 ;; ## Task Functions

     (doall (map #(load-category-resources %) categories)))))


(defn analyze-categories
  "Analyzes the categories and generates the index structures."
  [job]
  (println "TODO: tasks/analyze-categories")
  job)


(defn- load-speech-recognition-result

      :word-count (count (proc/words results))
      :confidence (mean (map :confidence results))
      :duration duration)))


(defn- build-video-index
