diff --git a/griffin-doc/measure/dimensions.md b/griffin-doc/measure/dimensions.md
index d253179..31cf047 100644
--- a/griffin-doc/measure/dimensions.md
+++ b/griffin-doc/measure/dimensions.md
@@ -42,7 +42,7 @@
 
 ## Accuracy
 
-Data accuracy refers to the degree to which the values of a said attribute agree with an identified reference truth
+Data accuracy refers to the degree to which the values of a said attribute agrees with an identified reference truth
 data (source of correct information). In-accurate data may come from different sources like,
 
 - Dynamically computed values,
@@ -53,7 +53,7 @@
 free of error. Higher accuracy values signify that the said data set represents the “real-life” values/ objects that it
 intends to model.
 
-A detailed measure configuration guide is avaiable [here](measure-configuration-guide/accuracy.md).
+A detailed measure configuration guide is available [here](measure-configuration-guide/accuracy.md).
 
 ## Completeness
 
@@ -70,7 +70,7 @@
 - `name is NULL and age is NULL`
 - `email NOT RLIKE '^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9.-]+$'`
 
-A detailed measure configuration guide is avaiable [here](measure-configuration-guide/completeness.md).
+A detailed measure configuration guide is available [here](measure-configuration-guide/completeness.md).
 
 ## Duplication
 
@@ -88,7 +88,7 @@
 
 Duplication measure in Apache Griffin computes all of these metrics for a user-defined data asset.
 
-A detailed measure configuration guide is avaiable [here](measure-configuration-guide/duplication.md).
+A detailed measure configuration guide is available [here](measure-configuration-guide/duplication.md).
 
 ## SparkSQL
 
@@ -99,7 +99,7 @@
 by other measures. These SparkSQL queries may contain clauses like `select`, `from`, `where`, `group-by`, `order-by`
 , `limit`, etc.
 
-A detailed measure configuration guide is avaiable [here](measure-configuration-guide/sparksql.md).
+A detailed measure configuration guide is available [here](measure-configuration-guide/sparksql.md).
 
 ## Profiling
 
@@ -121,4 +121,4 @@
 Data Profiling helps us create a huge amount of insight into the quality levels of our data and helps to find data
 quality rules and requirements that will support a more thorough data quality assessment in a later step.
 
