diff --git a/predihood/classes/manual_assessment.csv b/predihood/classes/manual_assessment.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a596954497c5ab74bba61cfd2bf94a75a5258a93
--- /dev/null
+++ b/predihood/classes/manual_assessment.csv
@@ -0,0 +1 @@
+CODE,AREA,DENSITY,P14_POP,P14_POP0002,P14_POP0305,P14_POP0610,P14_POP1117,P14_POP1824,P14_POP2539,P14_POP4054,P14_POP5564,P14_POP6579,P14_POP80P,P14_POP0014,P14_POP1529,P14_POP3044,P14_POP4559,P14_POP6074,P14_POP75P,P14_POP0019,P14_POP2064,P14_POP65P,P14_POPH,P14_H0014,P14_H1529,P14_H3044,P14_H4559,P14_H6074,P14_H75P,P14_H0019,P14_H2064,P14_H65P,P14_POPF,P14_F0014,P14_F1529,P14_F3044,P14_F4559,P14_F6074,P14_F75P,P14_F0019,P14_F2064,P14_F65P,C14_POP15P,C14_POP15P_CS1,C14_POP15P_CS2,C14_POP15P_CS3,C14_POP15P_CS4,C14_POP15P_CS5,C14_POP15P_CS6,C14_POP15P_CS7,C14_POP15P_CS8,C14_H15P,C14_H15P_CS1,C14_H15P_CS2,C14_H15P_CS3,C14_H15P_CS4,C14_H15P_CS5,C14_H15P_CS6,C14_H15P_CS7,C14_H15P_CS8,C14_F15P,C14_F15P_CS1,C14_F15P_CS2,C14_F15P_CS3,C14_F15P_CS4,C14_F15P_CS5,C14_F15P_CS6,C14_F15P_CS7,C14_F15P_CS8,P14_POP_FR,P14_POP_ETR,P14_POP_IMM,P14_PMEN,P14_PHORMEN,P14_LOG,P14_RP,P14_RSECOCC,P14_LOGVAC,P14_MAISON,P14_APPART,P14_RP_1P,P14_RP_2P,P14_RP_3P,P14_RP_4P,P14_RP_5PP,P14_NBPI_RP,P14_RPMAISON,P14_NBPI_RPMAISON,P14_RPAPPART,P14_NBPI_RPAPPART,P14_RP_M30M2,P14_RP_3040M2,P14_RP_4060M2,P14_RP_6080M2,P14_RP_80100M2,P14_RP_100120M2,P14_RP_120M2P,P14_RP_ACHTOT,P14_RP_ACH19,P14_RP_ACH45,P14_RP_ACH70,P14_RP_ACH90,P14_RP_ACH05,P14_RP_ACH11,P14_RPMAISON_ACHTOT,P14_RPMAISON_ACH19,P14_RPMAISON_ACH45,P14_RPMAISON_ACH70,P14_RPMAISON_ACH90,P14_RPMAISON_ACH05,P14_RPMAISON_ACH11,P14_RPAPPART_ACHTOT,P14_RPAPPART_ACH19,P14_RPAPPART_ACH45,P14_RPAPPART_ACH70,P14_RPAPPART_ACH90,P14_RPAPPART_ACH05,P14_RPAPPART_ACH11,P14_MEN,P14_MEN_ANEM0002,P14_MEN_ANEM0204,P14_MEN_ANEM0509,P14_MEN_ANEM10P,P14_PMEN_ANEM0002,P14_PMEN_ANEM0204,P14_PMEN_ANEM0509,P14_PMEN_ANEM10P,P14_NBPI_RP_ANEM0002,P14_NBPI_RP_ANEM0204,P14_NBPI_RP_ANEM0509,P14_NBPI_RP_ANEM10P,P14_RP_PROP,P14_RP_LOC,P14_RP_LOCHLMV,P14_RP_GRAT,P14_NPER_RP,P14_NPER_RP_PROP,P14_NPER_RP_LOC,P14_NPER_RP_LOCHLMV,P14_NPER_RP_GRAT,P14_ANEM_RP,P14_ANEM_RP_PROP,P14_ANEM_RP_LOC,P14_ANEM_RP_LOCHLMV,P14_ANEM_RP_GRAT,P14_RP_SDB,P14_RP_CCCOLL,P14_RP_CCIND,P14_RP_CINDELEC,P14_RP_ELEC,P14_RP_EAUCH,P14_RP_BDWC,P14_RP_CHOS,P14_RP_CLIM,P14_RP_TTEGOU,P14_RP_GARL,P14_RP_VOIT1P,P14_RP_VOIT1,P14_RP_VOIT2P,NB_B101,NB_B102,NB_B103,NB_B201,NB_B202,NB_B203,NB_B204,NB_B205,NB_B206,NB_B301,NB_B302,NB_B303,NB_B304,NB_B305,NB_B306,NB_B307,NB_B308,NB_B309,NB_B310,NB_B311,NB_B312,NB_B313,NB_B315,NB_B316,DEC_PIMP14,DEC_TP6014,DEC_Q114,DEC_MED14,DEC_Q314,DEC_EQ14,DEC_D114,DEC_D214,DEC_D314,DEC_D414,DEC_D614,DEC_D714,DEC_D814,DEC_D914,DEC_RD14,DEC_S80S2014,DEC_GI14,DEC_PTSA14,DEC_PCHO14,DEC_PBEN14,DEC_PPEN14,DEC_PAUT14,note,NB_D201,NB_D202,NB_D203,NB_D204,NB_D205,NB_D206,NB_D207,NB_D208,NB_D209,NB_D210,NB_D211,NB_D212,NB_D213,NB_D221,NB_D231,NB_D232,NB_D233,NB_D235,NB_D236,NB_D237,NB_D238,NB_D239,NB_D240,NB_D242,NB_D243,C401,C402,C403,C409,C501,C502,C503,C504,C505,C505_NB_INT,C509,C601,C602,C603,C604,C605,C605_NB_INT,C609,C701,C702,C101,C101_NB_CANT,C101_NB_EP,C101_NB_RPIC,C102,C102_NB_CANT,C102_NB_EP,C104,C104_NB_CANT,C104_NB_PELEM,C104_NB_EP,C104_NB_RPIC,C105,C105_NB_CANT,C105_NB_PELEM,C105_NB_EP,NB_F101,NB_F101_NB_AIREJEU,NB_F101_NB_COU,NB_F101_NB_ECL,NB_F102,NB_F102_NB_AIREJEU,NB_F102_NB_COU,NB_F102_NB_ECL,NB_F103,NB_F103_NB_AIREJEU,NB_F103_NB_COU,NB_F103_NB_ECL,NB_F104,NB_F104_NB_AIREJEU,NB_F104_NB_COU,NB_F104_NB_ECL,NB_F105,NB_F105_NB_AIREJEU,NB_F105_NB_COU,NB_F105_NB_ECL,NB_F106,NB_F106_NB_AIREJEU,NB_F106_NB_COU,NB_F106_NB_ECL,NB_F107,NB_F107_NB_AIREJEU,NB_F107_NB_COU,NB_F107_NB_ECL,NB_F108,NB_F108_NB_AIREJEU,NB_F108_NB_COU,NB_F108_NB_ECL,NB_F109,NB_F109_NB_AIREJEU,NB_F109_NB_COU,NB_F109_NB_ECL,NB_F110,NB_F110_NB_AIREJEU,NB_F110_NB_COU,NB_F110_NB_ECL,NB_F111,NB_F111_NB_AIREJEU,NB_F111_NB_COU,NB_F111_NB_ECL,NB_F112,NB_F112_NB_AIREJEU,NB_F112_NB_COU,NB_F112_NB_ECL,NB_F113,NB_F113_NB_AIREJEU,NB_F113_NB_COU,NB_F113_NB_ECL,NB_F114,NB_F114_NB_AIREJEU,NB_F114_NB_COU,NB_F114_NB_ECL,NB_F116,NB_F116_NB_AIREJEU,NB_F116_NB_COU,NB_F116_NB_ECL,NB_F117,NB_F117_NB_AIREJEU,NB_F117_NB_COU,NB_F117_NB_ECL,NB_F118,NB_F118_NB_AIREJEU,NB_F118_NB_COU,NB_F118_NB_ECL,NB_F119,NB_F119_NB_AIREJEU,NB_F119_NB_COU,NB_F119_NB_ECL,NB_F120,NB_F120_NB_AIREJEU,NB_F120_NB_COU,NB_F120_NB_ECL,NB_F121,NB_F121_NB_AIREJEU,NB_F121_NB_COU,NB_F121_NB_ECL,NB_F201,NB_F201_NB_AIREJEU,NB_F202,NB_F202_NB_AIREJEU,NB_F203,NB_F203_NB_AIREJEU,NB_F302,NB_F302_NB_SALLES,NB_F303,NB_F303_NB_SALLES,NB_F304,NB_F305,NB_A101,NB_A104,NB_A105,NB_A106,NB_A107,NB_A108,NB_A109,NB_A115,NB_A119,NB_A120,NB_A121,NB_A122,NB_A123,NB_A124,NB_A125,NB_A203,NB_A205,NB_A206,NB_A207,NB_A208,NB_A301,NB_A302,NB_A303,NB_A304,NB_A401,NB_A402,NB_A403,NB_A404,NB_A405,NB_A406,NB_A501,NB_A502,NB_A503,NB_A504,NB_A505,NB_A506,NB_A507,P14_POP1564,P14_POP1524,P14_POP2554,P14_H1564,P14_H1524,P14_H2554,P14_H5564,P14_F1564,P14_F1524,P14_F2554,P14_F5564,P14_ACT1564,P14_ACT1524,P14_ACT2554,P14_ACT5564,P14_HACT1564,P14_HACT1524,P14_HACT2554,P14_HACT5564,P14_FACT1564,P14_FACT1524,P14_FACT2554,P14_FACT5564,P14_ACTOCC1564,P14_ACTOCC1524,P14_ACTOCC2554,P14_ACTOCC5564,P14_HACTOCC1564,P14_HACTOCC1524,P14_HACTOCC2554,P14_HACTOCC5564,P14_FACTOCC1564,P14_FACTOCC1524,P14_FACTOCC2554,P14_FACTOCC5564,P14_CHOM1564,P14_CHOM1524,P14_CHOM2554,P14_CHOM5564,P14_HCHOM1564,P14_FCHOM1564,P14_INACT1564,P14_HINACT1564,P14_FINACT1564,P14_ETUD1564,P14_HETUD1564,P14_FETUD1564,P14_RETR1564,P14_HRETR1564,P14_FRETR1564,P14_AINACT1564,P14_HAINACT1564,P14_FAINACT1564,C14_ACT1564,C14_ACT1564_CS1,C14_ACT1564_CS2,C14_ACT1564_CS3,C14_ACT1564_CS4,C14_ACT1564_CS5,C14_ACT1564_CS6,C14_ACTOCC1564,C14_ACTOCC1564_CS1,C14_ACTOCC1564_CS2,C14_ACTOCC1564_CS3,C14_ACTOCC1564_CS4,C14_ACTOCC1564_CS5,C14_ACTOCC1564_CS6,P14_ACTOCC15P,P14_HACTOCC15P,P14_FACTOCC15P,P14_SAL15P,P14_HSAL15P,P14_FSAL15P,P14_NSAL15P,P14_HNSAL15P,P14_FNSAL15P,P14_ACTOCC15P_TP,P14_SAL15P_TP,P14_HSAL15P_TP,P14_FSAL15P_TP,P14_NSAL15P_TP,P14_SAL15P_CDI,P14_SAL15P_CDD,P14_SAL15P_INTERIM,P14_SAL15P_EMPAID,P14_SAL15P_APPR,P14_NSAL15P_INDEP,P14_NSAL15P_EMPLOY,P14_NSAL15P_AIDFAM,P14_ACTOCC15P_ILT1,P14_ACTOCC15P_ILT2P,P14_ACTOCC15P_ILT2,P14_ACTOCC15P_ILT3,P14_ACTOCC15P_ILT4,P14_ACTOCC15P_ILT5,C14_ACTOCC15P,C14_ACTOCC15P_PAS,C14_ACTOCC15P_MAR,C14_ACTOCC15P_DROU,C14_ACTOCC15P_VOIT,C14_ACTOCC15P_TCOM,C201,C201_NB_CANT,C201_NB_EP,C201_NB_INT,C301,C301_NB_CANT,C301_NB_PGE,C301_NB_EP,C301_NB_INT,C302,C302_NB_CANT,C302_NB_PGE,C302_NB_EP,C302_NB_INT,C303,C303_NB_PGE,C303_NB_INT,C304,C304_NB_CANT,C304_NB_INT,C305,C305_NB_CANT,C305_NB_INT,NB_D401,NB_D402,NB_D403,NB_D404,NB_D405,NB_D502,NB_D601,NB_D602,NB_D603,NB_D604,NB_D605,NB_D606,NB_D701,NB_D702,NB_D703,NB_D704,NB_D705,NB_D709,NB_E101,NB_E102,NB_E103,NB_E106,NB_G101,NB_G102,NB_G103,NB_G104,C14_MEN,C14_MENPSEUL,C14_MENHSEUL,C14_MENFSEUL,C14_MENSFAM,C14_MENFAM,C14_MENCOUPSENF,C14_MENCOUPAENF,C14_MENFAMMONO,C14_PMEN,C14_PMEN_MENPSEUL,C14_PMEN_MENHSEUL,C14_PMEN_MENFSEUL,C14_PMEN_MENSFAM,C14_PMEN_MENFAM,C14_PMEN_MENCOUPSENF,C14_PMEN_MENCOUPAENF,C14_PMEN_MENFAMMONO,P14_POP15P,P14_POP5579,P14_POPMEN15P,P14_POPMEN1524,P14_POPMEN2554,P14_POPMEN5579,P14_POPMEN80P,P14_POP15P_PSEUL,P14_POP1524_PSEUL,P14_POP2554_PSEUL,P14_POP5579_PSEUL,P14_POP80P_PSEUL,P14_POP15P_MARIEE,P14_POP15P_NONMARIEE,C14_MEN_CS1,C14_MEN_CS2,C14_MEN_CS3,C14_MEN_CS4,C14_MEN_CS5,C14_MEN_CS6,C14_MEN_CS7,C14_MEN_CS8,C14_PMEN_CS1,C14_PMEN_CS2,C14_PMEN_CS3,C14_PMEN_CS4,C14_PMEN_CS5,C14_PMEN_CS6,C14_PMEN_CS7,C14_PMEN_CS8,C14_FAM,C14_COUPAENF,C14_FAMMONO,C14_COUPSENF,C14_NE24F0,C14_NE24F1,C14_NE24F2,C14_NE24F3,C14_NE24F4P,P14_POP0205,P14_POP1114,P14_POP1517,P14_POP2529,P14_POP30P,P14_SCOL0205,P14_SCOL0610,P14_SCOL1114,P14_SCOL1517,P14_SCOL1824,P14_SCOL2529,P14_SCOL30P,P14_NSCOL15P,P14_NSCOL15P_DIPLMIN,P14_NSCOL15P_CAPBEP,P14_NSCOL15P_BAC,P14_NSCOL15P_SUP,P14_HNSCOL15P,P14_HNSCOL15P_DIPLMIN,P14_HNSCOL15P_CAPBEP,P14_HNSCOL15P_BAC,P14_HNSCOL15P_SUP,P14_FNSCOL15P,P14_FNSCOL15P_DIPLMIN,P14_FNSCOL15P_CAPBEP,P14_FNSCOL15P_BAC,P14_FNSCOL15P_SUP,C15_POP01P_IRAN012,C15_POP01P_IRANAUT,C15_POP01P,building_type,building_usage,landscape,morphological_position,geographical_position,social_class
diff --git a/predihood/config.py b/predihood/config.py
index f34fd8cb4e2fec73c87428b74b85506b53934c0f..99a942f67ba09b77b234fa1abbed4fa8524d96f4 100644
--- a/predihood/config.py
+++ b/predihood/config.py
@@ -31,6 +31,7 @@ FILE_CLEANED_DATA = os.path.join(FOLDER_DATA, "cleaned_data.csv")
 FILE_ENV = os.path.join(FOLDER_DATASETS, "data.csv")
 FILE_SIMILARITIES = os.path.join(FOLDER_DATA, "similarities.csv")
 FILE_LIST_DISTRIBUTION = os.path.join(FOLDER_SELECTED_INDICATORS, "selection-distribution.csv")
