 
    :user-vote-counts
                 (plmb/fnk [rating-mat]
+                  ; For deciding in-conv below; filter ptpts based on how much they've voted
                   (mapv
                     (fn [rowname row] [rowname (count (remove nil? row))])
                     (rownames rating-mat)

                          :base-iters 10
                          :base-k 50
                          :max-k 12
                          :group-iters 10}
                    opts))

   :zid         (plmb/fnk [conv votes]
                  (or (:zid conv)
                      (:zid (first votes))))

   :rating-mat  (plmb/fnk [conv votes]
                  (update-nmat (:rating-mat conv)
                               (map (fn [v] (vector (:pid v) (:tid v) (:vote v))) votes)))

   :n           (plmb/fnk [rating-mat]
                  (count (rownames rating-mat)))

    (let [ptpts   (rownames (:rating-mat conv))
          n-ptpts (count (distinct (into ptpts (map :pid votes))))]
      (println "N-ptpts:" n-ptpts)
      (->
        ; dispatch to the appropriate function
        ((cond
           (> n-ptpts large-cutoff)   large-conv-update
           :else             small-conv-update)
              {:conv conv :votes votes :opts opts})
        ; Remove the :votes key from customs; not needed for persistence
        (assoc-in
          [:customs :votes]
          [])))
    (catch Exception e
      ; XXX - hmm... have to figure out how to deal with this hook in production. Shouldn't save things to
      ; disk that are too big, and in fact won't be able to save to disk at all on heroku
