diff --git a/src/Controllers/SheetController.ts b/src/Controllers/SheetController.ts
index 8658d81664d845cb843432bd05f3bf7dc91106bd..727fc2700141838ffbac52798702d4a67f5a7e56 100644
--- a/src/Controllers/SheetController.ts
+++ b/src/Controllers/SheetController.ts
@@ -4,13 +4,14 @@ import {
 import { SheetParserResponse } from '../Models/SheetParserResponse';
 import SheetService from '../Services/SheetService';
 import logger from '../Logger/logger';
+import AgeGroupJSON from '../DTOs/AgeGroupJSON';
 
 const router = Router();
 
 const parseSheet: Handler = async (req: Request, res: Response) => {
   const sheet: Buffer = req.body;
   try {
-    const parsedSheet: SheetParserResponse = SheetService.parseSheetService(sheet);
+    const parsedSheet: AgeGroupJSON[] = SheetService.parseSheetService(sheet);
     return res.status(200).send(parsedSheet);
   } catch (error) {
     const e = error as Error;
diff --git a/src/Enum/AgeBracket.ts b/src/Enum/AgeBracket.ts
index f3610df9f3b5d86a7861cb90bec46cb76800b016..2017b243bce735fb12ad292cb427a43e10f9d5a0 100644
--- a/src/Enum/AgeBracket.ts
+++ b/src/Enum/AgeBracket.ts
@@ -1,6 +1,6 @@
 enum AgeBracket {
   m0 = '0 meses',
-  m1 = '1 mes',
+  m1 = '1 meses',
   m2 = '2 meses',
   m3 = '3 meses',
   m4 = '4 meses',
diff --git a/src/Services/SheetService.ts b/src/Services/SheetService.ts
index e30e75a1e5f332c98a5a69bf0670a1e916313cd9..31ac0cf150bf9115786884c35d2e1f174ab08aa6 100644
--- a/src/Services/SheetService.ts
+++ b/src/Services/SheetService.ts
@@ -1,8 +1,11 @@
 import * as XLSX from 'xlsx';
 import { SheetNames } from '../Config/Constants';
+import AgeGroupJSON from '../DTOs/AgeGroupJSON';
+import Sex from '../Enum/Sex';
 import {
   SheetParserResponse, Menores, Mayores, MenoresSheet, MayoresSheet,
 } from '../Models/SheetParserResponse';
+import ParameterService from './ParameterService';
 
 /* PRIVATE FUNCTIONS */
 // const ec = (r: number, c: number): string => XLSX.utils.encode_cell({ r, c });
@@ -56,12 +59,30 @@ const parseBabies = (worksheet: XLSX.WorkSheet): Menores[] => {
   });
   return res;
 };
+const getMedianFromArray = (arr: number[]): number => {
+  const arrSort = arr.sort((a, b) => a - b);
+  const len = arr.length;
+  const mid = Math.ceil(len / 2);
+  const median = len % 2 === 0 ? (arrSort[mid] + arrSort[mid - 1]) / 2 : arrSort[mid - 1];
+  return median;
+};
+
+const getLiteralGroup = (age: number): string => {
+  if (age >= 18 && age <= 29) {
+    return '18-29';
+  } if (age >= 30 && age <= 59) {
+    return '30-59';
+  } if (age >= 60) {
+    return '60+';
+  }
+  return `${age}`;
+};
 
 /* EXPORT FUNCTIONS */
 
-const parseSheetService = (data: Buffer): SheetParserResponse => {
+const parseSheetService = (data: Buffer): AgeGroupJSON[] => {
   const workbook: XLSX.WorkBook = XLSX.read(data);
-  let parsed: SheetParserResponse = null;
+  const parsed: SheetParserResponse = null;
   let hombresMenores: Menores[] = [];
   let hombres: Mayores[] = [];
   let mujeresMenores: Menores[] = [];
@@ -92,14 +113,109 @@ const parseSheetService = (data: Buffer): SheetParserResponse => {
         throw new Error(`Sheet name ${name} is not part of the scheme `);
     }
   });
-  parsed = {
-    hombresMenores,
-    hombres,
-    mujeresMenores,
-    mujeres,
-  };
-
-  return parsed;
+
+  const res: AgeGroupJSON[] = [];
+
+  let auxObj: {[key: string]: number[]} = {};
+  // group HombresMenores
+  // Iterate on hombresMenores and put
+  // elemnts on auxObj
+  hombresMenores.forEach((item) => {
+    if (item === null) throw new Error('Item is null');
+    const bridge: string = (item.edad).toString();
+    auxObj[bridge] = auxObj[bridge] ? auxObj[bridge] : [];
+    (auxObj[bridge]).push(item.peso);
+  });
+  // creates AgeGroup and insert into res
+  let auxObjKeys = Object.keys(auxObj);
+  auxObjKeys.forEach((key) => {
+    const toInsert: AgeGroupJSON = {
+      age: `${key} meses`,
+      sex: Sex.Male,
+      medianWeight: getMedianFromArray(auxObj[key]),
+      population: auxObj[key].length,
+    };
+    res.push(toInsert);
+  });
+
+  auxObj = {};
+
+  mujeresMenores.forEach((item) => {
+    if (item === null) throw new Error('Item is null');
+    const bridge: string = (item.edad).toString();
+    auxObj[bridge] = auxObj[bridge] ? auxObj[bridge] : [];
+    (auxObj[bridge]).push(item.peso);
+  });
+
+  // creates AgeGroup for mujeresMenores and insert into res
+  auxObjKeys = Object.keys(auxObj);
+  auxObjKeys.forEach((key) => {
+    const toInsert: AgeGroupJSON = {
+      age: `${key} meses`,
+      sex: Sex.Female,
+      medianWeight: getMedianFromArray(auxObj[key]),
+      population: auxObj[key].length,
+    };
+    res.push(toInsert);
+  });
+
+  auxObj = {};
+  hombres.forEach((item) => {
+    if (item === null) throw new Error('Item is null');
+    const bridge: string = getLiteralGroup(item.edad);
+    auxObj[bridge] = auxObj[bridge] ? auxObj[bridge] : [];
+    let peso;
+    if (!item.peso) {
+      if (!item.talla) { throw new Error('Talla and Peso not defined'); }
+      // ParameterService. TODO:
+      peso = 0;
+    } else {
+      peso = item.peso;
+    }
+    (auxObj[bridge]).push(peso);
+  });
+
+  // creates AgeGroup for hombres and insert into res
+  auxObjKeys = Object.keys(auxObj);
+  auxObjKeys.forEach((key) => {
+    const toInsert: AgeGroupJSON = {
+      age: `${key} años`,
+      sex: Sex.Male,
+      medianWeight: getMedianFromArray(auxObj[key]),
+      population: auxObj[key].length,
+    };
+    res.push(toInsert);
+  });
+
+  auxObj = {};
+  mujeres.forEach((item) => {
+    if (item === null) throw new Error('Item is null');
+    const bridge: string = getLiteralGroup(item.edad);
+    auxObj[bridge] = auxObj[bridge] ? auxObj[bridge] : [];
+    let peso;
+    if (!item.peso) {
+      if (!item.talla) { throw new Error('Talla and Peso not defined'); }
+      // ParameterService. TODO:
+      peso = 0;
+    } else {
+      peso = item.peso;
+    }
+    (auxObj[bridge]).push(peso);
+  });
+
+  // creates AgeGroup for hombres and insert into res
+  auxObjKeys = Object.keys(auxObj);
+  auxObjKeys.forEach((key) => {
+    const toInsert: AgeGroupJSON = {
+      age: `${key} años`,
+      sex: Sex.Female,
+      medianWeight: getMedianFromArray(auxObj[key]),
+      population: auxObj[key].length,
+    };
+    res.push(toInsert);
+  });
+
+  return res;
   // TODO: depends on sheet layout what to do
 };
 
diff --git a/src/Services/test.xlsx b/src/Services/test.xlsx
index 3edb2bfeb00af26dd42279a2a4ebbdd2beb50724..caa1d8a9c0b7b1c761755a5f9885356dd2df8a4d 100644
Binary files a/src/Services/test.xlsx and b/src/Services/test.xlsx differ