+FILE_MANUAL_ASSESSMENT = os.path.join(FOLDER_CLASSES, "manual_assessment.csv")
 
 ENVIRONMENT_VARIABLES = ["building_type", "building_usage", "landscape", "morphological_position", "geographical_position", "social_class"]
 RANDOM_STATE = 0  # make classifiers deterministic
@@ -80,3 +81,93 @@ TRANSLATION = {
     "Moyen-sup": "Upper middle",
     "Sup": "Upper"
 }
+
+ENVIRONMENT_VALUES = {
+    "building_type": [
+        ["Maisons", "Houses"],
+        ["Mixte", "Mixed"],
+        ["Immeubles", "Towers"],
+        ["Grand ensemble", "Housing estates"],
+        ["Lotissement", "Housing subdivisions"]
+    ],
+    "building_usage": [
+        ["Résidentiel", "Housing"],
+        ["Commerçant", "Shopping"],
+        ["Autres activités", "Other activities"],
+    ],
+    "landscape": [
+        ["Urbanisé", "Urban"],
+        ["Espaces verts", "Green areas"],
+        ["Arboré", "Forest"],
+        ["Agricole", "Countryside"],
+    ],
+    "morphological_position": [
+        ["Central", "Central"],
+        ["Urbain", "Urban"],
+        ["Péri-urbain", "Peri-urban"],
+        ["Rural", "Rural"]
+    ],
+    "geographical_position": [
+        ["Centre", "Centre"],
+        ["Nord", "North"],
+        ["Sud", "South"],
+        ["Est", "East"],
+        ["Ouest", "West"],
+        ["Nord-Est", "North East"],
+        ["Sud-Est", "South East"],
+        ["Nord-Ouest", "North West"],
+        ["Sud-Ouest", "South West"]
+    ],
+    "social_class": [
+        ["Popu", "Lower"],
+        ["Moyen-inf", "Lower middle"],
+        ["Moyen", "Middle"],
+        ["Moyen-sup", "Upper middle"],
+        ["Sup", "Upper"]
+    ]
+}
+
+ENVIRONMENT_VALUES_2 = {
+    "building_type": {
+        "Maisons": "Houses",
+        "Mixte": "Mixed",
+        "Immeubles": "Towers",
+        "Grand ensemble": "Housing estates",
+        "Lotissement": "Housing subdivisions"
+    },
+    "building_usage": {
+        "Résidentiel": "Housing",
+        "Commerçant": "Shopping",
+        "Autres activités": "Other activities",
+    },
+    "landscape": {
+        "Urbanisé": "Urban",
+        "Espaces verts": "Green areas",
+        "Arboré": "Forest",
+        "Agricole": "Countryside",
+    },
+    "morphological_position": {
+        "Central": "Central",
+        "Urbain": "Urban",
+        "Péri-urbain": "Peri-urban",
+        "Rural": "Rural"
+    },
+    "geographical_position": {
+        "Centre": "Centre",
+        "Nord": "North",
+        "Sud": "South",
+        "Est": "East",
+        "Ouest": "West",
+        "Nord-Est": "North East",
+        "Sud-Est": "South East",
+        "Nord-Ouest": "North West",
+        "Sud-Ouest": "South West"
+    },
+    "social_class": {
+        "Popu": "Lower",
+        "Moyen-inf": "Lower middle",
+        "Moyen": "Middle",
+        "Moyen-sup": "Upper middle",
+        "Sup": "Upper"
+    }
+}
diff --git a/predihood/main.py b/predihood/main.py
index 5f3730edd07140f188f44e5d6e1eede95a20c34c..0bd2cabe39a49f0073d3169e9c94febd09be8167 100644
--- a/predihood/main.py
+++ b/predihood/main.py
@@ -18,9 +18,9 @@ from sklearn.utils._testing import ignore_warnings
 
 from predihood import model
 from predihood.classes.Data import Data
