* @version 1.48 <2005/07/18> * @copyright GNU General Public License (GPL) **/ /* // Sample ------------------------------------- $thumb=new Thumbnail("source.jpg"); // set source image file $thumb->size_width(100); // set width for thumbnail, or $thumb->size_height(300); // set height for thumbnail, or $thumb->size_auto(200); // set the biggest width or height for thumbnail $thumb->size(150,113); // set the biggest width and height for thumbnail $thumb->quality=75; //default 75 , only for JPG format $thumb->output_format='JPG'; // JPG | PNG $thumb->jpeg_progressive=0; // set progressive JPEG : 0 = no , 1 = yes $thumb->allow_enlarge=false; // allow to enlarge the thumbnail $thumb->CalculateQFactor(10000); // Calculate JPEG quality factor for a specific size in bytes $thumb->bicubic_resample=true; // [OPTIONAL] set resample algorithm to bicubic $thumb->img_watermark='watermark.png'; // [OPTIONAL] set watermark source file, only PNG format [RECOMENDED ONLY WITH GD 2 ] $thumb->img_watermark_Valing='TOP'; // [OPTIONAL] set watermark vertical position, TOP | CENTER | BOTTOM $thumb->img_watermark_Haling='LEFT'; // [OPTIONAL] set watermark horizonatal position, LEFT | CENTER | RIGHT $thumb->txt_watermark='Watermark text'; // [OPTIONAL] set watermark text [RECOMENDED ONLY WITH GD 2 ] $thumb->txt_watermark_color='000000'; // [OPTIONAL] set watermark text color , RGB Hexadecimal[RECOMENDED ONLY WITH GD 2 ] $thumb->txt_watermark_font=1; // [OPTIONAL] set watermark text font: 1,2,3,4,5 $thumb->txt_watermark_Valing='TOP'; // [OPTIONAL] set watermark text vertical position, TOP | CENTER | BOTTOM $thumb->txt_watermark_Haling='LEFT'; // [OPTIONAL] set watermark text horizonatal position, LEFT | CENTER | RIGHT $thumb->txt_watermark_Hmargin=10; // [OPTIONAL] set watermark text horizonatal margin in pixels $thumb->txt_watermark_Vmargin=10; // [OPTIONAL] set watermark text vertical margin in pixels $thumb->->memory_limit='32M'; //[OPTIONAL] set maximun memory usage, default 32 MB ('32M'). (use '16M' or '32M' for litter images) $thumb->max_execution_time'30'; //[OPTIONAL] set maximun execution time, default 30 seconds ('30'). (use '60' for big images o slow server) $thumb->process(); // generate image $thumb->show(); // show your thumbnail, or $thumb->save("thumbnail.jpg"); // save your thumbnail to file, or $image = $thumb->dump(); // get the image echo ($thumb->error_msg); // print Error Mensage //---------------------------------------------- ################################################ */ class Thumbnail { /** *@access public *@var integer Quality factor for JPEG output format, default 75 **/ var $quality=75; /** *@access public *@var string output format, default JPG, valid values 'JPG' | 'PNG' **/ var $output_format='JPG'; /** *@access public *@var integer set JPEG output format to progressive JPEG : 0 = no , 1 = yes **/ var $jpeg_progressive=0; /** *@access public *@var boolean allow to enlarge the thumbnail. **/ var $allow_enlarge=false; /** *@access public *@var string [OPTIONAL] set watermark source file, only PNG format [RECOMENDED ONLY WITH GD 2 ] **/ var $img_watermark=''; /** *@access public *@var string [OPTIONAL] set watermark vertical position, TOP | CENTER | BOTTOM **/ var $img_watermark_Valing='TOP'; /** *@access public *@var string [OPTIONAL] set watermark horizonatal position, LEFT | CENTER | RIGHT **/ var $img_watermark_Haling='LEFT'; /** *@access public *@var string [OPTIONAL] set watermark text [RECOMENDED ONLY WITH GD 2 ] **/ var $txt_watermark=''; /** *@access public *@var string [OPTIONAL] set watermark text color , RGB Hexadecimal[RECOMENDED ONLY WITH GD 2 ] **/ var $txt_watermark_color='000000'; /** *@access public *@var integer [OPTIONAL] set watermark text font: 1,2,3,4,5 **/ var $txt_watermark_font=1; /** *@access public *@var string [OPTIONAL] set watermark text vertical position, TOP | CENTER | BOTTOM **/ var $txt_watermark_Valing='TOP'; /** *@access public *@var string [OPTIONAL] set watermark text horizonatal position, LEFT | CENTER | RIGHT **/ var $txt_watermark_Haling='LEFT'; /** *@access public *@var integer [OPTIONAL] set watermark text horizonatal margin in pixels **/ var $txt_watermark_Hmargin=10; /** *@access public *@var integer [OPTIONAL] set watermark text vertical margin in pixels **/ var $txt_watermark_Vmargin=10; /** *@access public *@var bool [OPTIONAL] set resample algorithm to bicubic **/ var $bicubic_resample=false; /** *@access public *@var string [OPTIONAL] set maximun memory usage, default 8 MB ('8M'). (use '16M' for big images) **/ var $memory_limit='32M'; /** *@access public *@var string [OPTIONAL] set maximun execution time, default 30 seconds ('30'). (use '60' for big images) **/ var $max_execution_time='30'; /** *@access public *@var string errors mensage **/ var $error_msg=''; /** *@access private *@var mixed images **/ var $img; /** *open source image *@access public *@param string filename of the source image file *@return boolean **/ function Thumbnail($imgfile) { $img_info = getimagesize( $imgfile ); //detect image format switch( $img_info[2] ){ case 2: //JPEG $this->img["format"]="JPEG"; $this->img["src"] = ImageCreateFromJPEG ($imgfile); break; case 3: //PNG $this->img["format"]="PNG"; $this->img["src"] = ImageCreateFromPNG ($imgfile); $this->img["des"] = $this->img["src"]; break; default: $this->error_msg="Not Supported File"; return false; }//case $this->img["x"] = $img_info[0]; //original dimensions $this->img["y"] = $img_info[1]; $this->img["x_thumb"]= $this->img["x"]; //thumbnail dimensions $this->img["y_thumb"]= $this->img["y"]; $this->img["des"] = $this->img["src"]; // thumbnail = original return true; } /** *set height for thumbnail *@access public *@param integer height *@return boolean **/ function size_height($size=100) { //height $this->img["y_thumb"]=$size; if ($this->allow_enlarge==true) { $this->img["y_thumb"]=$size; } else { if ($size < ($this->img["y"])) { $this->img["y_thumb"]=$size; } else { $this->img["y_thumb"]=$this->img["y"]; } } if ($this->img["y"]>0) { $this->img["x_thumb"] = ($this->img["y_thumb"]/$this->img["y"])*$this->img["x"]; } else { $this->error_msg="Invalid size : Y"; return false; } } /** *set width for thumbnail *@access public *@param integer width *@return boolean **/ function size_width($size=100) { //width if ($this->allow_enlarge==true) { $this->img["x_thumb"]=$size; } else { if ( $size < ($this->img["x"])) { $this->img["x_thumb"]=$size; } else { $this->img["x_thumb"]=$this->img["x"]; } } if ($this->img["x"]>0) { $this->img["y_thumb"] = ($this->img["x_thumb"]/$this->img["x"])*$this->img["y"]; } else { $this->error_msg="Invalid size : x"; return false; } } /** *set the biggest width or height for thumbnail *@access public *@param integer width or height *@return boolean **/ function size_auto($size=100) { //size if ($this->img["x"]>=$this->img["y"]) { $this->size_width($size); } else { $this->size_height($size); } } /** *set the biggest width and height for thumbnail *@access public *@param integer width *@param integer height *@return boolean **/ function size($size_x,$size_y) { //size if ( (($this->img["x"])/$size_x) >= (($this->img["y"])/$size_y) ) { $this->size_width($size_x); } else { $this->size_height($size_y); } } /** *show your thumbnail, output image and headers *@access public *@return void **/ function show() { //show thumb Header("Content-Type: image/".$this->img["format"]); if ($this->output_format=="PNG") { //PNG imagePNG($this->img["des"]); } else { imageinterlace( $this->img["des"], $this->jpeg_progressive); imageJPEG($this->img["des"],"",$this->quality); } } /** *return the result thumbnail *@access public *@return mixed **/ function dump() { //dump thumb return $this->img["des"]; } /** *save your thumbnail to file *@access public *@param string output file name *@return boolean **/ function save($save="") { //save thumb if (empty($save)) { $this->error_msg='Not Save File'; return false; } if ($this->output_format=="PNG") { //PNG imagePNG($this->img["des"],"$save"); } else { imageinterlace( $this->img["des"], $this->jpeg_progressive); imageJPEG($this->img["des"],"$save",$this->quality); } return true; } /** *generate image *@access public *@return boolean **/ function process () { ini_set('memory_limit',$this->memory_limit); ini_set('max_execution_time',$this->max_execution_time); $X_des =$this->img["x_thumb"]; $Y_des =$this->img["y_thumb"]; //if ($this->checkgd2()) { $gd_version=$this->gdVersion(); if ($gd_version>=2) { //if (false) { $this->img["des"] = ImageCreateTrueColor($X_des,$Y_des); if ($this->txt_watermark!='' ) { sscanf($this->txt_watermark_color, "%2x%2x%2x", $red, $green, $blue); $txt_color=imageColorAllocate($this->img["des"] ,$red, $green, $blue); } if (!$this->bicubic_resample) { imagecopyresampled ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); } else { $this->imageCopyResampleBicubic($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); } if ($this->img_watermark!='' && file_exists($this->img_watermark)) { $this->img["watermark"]=ImageCreateFromPNG ($this->img_watermark); $this->img["x_watermark"] =imagesx($this->img["watermark"]); $this->img["y_watermark"] =imagesy($this->img["watermark"]); imagecopyresampled ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"],$this->img["x_watermark"], $this->img["y_watermark"]); } if ($this->txt_watermark!='' ) { imagestring ( $this->img["des"], $this->txt_watermark_font, $this->calc_text_position_H() , $this->calc_text_position_V(), $this->txt_watermark,$txt_color); } } else { $this->img["des"] = ImageCreate($X_des,$Y_des); if ($this->txt_watermark!='' ) { sscanf($this->txt_watermark_color, "%2x%2x%2x", $red, $green, $blue); $txt_color=imageColorAllocate($this->img["des"] ,$red, $green, $blue); } // pre copy image, allocating color of water mark, GD < 2 can't resample colors if ($this->img_watermark!='' && file_exists($this->img_watermark)) { $this->img["watermark"]=ImageCreateFromPNG ($this->img_watermark); $this->img["x_watermark"] =imagesx($this->img["watermark"]); $this->img["y_watermark"] =imagesy($this->img["watermark"]); imagecopy ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"]); } imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $X_des, $Y_des, $this->img["x"], $this->img["y"]); @imagecopy ($this->img["des"], $this->img["watermark"], $this->calc_position_H (), $this->calc_position_V (), 0, 0, $this->img["x_watermark"], $this->img["y_watermark"]); if ($this->txt_watermark!='' ) { imagestring ( $this->img["des"], $this->txt_watermark_font, $this->calc_text_position_H() , $this->calc_text_position_V(), $this->txt_watermark, $txt_color); // $this->txt_watermark_color); } } $this->img["src"]=$this->img["des"]; $this->img["x"]= $this->img["x_thumb"]; $this->img["y"]= $this->img["y_thumb"]; } /** *Calculate JPEG quality factor for a specific size in bytes *@access public *@param integer maximun file size in bytes **/ function CalculateQFactor($size) { //based on: JPEGReducer class version 1, 25 November 2004, Author: huda m elmatsani, Email :justhuda@netscape.net //calculate size of each image. 75%, 50%, and 25% quality ob_start(); imagejpeg($this->img["des"],'',75); $buffer = ob_get_contents(); ob_end_clean(); $size75 = strlen($buffer); ob_start(); imagejpeg($this->img["des"],'',50); $buffer = ob_get_contents(); ob_end_clean(); $size50 = strlen($buffer); ob_start(); imagejpeg($this->img["des"],'',25); $buffer = ob_get_contents(); ob_end_clean(); $size25 = strlen($buffer); //calculate gradient of size reduction by quality $mgrad1 = 25/($size50-$size25); $mgrad2 = 25/($size75-$size50); $mgrad3 = 50/($size75-$size25); $mgrad = ($mgrad1+$mgrad2+$mgrad3)/3; //result of approx. quality factor for expected size $q_factor=round($mgrad*($size-$size50)+50); if ($q_factor<25) { $this->quality=25; } elseif ($q_factor>100) { $this->quality=100; } else { $this->quality=$q_factor; } } /** *@access private *@return integer **/ function calc_text_position_H () { $W_mark = imagefontwidth ($this->txt_watermark_font)*strlen($this->txt_watermark); $W = $this->img["x_thumb"]; switch ($this->txt_watermark_Haling) { case 'CENTER': $x = $W/2-$W_mark/2; break; case 'RIGHT': $x = $W-$W_mark-($this->txt_watermark_Hmargin); break; default: case 'LEFT': $x = 0+($this->txt_watermark_Hmargin); break; } return $x; } /** *@access private *@return integer **/ function calc_text_position_V () { $H_mark = imagefontheight ($this->txt_watermark_font); $H = $this->img["y_thumb"]; switch ($this->txt_watermark_Valing) { case 'CENTER': $y = $H/2-$H_mark/2; break; case 'BOTTOM': $y = $H-$H_mark-($this->txt_watermark_Vmargin); break; default: case 'TOP': $y = 0+($this->txt_watermark_Vmargin); break; } return $y; } /** *@access private *@return integer **/ function calc_position_H () { $W_mark = $this->img["x_watermark"]; $W = $this->img["x_thumb"]; switch ($this->img_watermark_Haling) { case 'CENTER': $x = $W/2-$W_mark/2; break; case 'RIGHT': $x = $W-$W_mark; break; default: case 'LEFT': $x = 0; break; } return $x; } /** *@access private *@return integer **/ function calc_position_V () { $H_mark = $this->img["y_watermark"]; $H = $this->img["y_thumb"]; switch ($this->img_watermark_Valing) { case 'CENTER': $y = $H/2-$H_mark/2; break; case 'BOTTOM': $y = $H-$H_mark; break; default: case 'TOP': $y = 0; break; } return $y; } /** *@access private *@return boolean **/ function checkgd2(){ // TEST the GD version if (extension_loaded('gd2') && function_exists('imagecreatetruecolor')) { return false; } else { return true; } } /** * Get which version of GD is installed, if any. * * Returns the version (1 or 2) of the GD extension. */ function gdVersion($user_ver = 0) { if (! extension_loaded('gd')) { return; } static $gd_ver = 0; // Just accept the specified setting if it's 1. if ($user_ver == 1) { $gd_ver = 1; return 1; } // Use the static variable if function was called previously. if ($user_ver !=2 && $gd_ver > 0 ) { return $gd_ver; } // Use the gd_info() function if possible. if (function_exists('gd_info')) { $ver_info = gd_info(); preg_match('/\d/', $ver_info['GD Version'], $match); $gd_ver = $match[0]; return $match[0]; } // If phpinfo() is disabled use a specified / fail-safe choice... if (preg_match('/phpinfo/', ini_get('disable_functions'))) { if ($user_ver == 2) { $gd_ver = 2; return 2; } else { $gd_ver = 1; return 1; } } // ...otherwise use phpinfo(). ob_start(); phpinfo(8); $info = ob_get_contents(); ob_end_clean(); $info = stristr($info, 'gd version'); preg_match('/\d/', $info, $match); $gd_ver = $match[0]; return $match[0]; } // End gdVersion() function imageCopyResampleBicubic($dst_img, $src_img, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) { $scaleX = ($src_w - 1) / $dst_w; $scaleY = ($src_h - 1) / $dst_h; $scaleX2 = $scaleX / 2.0; $scaleY2 = $scaleY / 2.0; $tc = imageistruecolor($src_img); for ($y = $src_y; $y < $src_y + $dst_h; $y++) { $sY = $y * $scaleY; $siY = (int) $sY; $siY2 = (int) $sY + $scaleY2; for ($x = $src_x; $x < $src_x + $dst_w; $x++) { $sX = $x * $scaleX; $siX = (int) $sX; $siX2 = (int) $sX + $scaleX2; if ($tc) { $c1 = imagecolorat($src_img, $siX, $siY2); $c2 = imagecolorat($src_img, $siX, $siY); $c3 = imagecolorat($src_img, $siX2, $siY2); $c4 = imagecolorat($src_img, $siX2, $siY); $r = (($c1 + $c2 + $c3 + $c4) >> 2) & 0xFF0000; $g = ((($c1 & 0xFF00) + ($c2 & 0xFF00) + ($c3 & 0xFF00) + ($c4 & 0xFF00)) >> 2) & 0xFF00; $b = ((($c1 & 0xFF) + ($c2 & 0xFF) + ($c3 & 0xFF) + ($c4 & 0xFF)) >> 2); imagesetpixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b); } else { $c1 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY2)); $c2 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX, $siY)); $c3 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY2)); $c4 = imagecolorsforindex($src_img, imagecolorat($src_img, $siX2, $siY)); $r = ($c1['red'] + $c2['red'] + $c3['red'] + $c4['red'] ) << 14; $g = ($c1['green'] + $c2['green'] + $c3['green'] + $c4['green']) << 6; $b = ($c1['blue'] + $c2['blue'] + $c3['blue'] + $c4['blue'] ) >> 2; imagesetpixel($dst_img, $dst_x + $x - $src_x, $dst_y + $y - $src_y, $r+$g+$b); } } } } /** *generate a unique filename in a directory like prefix_filename_randon.ext *@access public *@param string path of the destination dir. Example '/img' *@param string name of the file to save. Example 'my_foto.jpg' *@param string [optional] prefix of the name Example 'picture' *@return string full path of the file to save. Exmaple '/img/picture_my_foto_94949.jpg' **/ function unique_filename ( $archive_dir , $filename , $file_prefix='') { // checkemaos if file exists $extension= strtolower( substr( strrchr($filename, ".") ,1) ); $name=str_replace(".".$extension,'',$filename); // only alfanumerics characters $string_tmp = $name; $name=''; while ($string_tmp!='') { $character=substr ($string_tmp, 0, 1); $string_tmp=substr ($string_tmp, 1); if (eregi("[abcdefghijklmnopqrstuvwxyz0-9]", $character)) { $name=$name.$character; } else { $name=$name.'_'; } } $destination = $file_prefix."_".$name.".".$extension; while (file_exists($archive_dir."/".$destination)) { // if exist, add a random number to the file name srand((double)microtime()*1000000); // random number inizializzation $destination = $file_prefix."_".$name."_".rand(0,999999999).".".$extension; } return ($destination); } /** * NOT USED : to do: mezclar imagenes a tamaņo original, preservar canal alpha y redimensionar * Merge multiple images and keep transparency * $i is and array of the images to be merged: * $i[1] will be overlayed over $i[0] * $i[2] will be overlayed over that * @param mixed * @retrun mixed the function returns the resulting image ready for saving **/ function imagemergealpha($i) { //create a new image $s = imagecreatetruecolor(imagesx($i[0]),imagesy($i[1])); //merge all images imagealphablending($s,true); $z = $i; while($d = each($z)) { imagecopy($s,$d[1],0,0,0,0,imagesx($d[1]),imagesy($d[1])); } //restore the transparency imagealphablending($s,false); $w = imagesx($s); $h = imagesy($s); for($x=0;$x<$w;$x++) { for($y=0;$y<$h;$y++) { $c = imagecolorat($s,$x,$y); $c = imagecolorsforindex($s,$c); $z = $i; $t = 0; while($d = each($z)) { $ta = imagecolorat($d[1],$x,$y); $ta = imagecolorsforindex($d[1],$ta); $t += 127-$ta['alpha']; } $t = ($t > 127) ? 127 : $t; $t = 127-$t; $c = imagecolorallocatealpha($s,$c['red'],$c['green'],$c['blue'],$t); imagesetpixel($s,$x,$y,$c); } } imagesavealpha($s,true); return $s; } } ?> Neolevel - Full Time Marketing - Career

„Marketing takes a day to learn and a lifetime to master” Philip Kotler
Neolevel - Full Time Marketing
Neolevel - Full Time Marketing Home Company Services Resources BLOG CONTACT

home / company / careers /
Career


Neolevel is a growing company. Even if we are not looking for candidates right now, we are always interested to know people who seek a career in marketing.

What are we looking for?

We are very selective in choosing candidates who will join our team and we are very demanding.

As a consulting agency, you will need to be really good in your field of work. We will provide training and we'll help you increase your level of knowledge, but you will have to prove you have the necessary knowledge base and the passion for the field you chose.

We are looking for people who have the ambition to become well known by their professionalism. We are looking for people with their eyes wide open, always attentive to the market, always in touch with the industry news and especially able to observe the marketing elements in their environment.

Being in the business of teaching others, we always ask for performance, speed and constant self development. The formation of a counsellor never stops, and a good consultant is and always wants to be more informed than his or her competitors.

Why work at Neolevel?

>> Because of your passion for marketing. Here you will meet marketing professionals who will stimulate you to develop in this beautiful area. You will receive training, you'll have to read, you’ll learn and you’ll teach others.

>> Because you’ll have direct contact with a dynamic world, with clients who have the most diverse challenges, with important people, with professionals from other fields and with marketing professionals.

>> Because you’ll develop your potential. We believe that every experience is a benefit for the future and we support the personal development of each team member.

>>
Because we offer personal development systems and because you’ll always have somebody to guide you and answer your questions.

>> Because the work satisfaction and benefits are directly proportional to your performance. You will have a competitive salary, but you can directly influence the revenue gained through direct contributions to the company success. You are perfectly aware of the benefits and bonuses you can expect and you know how to arrange your efforts in order to collect the income level you aspire to.

>> Because you can have flexible hours. We work with objectives, tasks, with deadlines and guidance, but we do not impose a fixed program. It is not your attendance that will keep you in the team, but your results.


Available Jobs

Currently we have no jobs available, but we invite you to send us your CV. We analyze all applications, with a priority to those received directly to our company, considering them a sign of real interest to be a part of Neolevel.

Send us your  CV
To apply for any available jobs or to send an open application, e-mail us at: jobs@neolevel.ro including the following documents:
>> your CV, preferably in English, containing elements of your portfolio (if applicable) and details of your previous work experience
>> A letter of intent, not longer than one page, demonstrating your motivation and ability to be a part of our team
>> A recent photo
>> The complete and current contact details
>> Your agreement to be tested on the necessary job skills.
 
It is very likely that in case your CV is selected for the next phase, you are asked to prepare a case study, a project or to take a test that shows us you are the best possible choice. We will contact you only in case your CV has passed the first stage of selection.
 
Students Internship

The Neolevel internship program addresses students who want to put into practice the theory they have studied in college. Graduation of the program can be equated with the university grade for the compulsory summer internship.

The program is conducted in sessions of  2-3 weeks.  In each session, the intern will work together with the Neolevel team, receiving support from an experienced team member who will monitor their activity and will answer questions, helping them complete their tasks. The work schedule is of at least 4 hours per day, and the activity of interns is not remunerated.

If you are selected, you need to know that you will benefit from the support of a senior in the company. At the end of your internship you will receive a certificate and a diploma of graduation from the program, as well as a possible recommendation from Neolevel which will reflect your activity during the internship.

If both you and we are pleased with the collaboration we had, it is possible that we invite you to join our team.

To apply for a Neolevel internship you must:
>> be a university or master student;
>> send an e-mail to:  office@neolevel.ro with your curriculum vitae and a letter of intent;
 
Careers outside of Neolevel

The human resources consultancy services offered by Neolevel to our customers can generate job opportunities for you.

If one of our clients wishes to employ a marketing professional, we will post on our website the job available and we will handle the selection process, recommending   most valuable candidate.

Apply the same way as for a job at Neolevel.  We will contact you in case we have selected your CV and we'll give you all the necessary details about the company and the position for which we'd give your recommendation.