-A detailed measure configuration guide is avaiable [here](measure-configuration-guide/profiling.md).
\ No newline at end of file
+A detailed measure configuration guide is available [here](measure-configuration-guide/profiling.md).
\ No newline at end of file
diff --git a/griffin-doc/measure/measure-configuration-guide/accuracy.md b/griffin-doc/measure/measure-configuration-guide/accuracy.md
new file mode 100644
index 0000000..79b1bc1
--- /dev/null
+++ b/griffin-doc/measure/measure-configuration-guide/accuracy.md
@@ -0,0 +1,242 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you 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.
+-->
+
+Accuracy Measure - Configuration Guide
+=====================================
+
+### Introduction
+
+Data accuracy refers to the degree to which the values of a said attribute in a data source agree with an identified
+reference truth data (source of correct information). In-accurate data may come from different sources like,
+
+- Dynamically computed values,
+- the result of a manual workflow,
+- irate customers, etc.
+
+Accuracy measure quantifies the extent to which data sets contains are correct, reliable and certified values that are
+free of error. Higher accuracy values signify that the said data set represents the “real-life” values/ objects that it
+intends to model.
+
+Accuracy measure is comparative in nature - attributes of data source to be checked are compared with attributes of
+another reference source. Thus, unlike other measures/ dimensions, Accuracy relies on definition of 2 sources,
+
+- the reference (truth) source which contains the good/ correct/ accurate values.
+- the actual data source to be assessed and measured for data accuracy.
+
+### Configuration
+
+The accuracy measure can be configured as below,
+
+```json
+{
+  ...
+
+  "measures": [
+    {
+      "name": "accuracy_measure",
+      "type": "accuracy",
+      "data.source": "crime_report_source",
+      "config": {
+        "ref.source": "crime_report_truth",
+        "expr": [
+          {
+            "source.col": "city",
+            "ref.col": "city_name"
+          }
+        ]
+      },
+      "out": [
+        {
+          "type": "metric",
+          "name": "accuracy_metric",
+          "flatten": "map"
+        },
+        {
+          "type": "record",
+          "name": "accuracy_records"
+        }
+      ]
+    }
+  ]
+
+  ...
+}
+ ```
+
+##### Key Parameters:
+
+| Name    | Type     | Description                            | Supported Values                                          |
+|:--------|:---------|:---------------------------------------|:----------------------------------------------------------|
+| name    | `String` | User-defined name of this measure      | -                                                         |
+| type    | `String` | Type of Measure                        | completeness, duplication, profiling, accuracy, sparksql  |
+| data.source | `String` | Name of data source on which this measure is applied  | -                                      |
+| config  | `Object` | Configuration params of the measure    | Depends on measure type ([see below](#example-config-object))                       |
+| out     | `List  ` | Define output(s) of measure execution  | [See below](#outputs)                                               |
+
+##### Example `config` Object:
+
+`config` object for Accuracy measure contains the following keys,
+
+- `expr`: The value for `expr` is a json array of comparison objects where each object has 2 fields `source.col`
+  and `ref.col` which must be actual columns in the source and reference data sets respectively. This key is mandatory
+  and `expr` array must not be empty i.e. at least one comparison must be defined.
+
+- `ref.source`: This is a mandatory parameter which selects the data source which will be used as reference. This is a
+  mandatory parameter and this data source must be defined in the sources section of the application configuration.
+
+_Note:_ This expression describes the accurate records. This means that for all records where `expr` is true, the row is
+marked as accurate, and rest of the records are in-accurate.
+
+The conditions of attribute comparison are defined by users, and it looks something like,
+
+```json
+{
+  ...
+
+  "config": {
+    "ref.source": "crime_report_truth",
+    "expr": [
+      {
+        "source.col": "city",
+        "ref.col": "city_name"
+      }
+    ]
+  }
+
+  ...
+}
+```
+
+This expression means that the users is trying to access the accuracy of `city` column in the data source under
+assessment against the accurate values in `city_name` column of the reference data source. For understand, in SQL this
+will boil down to `city == city_name`.
+
+Since `expr` is an array, users can define as many comparisons as they require. In case of multiple conditions, the
+overall rule representation in terms of SQL becomes something like,
+`s1 == r1 AND s2 == r2 AND sn == rn`, where `sn` and `rn` are all actual columns.
+
+Note: The values of `source.col` and `ref.col` must be actual column names in the source and reference data sets
+respectively.
+
+### Outputs
+
+Accuracy measure supports the following two outputs,
+
+- Metrics
+- Records
+
+Users can choose to define any combination of these 2 outputs. For no outputs, skip this `out: [ ... ]` section from the
+measure configuration.
+
+#### Metrics Outputs
+
+To write metrics for accuracy measure, configure the measure with output section as below,
+
+```json
+{
+  ...
+
+  "out": [
+    {
+      "type": "metric",
+      "name": "accuracy_metric",
+      "flatten": "map"
+    }
+  ]
+
+  ...
+}
+ ```
+
+This will generate the metrics like below,
+
+```json
+{
+  ...
+
+  "value" : {
+    "accuracy_measure" : {
+      "measure_name" : "accuracy_measure",
+      "measure_type" : "Accuracy",
+      "data_source" : "crime_report_source",
+      "metrics" : {
+        "total" : "4617",
+        "accurate" : "4511",
+        "inaccurate" : "106"
+      }
+    }
+  }
+
+  ...
+}
+```
+
+#### Record Outputs
+
+To write records as output for accuracy measure, configure the measure with output section as below,
+
+```json
+{
+  ...
+
+  "out": [
+    {
+      "type": "record",
+      "name": "accuracy_records"
+    }
+  ]
+
+  ...
+}
+ ```
+
+The above configuration will generate the records output like below,
+
+```
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+|date_time          |incident                                     |address                          |city         |zipcode|__tmst       |__status|
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+|2015-05-26 20:15:00|F&W/DISPOSAL REQUEST (F&WDISPS)              |200 Block FOREST AV              |PALO ALTO    |94301  |1622231569966|good    |
+|2015-05-26 20:45:00|ACCIDENT PROPERTY DAMAGE (1182)              |MIDDLEFIELD RD & SAN ANTONIO RD  |PALO ALTO    |94303  |1622231569966|good    |
+|2015-05-26 22:55:00|DRIVER'S LICENSE SUSPENDED/ALC (14601.2(A)VC)|EL CAMINO REAL & N SAN ANTONIO RD|""           |null   |1622231569966|bad     |
+|2015-05-26 22:55:00|TRAFFIC/SUSPENDED LICENSE (14601)            |EL CAMINO REAL & N SAN ANTONIO RD|""           |null   |1622231569966|bad     |
+|2015-05-26 23:40:00|BURGLARY/AUTO (459A)                         |300 Block EMERSON ST             |PALO ALTO    |94301  |1622231569966|good    |
+|2015-05-27 00:30:00|BURGLARY/AUTO (459A)                         |1900 Block EL CAMINO REAL        |PALO ALTO    |94306  |1622231569966|good    |
+|2015-05-30 19:28:00|SICK & CARED FOR/MISC (1053M)                |100 Block LOIS LN                |PALO ALTO    |94303  |1622231569966|good    |
+|2015-05-30 19:30:00|BURGLARY/AUTO (459A)                         |100 Block EL CAMINO REAL         |PALO ALTO    |94304  |1622231569966|good    |
+|2015-05-30 20:50:00|BURGLARY/AUTO (459A)                         |100 Block EL CAMINO REAL         |PALO ALTO    |94304  |1622231569966|good    |
+|2015-05-30 20:54:00|BURGLARY/AUTO (459A)                         |400 Block E OKEEFE ST            |""           |94303  |1622231569966|bad     |
+|2015-05-30 20:54:00|BURGLARY/AUTO (459A)                         |400 Block E OKEEFE ST            |""           |94303  |1622231569966|bad     |
+|2015-05-30 21:17:00|BURGLARY/AUTO (459A)                         |2000 Block EL CAMINO REAL        |PALO ALTO    |94306  |1622231569966|good    |
+|2015-05-30 21:17:00|CREDIT CARDS/FRAUDULENT USE (484G)           |2000 Block EL CAMINO REAL        |PALO ALTO    |94306  |1622231569966|good    |
+|2015-06-01 16:00:00|ACCIDENT PROPERTY DAMAGE (1182)              |3100 Block BLOCK MIDDLEFIELD RD  |PALO ALTO    |94306  |1622231569966|good    |
+|2015-06-01 16:00:00|BURGLARY/AUTO (459A)                         |4200 Block EL CAMINO REAL        |PALO ALTO    |94306  |1622231569966|good    |
+|2015-06-01 16:20:00|BURGLARY ATTEMPT/AUTO (459AA)                |300 Block LOWELL AV              |PALO ALTO    |94301  |1622231569966|good    |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A)                         |800 Block EL CAMINO REAL         |PALO ALTO    |94301  |1622231569966|good    |
+|2015-06-01 16:30:00|ASSAULT WITH DEADLY WEAPON (245)             |1100 Block N RENGSTORFF AV       |MOUNTAIN VIEW|null   |1622231569966|bad     |
+|2015-06-01 16:30:00|BURGLARY/AUTO (459A)                         |2000 Block EL CAMINO REAL        |PALO ALTO    |94306  |1622231569966|good    |
+|2015-06-01 16:30:00|TRAFFIC/SUSPENDED LICENSE (14601)            |1100 Block N RENGSTORFF AV       |MOUNTAIN VIEW|null   |1622231569966|bad     |
++-------------------+---------------------------------------------+---------------------------------+-------------+-------+-------------+--------+
+only showing top 20 rows
+ ```
+
+A new column `__status` has been added to the original data set on which this measure was executed. The value of this
+column can be either `bad` or `good` which can be used to calculate the metrics/ separate data based on quality etc.
+
+_Note:_ This output is for `ConsoleSink`. 
\ No newline at end of file