-from predihood.config import AVAILABLE_CLASSIFIERS, TOPS_K
+from predihood.config import AVAILABLE_CLASSIFIERS, TOPS_K, ENVIRONMENT_VALUES_2, FILE_MANUAL_ASSESSMENT
 from predihood.predict import expe4, predict_one_iris
-from predihood.utility_functions import signature, get_classifier, set_classifier
+from predihood.utility_functions import signature, get_classifier, set_classifier, add_assessment_to_file
 
 app = Flask(__name__)
 app.config['JSON_SORT_KEYS'] = False
@@ -157,6 +157,26 @@ def get_iris_from_name():
     return json.dumps({'status': 'OK', 'geojson': iris})
 
 
+@app.route('/getEnvironmentValues', methods=["GET"])
+def get_environment_values():
+    variables_with_values = {}
+    for env in ENVIRONMENT_VALUES_2:
+        temp = []
+        for key in ENVIRONMENT_VALUES_2[env]:
+            temp.append(ENVIRONMENT_VALUES_2[env][key]) # get english values
+        variables_with_values[env] = temp
+    return json.dumps(variables_with_values)  # {"result": variables_with_values}
+
+
+@app.route('/add_iris_to_csv', methods=["GET"])
+def add_iris_to_csv():
+    assessed_values = []
+    for env in ENVIRONMENT_VALUES_2:
+        assessed_values.append(request.args[env])
+    message = add_assessment_to_file(request.args['code_iris'], assessed_values)
+    return json.dumps({"status": message})
+
+
 @app.route('/favicon.ico')
 @app.route('/<page>/favicon.ico')
 def favicon():
