diff --git a/gerrit/README.md b/gerrit/README.md
new file mode 100644
index 0000000..f2cdf6c
--- /dev/null
+++ b/gerrit/README.md
@@ -0,0 +1,48 @@
+VOLTHA: Gerrit Queries
+======================
+
+A script for constructing gerrit JCL queries
+
+```bash
+% git clone ssh://gerrit.opencord.org/onf-scripts
+% cd onf-scripts/gerrit/bin
+
+% ./gerrit.sh –help
+```
+
+Gerrit by patch or user
+-----------------------
+
+| Jira | Command | Description |
+| ---- | ------- | ----------- |
+| [x](https://gerrit.opencord.org/dashboard/self) | gerrit.sh --dashboard | View user dashboard |
+| [x](https://gerrit.opencord.org/q/status:open)  | gerrit.sh --wip | Display unmerged patches |
+| [x](https://gerrit.opencord.org/q/status:open)  | gerrit.sh --all voltha-lib-go | Display metadata for a repo: branches, tags, source |
+| [x](https://gerrit.opencord.org/q/status:merged) | gerrit.sh --status merged [--user u] | View merged patches |
+
+My patches and pending reviews
+------------------------------
+
+| Jira | Command | Description |
+| ---- | ------- | ----------- |
+| [x](https://gerrit.opencord.org/q/owner:joey@opennetworking.org+status:open) | gerrit.sh --wip --me | Display my unmerged patches |
+
+Gerrit by repository
+--------------------
+
+| Jira | Command | Description |
+| ---- | ------- | ----------- |
+| [x](https://gerrit.opencord.org/q/voltha-lib-go+status:open) | gerrit.sh --patch voltha-lib-go | View open patches by repository | 
+
+Misc
+----
+
+| Jira | Command | Description |
+| ---- | ------- | ----------- |
+| [x](https://gerrit.opencord.org/plugins/gitiles/voltha-lib-go/+/refs/heads/master/VERSION) | gerrit.sh --view repo voltha-lib-go | View repository VERSION file |
+
+
+See Also
+--------
+
+- [Gerrit: Searching Changes](https://gerrit-review.googlesource.com/Documentation/user-search.html)
diff --git a/gerrit/bin/gerrit.sh b/gerrit/bin/gerrit.sh
index 4900ab1..3463960 100755
--- a/gerrit/bin/gerrit.sh
+++ b/gerrit/bin/gerrit.sh
@@ -27,10 +27,23 @@
 ##--------------------##
 ##---]  INCLUDES  [---##
 ##--------------------##
-source "${libdir}/filters/status.sh"
+source "${libdir}/filters/include.sh"
 source "${libdir}/usage/include.sh"
-# source "${libdir}/usage/main.sh"
 
+## --------------------------------------------------------------------
+## --------------------------------------------------------------------
+function error()
+{
+    cat <<ERROR
+
+** -----------------------------------------------------------------------
+**   IAM: ${FUNCNAME[1]}
+** ERROR: $@
+** -----------------------------------------------------------------------
+ERROR
+    echo 
+    exit 1
+}
 
 ## -----------------------------------------------------------------------
 ## -----------------------------------------------------------------------
@@ -86,7 +99,56 @@
     return
 }
 
+## -----------------------------------------------------------------------
+## Usage: $0 --status open --reviewer [u]
+## -----------------------------------------------------------------------
+function do_gerrit_review()
+{
+    local -n ref_urls=$1   ; shift
+    local -n ref_repos=$1   ; shift
+    local -n ref_status=$1 ; shift
 
+    ref_urls=()
+
+    # local stem='https://gerrit.opencord.org/q/project:voltha-go+status:open'
+    local stem='https://gerrit.opencord.org/q/'
+
+    local -a common=()
+    [[ -v me ]] && { common+=('reviewer:self') }
+
+    for reviewer in "${argv_reviewer[@]}"; do
+        common+=("reviewer:${reviewer}")
+    done
+
+    local repo
+    for repo in "${ref_repos[@]}";
+    do
+        local -a args=()
+        args+=("project:${repo}")
+        args+=("${common[@]}")
+
+        local url="$stem"
+        url+="$(join_by '+' "${args[@]}")"
+        ref_urls+=("$url")
+    done
+
+    ## If not repo specific then query all
+    if [[ ${#ref_urls[@]} -eq 0 ]]; then
+        local -a args=()
+        args=("${common[@]}")
+
+        local url="$stem"
+        url+="$(join_by '+' "${args[@]}")"
+        ref_urls+=("$url")
+    fi
+
+	# --debug)  declare -g -i debug=1 ;;
+    # --search) declare -g -i search=1 ;;
+    # --wip)    declare -g -i status_is_open=1 ;;
+
+    return
+}
+ 
 ## -----------------------------------------------------------------------
 ## Intent: Iterate over --admin values and generate repositories
 ## -----------------------------------------------------------------------
@@ -283,7 +345,7 @@
         --search) declare -g -i argv_search=1 ;;
 
         --me)
-            # declare -g -i argv_me=1
+            declare -g -i argv_me=1
             me+=("owner:${USER}@opennetworking.org")
             ;;
 
@@ -402,13 +464,20 @@
 
         --patch*)
             repo="$1"; shift
-            urls+=("https://gerrit.opencord.org/q/${repo}+stats:open")
+            urls+=("https://gerrit.opencord.org/q/${repo}+status:open")
             # https://gerrit.opencord.org/q/voltha-openolt-adapter-go
             ;;
-        --review)
-            urls+=('https://gerrit.opencord.org/c/aether-ci-management/+/34900')
+
+        --reviewer)
+            arg="$1"; shift
+            add_filter_reviewer "$arg"
+
+            declare -g -i argv_review=1
+            # Replace with: set -- '--review' "$@"
             ;;
 
+        --review) declare -g -i argv_review=1 ;;
+
         --ver*)
             [[ $# -eq 0 ]] && { error "Usage: $arg [str]"; }
             arg="$1"; shift
@@ -470,12 +539,18 @@
     esac
 done
 
-[[ -v argv_search ]] && { do_gerrit_search urls repos argv_status; }
-[[ -v admins ]] && { gen_admin_urls urls repos admins; }
+[[ -v argv_search ]]   && { do_gerrit_search urls repos argv_status; }
+[[ -v admins ]]      && { gen_admin_urls urls repos admins; }
+
+# -----------------------------------------------------------------------
+# Generalize:
+#   o --review function like a simple search filter.
+#   o piece missing is defining query URL stem= when needed.
+# -----------------------------------------------------------------------
+[[ -v argv_review ]] && { do_gerrit_review urls repos argv_status; }
 
 ## are --views working ?
 [[ "${#views[@]}" -gt 0 ]] && { gen_view_urls  urls repos views;  }
-# [[ ! -v views  ]] && { echo 'called'; gen_view_urls  urls repos views;  }
 
 if [[ ${#urls[@]} -eq 0 ]]; then
     declare -a show_all=() # show all for visiblity
diff --git a/gerrit/gerrit/filters/include.sh b/gerrit/gerrit/filters/include.sh
new file mode 100644
index 0000000..34c84ea
--- /dev/null
+++ b/gerrit/gerrit/filters/include.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# -----------------------------------------------------------------------
+# Copyright 2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+source "${libdir}/filters/status.sh"
+source "${libdir}/filters/reviewers.sh"
+
+: # ($?==0) for source script
+
+# [EOF]
diff --git a/gerrit/gerrit/filters/reviewers.sh b/gerrit/gerrit/filters/reviewers.sh
new file mode 100644
index 0000000..e9d65d2
--- /dev/null
+++ b/gerrit/gerrit/filters/reviewers.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+# -----------------------------------------------------------------------
+# Copyright 2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+## -----------------------------------------------------------------------
+## Intent: Update gerrit query to filter based on reviewer
+## -----------------------------------------------------------------------
+function add_filter_reviewer()
+{
+    local val="$1"; shift
+
+    [[ ! -v argv_reviewer ]] && { declare -g -a argv_reviewer=(); }
+    argv_reviewer+=("$val")
+
+    return
+} # add_reviewer_filter()
+
+## -----------------------------------------------------------------------
+## Intent: Merge reviewer attributes into a URL query
+## -----------------------------------------------------------------------
+function apply_filter_reviewer()
+{
+    local -n ref=$1; shift
+
+    [[ ! -v argv_reviewer ]] && { return; }
+
+    echo "REF=[${ref[@]}]"
+
+    local reviewer
+    for reviewer in "${argv_reviewer[@]}";
+    do
+        if [[ "${ref[-1]: -1:1}" != '/' ]]; then
+           ref[-1]+='+' # "+reviewer:${reviewer}"
+        fi
+
+        # https://gerrit.opencord.org/q/reviewer:open
+        # TODO: Do not apply + when
+        # ref[-1]+="+reviewer:${reviewer}"
+        ref[-1]+="reviewer:${reviewer}"
+    done
+
+    return
+}
+
+: # ($?==0) for source script
+
+# [EOF]
diff --git a/gerrit/gerrit/usage/main.sh b/gerrit/gerrit/usage/main.sh
index 94f822b..5fe3cd3 100644
--- a/gerrit/gerrit/usage/main.sh
+++ b/gerrit/gerrit/usage/main.sh
@@ -27,7 +27,6 @@
     cat <<EOH
 Usage: $0
   --all r          Load all metadata for a repository
-  --reviews        Load pending code review requests
 
   --access         Display gerrit ACLs
   --dash(boad)     Display my patch dashboard
@@ -65,6 +64,11 @@
     voltha-2.12      View a branch
     v2.3.3           View a tag
 
+[REVIEW]
+  --review         Load pending code review requests
+  --review --me    Load only my pending requests
+  --reviewer       Load reviews by user
+
 [FILTER(s)]
   --status [s]       Filter query results by status={open,merged,closed}
     s=open (is:open)
