Plugin to automatically generate reminders for events, deadlines etc

I have an Agenda page which basically summarizes my to-dos:

- query-table:: false
  #+BEGIN_QUERY
    {:title [:h4 "Overdue"]
      :query [:find (pull ?block [*])
              :in $ ?start ?next
              :where
              [?block :block/marker ?marker]
              [(contains? #{"TODO","DOING"} ?marker)]
              (or
                [?block :block/scheduled ?d]
                [?block :block/deadline ?d])
              [(> ?d ?start)]
              [(< ?d ?next)]]
              :result-transform (fn [result]
                        (sort-by (fn [h]
                                   (or (get h :block/scheduled) (get h :block/deadline))) result))
      :inputs [:365d-before :0d-before]
      :collapsed? false}
    #+END_QUERY
- query-table:: false
  #+BEGIN_QUERY
    {:title [:h4 "Today"]
      :query [:find (pull ?block [*])
              :in $ ?start ?next
              :where
              (or
                [?block :block/scheduled ?d]
                [?block :block/deadline ?d])
              [(> ?d ?start)]
              [(< ?d ?next)]]
              :result-transform (fn [result]
                        (sort-by (fn [h]
                                   (or (get h :block/scheduled) (get h :block/deadline))) result))
      :inputs [:1d-before :1d-after]
      :collapsed? false}
    #+END_QUERY
- #+BEGIN_QUERY
  {:title [:h4 "Electives"]
   :query [:find (pull ?b [*])
          :where
  (or [?b :block/priority "A"] [?b :block/priority "B"] [?b :block/priority "C"])
          [?b :block/marker ?marker]
          (not [?b :block/scheduled ?d])
          (not [?b :block/deadline ?d])
          [(contains? #{"TODO","DOING"} ?marker)]]
  :result-transform 
      (fn [result]
         (sort-by (fn [h] (get h :block/priority "Z")) result))
  }
  #+END_QUERY
- query-table:: false
  #+BEGIN_QUERY
    {:title [:h4 "Sooner"]
      :query [:find (pull ?block [*])
              :in $ ?start ?next
              :where
              (or
                [?block :block/scheduled ?d]
                [?block :block/deadline ?d])
              [(> ?d ?start)]
              [(< ?d ?next)]]
              :result-transform (fn [result]
                        (sort-by (fn [h]
                                   (or (get h :block/scheduled) (get h :block/deadline))) result))
      :inputs [:0d-after :7d-after]
      :collapsed? false}
    #+END_QUERY
- #+BEGIN_QUERY
    {:title [:h4 "Later"]
      :query [:find (pull ?block [*])
              :in $ ?start ?next
              :where
              (or
                [?block :block/scheduled ?d]
                [?block :block/deadline ?d])
              [(> ?d ?start)]
              [(< ?d ?next)]]
              :result-transform (fn [result]
                        (sort-by (fn [h]
                                   (or (get h :block/scheduled) (get h :block/deadline))) result))
      :inputs [:6d-after :90d-after]
      :collapsed? false}
    #+END_QUERY
3 Likes