diff --git a/predihood/static/js/carto.js b/predihood/static/js/carto.js
index f036a1b0ddd5469c8767af51252135257c37124b..20c711c1fb8617887e4878ec6ad4cf1f6ad9d083 100644
--- a/predihood/static/js/carto.js
+++ b/predihood/static/js/carto.js
@@ -15,7 +15,8 @@ let overlayLayers = null; // array of overlaying layers
 let osmLayer = null; // openstreetmap basic layer
 let irisLayer = null; // layer of displayed IRIS
 let previously_selected_algorithm = null;
-
+let environment_variables = getEnvironmentVariables(); // get the json corresponding to the list of environment variables with the possible values
+console.log(environment_variables)
 
 /**
  * Initialize the map
@@ -81,47 +82,93 @@ function displayPopup(e) {
     var code_iris = layer.feature.properties.CODE_IRIS
     let selected_algorithm = $("#selectAlgorithmTooltip option:selected").val();
     let predictions = undefined;
-    if (selected_algorithm !== "undefined" && selected_algorithm !== undefined) {
-        predictions = predict(code_iris, selected_algorithm)
-        console.log(predictions)
-    }
 
+    // common part of the popup
     let divInformation = $("<div>");
-    divInformation
-        .append("IRIS CODE: " + layer.feature.properties.CODE_IRIS).append($("<br>"))
-        .append("IRIS: " + layer.feature.properties.NOM_IRIS).append($("<br>"))
-        .append("TOWNSHIP: " + layer.feature.properties.NOM_COM).append($("<br>"))
-    let moreInfosLink = $("<a>");
-    moreInfosLink
-        .prop("href", "details-iris.html?code_iris="+layer.feature.properties.CODE_IRIS)
-        .prop("target", "_blank")
-        .text("More details")
-        .append($("<br>"));
-    divInformation.append(moreInfosLink);
-
-    let selectAlgorithm = $("<select>")
-    selectAlgorithm
-        .prop("id", "selectAlgorithmTooltip")
-        .append($("<option>").prop("value", "undefined").text("---"))
-
-    for(let algorithm of classifiers) {
-       selectAlgorithm.append($("<option>").prop("value", algorithm).text(algorithm));
-    }
-    previously_selected_algorithm = selected_algorithm;
+        divInformation
+            .append("IRIS CODE: " + layer.feature.properties.CODE_IRIS).append($("<br>"))
+            .append("IRIS: " + layer.feature.properties.NOM_IRIS).append($("<br>"))
+            .append("TOWNSHIP: " + layer.feature.properties.NOM_COM).append($("<br>"))
+        let moreInfosLink = $("<a>");
+        moreInfosLink
+            .prop("href", "details-iris.html?code_iris="+layer.feature.properties.CODE_IRIS)
+            .prop("target", "_blank")
+            .text("More details")
+            .append($("<br>"));
+        divInformation.append(moreInfosLink);
+
+    if($("#assessmentMode").is(":checked")) {
+        // alert("assessment mode");
+
+        for(let env in environment_variables) {
+            let env_values = environment_variables[env]
+            let div_container = $("<div>").prop("id", "assessment"+env)
+            let list_values = $("<select>");
+            for(let value in env_values) { list_values.append($("<option>").prop("value", env_values[value]).text(env_values[value])) }
+            div_container.append(env).append(list_values)
+            divInformation.append(div_container)
+        }
 
-    let divPredictions = $("<div>").prop("id", "divPredictions")
-    if(predictions !== undefined) {
-        for(let key in predictions) { divPredictions.append(capitalizeFirstLetter(key.split("_").join(" "))+': ' + predictions[key]["most_frequent"] + " (" + predictions[key]["count_frequent"] + "/7)").append($('<br>')); }
-    }
+        let to_csv_button = $("<button>")
+            .text("Add to dataset")
+            .prop("id", "addAssessmentButton");
+
+        let messageTooltip = divInformation[0].outerHTML + to_csv_button[0].outerHTML;
+        layer.bindPopup(messageTooltip)
+        layer.bringToFront();
+        layer.openPopup();
+
+        $("#addAssessmentButton").on("click", function() {
+            let data_param = {}
+            for(let env in environment_variables) {
+                data_param[env] = $("#assessment"+env)[0].children[0].value
+            }
+            data_param["code_iris"] = code_iris
+            console.log(data_param)
+            $.ajax({
+                type: "GET",
+                url: "/add_iris_to_csv",
+                data: data_param,
+                "async": false,
+                contentType: 'application/json;charset=UTF-8',
+                success: function(result) {
+                    alert(result)
+                },
+                error: function(result, textStatus, errorThrown) {
+                    console.log(errorThrown);
+                }
+            });
+        });
+    } else {
+        if (selected_algorithm !== "undefined" && selected_algorithm !== undefined) {
+            predictions = predict(code_iris, selected_algorithm)
+            console.log(predictions)
+        }
 
-    let messageTooltip = divInformation[0].outerHTML + selectAlgorithm[0].outerHTML + divPredictions[0].outerHTML;
-    console.log(messageTooltip)
-    layer.bindPopup(messageTooltip)
-    layer.bringToFront();
-    layer.openPopup();
+        let selectAlgorithm = $("<select>")
+        selectAlgorithm
+            .prop("id", "selectAlgorithmTooltip")
+            .append($("<option>").prop("value", "undefined").text("---"))
 
-    $("#selectAlgorithmTooltip").val(previously_selected_algorithm); // must be after binding the popup to be effective
-    $("#selectAlgorithmTooltip").on("click", function() { displayPopup(e)}) // update popup (env variables) when click on an algorithm
+        for(let algorithm of classifiers) {
+           selectAlgorithm.append($("<option>").prop("value", algorithm).text(algorithm));
+        }
+        previously_selected_algorithm = selected_algorithm;
+
+        let divPredictions = $("<div>").prop("id", "divPredictions")
+        if(predictions !== undefined) {
+            for(let key in predictions) { divPredictions.append(capitalizeFirstLetter(key.split("_").join(" "))+': ' + predictions[key]["most_frequent"] + " (" + predictions[key]["count_frequent"] + "/7)").append($('<br>')); }
+        }
+
+        let messageTooltip = divInformation[0].outerHTML + selectAlgorithm[0].outerHTML + divPredictions[0].outerHTML;
+        console.log(messageTooltip)
+        layer.bindPopup(messageTooltip)
+        layer.bringToFront();
+        layer.openPopup();
+
+        $("#selectAlgorithmTooltip").val(previously_selected_algorithm); // must be after binding the popup to be effective
+        $("#selectAlgorithmTooltip").on("click", function() { displayPopup(e)}) // update popup (env variables) when click on an algorithm
+    }
 }
 
 /**
diff --git a/predihood/static/js/utils.js b/predihood/static/js/utils.js
index dc5d8d223ab645e1a1373c5215cf43205f028bbc..139ddb85bf86df01d3642f6adf550cb9bb0b5425 100644
--- a/predihood/static/js/utils.js
+++ b/predihood/static/js/utils.js
@@ -145,7 +145,7 @@ function getMaxValueDict(dict, min_value) {
 }
 
 /**
- * Parse string containg float in exponent representation in float.
+ * Parse string containing float in exponent representation in float.
  * @param str A string containing a float with an exponent, e.g. 3e-7
  * @returns {number} The float number of type float, e.g. 0.0000003
  */
@@ -173,3 +173,19 @@ function parseFloatComplex(str) {
 	}
 }
 
+function getEnvironmentVariables() {
+	let env_var = null;
+	$.ajax({
+		type: "GET",
+		url: "/getEnvironmentValues",
+		async: false,
+		contentType: 'application/json;charset=UTF-8',
+		success: function(result){
+            env_var = JSON.parse(result)
+		},
+		error: function(result, textStatus, errorThrown) {
+            console.log(errorThrown);
+		}
+	});
+	return env_var;
+}
\ No newline at end of file
diff --git a/predihood/templates/form.html b/predihood/templates/form.html
index 4637138e10f123c09d172d89128aab5702b3f156..956ed1cba58e8af034dce05aa459b6b2ddaef399 100644
--- a/predihood/templates/form.html
+++ b/predihood/templates/form.html
@@ -34,6 +34,8 @@
         <img src="{{url_for('static', filename='css/package/build/svg/search.svg')}}" alt="Search" />
     </button>
   </div>
+  <br><br><br>
+  Assessment mode: <input type="checkbox" id="assessmentMode"/>
 </div>
 
 
diff --git a/predihood/utility_functions.py b/predihood/utility_functions.py
index 63bbc6d2bd1d5ff705de29ef86b7d22efa1d7015..d7902f4a4052928444ffd3bd0166c17830e8c874 100644
--- a/predihood/utility_functions.py
+++ b/predihood/utility_functions.py
@@ -3,6 +3,9 @@ import inspect
 import json
 import logging
 import math
+
+from area import area
+
 log_format = "[%(levelname)s] - %(filename)s::%(lineno)d \t %(message)s"
 logging.basicConfig(level='DEBUG', format=log_format)
 import os
@@ -18,7 +21,7 @@ from predihood import model
 #################### iris function ####################
 from predihood.config import TOPS_K, FOLDER_SELECTED_INDICATORS, AVAILABLE_CLASSIFIERS, TRAIN_SIZE, TEST_SIZE, \
     ENVIRONMENT_VARIABLES, FOLDER_FEATURE_SELECTION, FOLDER_DATASETS, FOLDER_DISTRIBUTION, TRANSLATION, OLD_PREFIX, \
-    NEW_PREFIX
+    NEW_PREFIX, FILE_MANUAL_ASSESSMENT
 
 
 def address_to_code(address):
@@ -404,6 +407,43 @@ def distribution_data():
         logging.debug("Plot generated for %s", env)
 
 
+def add_assessment_to_file(code_iris, values):
+    df = pd.read_csv(FILE_MANUAL_ASSESSMENT)
+    codes = df['CODE'].tolist()
+    codes_lst = [str(elem) for elem in codes]
+    if code_iris in codes_lst:
+        return "iris already assessed"
+    else:
+        iris_data = model.get_iris_from_code(code_iris)
+        iris_coords = model.get_coords_from_code(code_iris)
+        area_iris = area(iris_coords) / 1000000 if iris_coords is not None else None
+        density_iris = iris_data["properties"]["raw_indicators"]["P14_POP"] / area_iris if area_iris is not None and area_iris > 0 else None
+
+        iris = []
+        cols = ["CODE", "AREA", "DENSITY"]
+        # adding code, area and density
+        iris.append(code_iris)
+        iris.append(area_iris)
+        iris.append(density_iris)
+
+        # adding insee indicators
+        indicators = model.get_indicators_list()
+        indicators_to_remove = ['IRIS', 'REG', 'DEP', 'UU2010', 'COM', 'LIBCOM', 'TRIRIS', 'GRD_QUART', 'LIBIRIS',
+                                'TYP_IRIS', 'MODIF_IRIS', 'LAB_IRIS', 'LIB_IRIS', 'LIB_COM', 'CODGEO', 'LIBGEO']
+        for indicator in indicators_to_remove:
+            if indicator in indicators:
+                indicators.remove(indicator)
+
+        for raw_indicator in indicators:
+            iris, cols = append_indicator(raw_indicator, iris_data, iris, True, cols)
+
+        iris.extend(values)  # adding assessed values
+        cols.extend(ENVIRONMENT_VARIABLES)
+        df = pd.DataFrame([iris]) #, columns=cols)
+        df.to_csv(FILE_MANUAL_ASSESSMENT, mode='a', index=False, header=False)  # WARNING: don't erase header in the csv file
+        return "okay"
+
+
 if __name__ == '__main__':
     # print(indicator_full_to_short_label("Pop 0-2 ans en 2014 (princ)"))
     # print(indicator_short_to_full_label("P14_POP0002"))