collective awareness platforms for quality internship ref.: 2016 … · 2018. 6. 29. · developed...
TRANSCRIPT
Page 1 of 30
Collective Awareness Platforms for Quality
Internship
Ref.: 2016-1-ES01-KA203-025562
Intellectual Output IO3 Report
Date: updated June 13th, 2018
Page 2 of 30
Foreword
This document is produced in the context of the CAPQI project (Ref.: 2016-1-ES01-KA203-
025562) and aims at providing all CAPQI partners with an overview of the current state-of-play
of the internship situation in Europe and a common repository of terms and vocabulary.
This report describes the design, setup and development of an open-source plug-in available to
connect different web platforms to obtain the internship rating data. Different scenarios and
widgets and API (Application Programming Interface) are described.
Internships are a key element of the Youth Guarantee proposed by the European Commission
in December 2012 and adopted by the EU's Council of Ministers in April 2013. Currently, one in
three internships is substandard with regard to working conditions or learning content, according
to a November 2013 Eurobarometer survey1. Many of these substandard internships are used
by employers to replace entry level jobs.
The CAPQI project tries to increase transparency regarding internship conditions and wants to
promote good practices: for example by requiring internships to be based on a written internship
agreement.
The development of an open source plugin, software applet will enable anyone to retrieve the
information produced by the internship rating system. Additionally, the different stakeholders,
intermediaries and labelled companies could use that information to enhance the traineeships
experience. The system has been tested in several websites, such as university or career
services in Europe that have successfully installed and use the software developed to display
relevant information about their own internships and promote the quality on future ones.
One of the main objectives of the project is to empower youth-led platforms and their users.
Therefore, giving access to a shared pool of internships rating will foster youth mobility even
among EU countries. The websites of intermediaries can join these rating data to any internship
offer of a qualified employer that is present in the shared open database (hosted by
InternsGoPro). The API and plugin widgets will help in the dissemination of the CAPQI goals. To
promote the use of it for companies, also the label and the rating of the current employer is
displayed automatically with internship offers.
Therefore, the collected data on internship conditions filtered by company, career field and
location are publicly available on all the partnering sites. To become a partner is free and a
procedure has been established.
To make sure to include as many intermediaries as possible, CAPQI partners have developed
an open source API and widget of the rating and labelling system (IO2) in order to create a
public and collaborative mechanism controlling the quality of internships.
1 http://ec.europa.eu/social/main.jsp?langId=en&catId=1036&newsId=2007&furtherNews=yes
Page 3 of 30
Table of content
1. Introduction 4
2. Widget and API development 4
Statement of objectives. Blueprints for the implementation 4
Differences between the Widget and the Web API - Libraries 5
Targeted websites: widget or API installation recommendation 6
Widget/API - How information is displayed 7
3. General challenges 10
Technical challenges 10
Technical challenges of the widget: 11
“Partner acquisition” challenges 11
Alternatives to API and widget (Transparency at Work accounts) 12
4. Installation 13
How to integrate the Widget in a website 13
How to integrate the API PHP library in a website 15
5. Documentation available 18
6. Practical tests on real websites 22
ErasmusIntern 22
Praxis 26
Other platforms 28
7. Conclusions and remarks about CAPQI IO3 28
ANNEX 1 - Current partners interested to get IO3 solutions 29
Page 4 of 30
1. Introduction
CAPQI partners believe that transparency on working conditions will increase the overall
quality of internships in Europe. Firstly, if young people/students were able to access
information about the quality of an internship before applying, they could easily avoid low quality
internships with low learning content. Secondly, companies having their employer reputation at
stake would be incentivized to invest more in quality internships.
To create this transparency within the labour market, intermediaries between young
people and employers (such as youth-led platforms and university career services) are essential
to bring on board.
The project strategy is to empower those intermediaries and their users by giving them
access to a shared pool of internship reviews; and thus giving them a better knowledge of an
employer quality in a given country.
To make sure to include as many intermediaries as possible, CAPQI partners have
developed an open source API and widget of the rating and labelling system (IO2) in order to
create a public and collaborative mechanism controlling the quality of internships.
2. Widget and API development
This chapter will cover the development phase of the widget and the API with its library
created for this IO.
Statement of objectives. Blueprints for the implementation
The main pursued objective is to empower stakeholders and intermediaries with relevant
information about quality internships for their end users, in order to give them access to a
shared pool of internship reviews with different relevant information to do a better selection in
future internships. By giving them a better knowledge of an employer quality the trainee will
have more data to do their choice.
In order to create this collaborative mechanism controlling the quality of internships, data
is key and need to be shared very easily to reach a systemic impact.
For this, the solutions developed in the CAPQI project need to reach the following
objectives:
Page 5 of 30
1. Easy access to information: Instead of accessing four different websites four separate
times, CAPQI partners want to develop a solution that enable users to access all the
information at the same time from one place.
2. Enabling scalability. While the generation of data is still very dependent on human
inputs, it is required a solution that can share rating internships data without human
intervention. Code-sharing on a large scale can be extremely inefficient and also highly
time-consuming. In order to reach full scalability and extend the impact of IO1 and IO2
the developed solution should help to automate the creation and sharing of content
relevant to the context of internships.
3. Nevertheless, the solution should still have flexible features in order to adapt to new
contexts, policies and geographies (beyond contexts the solution developers have
thought of). Taking into consideration that proposition, the web tools developed in the
IO3 should balance between automation and flexibility to guarantee its scaling.
4. Reinforcing the collaboration: creating a cascade network effect. The best way to reach a
systemic impact is to create a “cascade network effect”. A network effect2 is the positive
effect described that an additional user of a good or service has on the value of that product
to others. When a network effect is present, the value of a product or service increases
according to the number of others using it.
CAPQI partners will have to design a solution fostering synergies between organisations
and showing them the benefit of accessing each other’s existing data. Users could get access to
more information and open up new opportunities for collaboration with employers with less
investment in partnership development from either side. IO3 users should become partners and
not being considered as “competitors” between each others.
For all of these purposes, widget and APIs are the best-suited IT solutions.
Differences between the Widget and the Web API - Libraries
Along the duration of CAPQI project, two different tools have been developed in order to
display the information gathered by the internship reviews in the associated websites: a Widget
and a Web Application Programming Interface (also known as Web Api or solely API). Both
strategies can be used for retrieving and displaying information later in the websites that uses
those tools.
By definition3, a Widget is “a small application with limited functionality that can be
installed and executed within a web page doing something useful with information fetched from
other websites and displayed in place”, meanwhile a API is defined4 as “a set of subroutine
definitions, protocols, and tools for building application software or, in general terms, a set of
clearly defined methods of communication between various software components”. An API is
2 Network effect page on Wikipedia.org https://en.wikipedia.org/wiki/Network_effect 3 Widget page on Wikipedia.org: https://en.wikipedia.org/wiki/Web_widget 4 API page on Wikipedia.org: https://en.wikipedia.org/wiki/Application_programming_interface
Page 6 of 30
not enough, as we can see, it is needed to create libraries that can be integrated easily in the
websites, whatever technology they are using. For this, we have also developed an Open
Source library.
CAPQI consortium have decided to write the library for the API in PHP (or PHP:
Hypertext Preprocessor, a language designed for Web Development) because is one of the
most extended languages for web development nowadays and also is the language the partner
websites are build with, but thanks to the fact that the library Open Source, and also all the
documentation is public, its functionalities can be extended by any developer but also they can
create other libraries in different programming languages so the API can be used in other
websites that may not be supported right now.
Once it has been introduced what is a Widget, a Web API and a library, we can explain
what are the differences between them to help in the selection for the IT administrator in the
intermediaire website.
The simplest tool in functionality, and also the most easy one to be installed, is the
Widget. It doesn’t require high IT skills to be integrated in a website and the information will be
displayed automatically each time the widget is displayed and is compatible with almost all the
websites on Internet. Because of this, the widget doesn’t allow to be customized apart of some
minor elements, but it will be displayed in all the websites with the same lookalike and style.
The widget is the best option to be implemented in small or low-traffic websites, and also
for those which number of internships is not very high.
On the other hand, the libraries that uses the API requires some knowledge in web
development and coding skills. The library has to be installed in the web server and added to be
used in the website and, in order to be able to fetch the information, the user needs to be
authenticated via username and password. Once the library is successfully installed, they will be
able to get all the available data in different ways, according to the provided documentation.
Thanks to this, the developers have available more options for manipulating and displaying the
data. Also, they have complete freedom about how to display the information, so they can follow
any Visual Identity Manual (or VIM) the company may use in the website or customize the
layout with the information. Also, the libraries allow other techniques, like data caches, to make
this process even faster. This option is recommended for big websites with a high amount of
internships published and high traffic volume as well, specially with the cache implementation
mentioned before.
Targeted websites: widget or API installation recommendation
Page 7 of 30
The IO3 developed tools have enough flexibility to ensure that any type of intermediary
platform (between young people and employers) can use them and make their users benefit
from it.
The API is targeted to platforms proposing job opportunities to their users. They have
already the infrastructure to propose direct contact between their users and employers (e.g.
https://erasmusintern.org/ and http://www.praxisnetwork.eu/). The main added value for these
platforms will be to provide extra value to their audience and thus differentiate among other
similar platforms. The target websites for the API will be university career websites and job
portals.
Examples of platforms that we would recommend the use of the developed widget, are
mostly websites who don’t post job opportunities. It can be either university websites who don’t
have a career page (e.g. Universidad de Alcala) or advocacy groups. In both cases, these
actors would like to raise awareness on the importance of their quality internships and enable
their audience to look for reliable information. It is important to notice that the audience here can
be larger than students and young professionals. It can include professors, career services staff
(university platform) and politicians (advocacy group). Nevertheless these websites don’t
propose direct connections with employers to their audience.
Widget/API - How information is displayed
In this subsection we describe how information about employers is displayed well in the
widget or using the library/API.
With the widget, once it is installed in the website, the rating of the employer is
automatically shown using the default template provided, and the personalization allowed is
somewhat limited. The widget display shows some elements as it can ben see in the next figure.
First, we can see the logo of the website Transparency At Work5, where all the reviews
are displayed as well and is where all the information is stored as main portal of the project.
Followed by the logo, we have the general rating of this employer displayed, and next to it, if the
employer is distinguished by their good-fair and quality of the internships, a label will be
displayed showing their category. Then, there are two links. The first one shows a pop-up with
detailed information about this current employer, as we can see in the next image.
5 https://www.transparencyatwork.org/
Page 8 of 30
By clicking into the second link, it will open a new page in where students can submit a
new review for that employer.
If the tool chosen has been the library / API, after having configured the access with the
provided username and password, the partner will be able to perform the functions that give us
all the employer list or individual data as well, among other features. As we have said, this
option returns raw data without style, and needs to be styled before being displayed. If we don’t
manipulate the data, the next image shows an example of which and how the information is
gotten by the library, understanding why is needed some manipulation and why this option is
better for people with some IT skills.
This data structure is all the same among all the employers, so once we know how to
display the information for one case, it will be the same for all of them. Thanks to this, it will help
the developers to follow the VIM of their platforms, or whatever style and distribution of the
Page 9 of 30
information they prefer, but achieving the same results as by using the widget. Next, we show
an example of the same output by using this and applying a customized style.
In the image displayed, we can see that we have the same information as in the widget,
but with a different style. If we take a look to the individual statistics, we have a simplified
version of the pop-up but keeping the relevant information, as we can see in the next image.
Because of the freedom we have within this option, many different styles could be
displayed here, this is just an example of all the possibilities available.
Page 10 of 30
3. General challenges
During the development of this Intellectual Output, we faced and therefore solved
different challenges, that we will now explain.
Technical challenges
One of the main challenges of the API (and therefore also a challenge of the library) was
how to design the API to make it efficient and easy to integrate, having clear endpoints and the
necessary information returned or the proper error messages when something went wrong.
For this, multiple sessions between IGP and ESN were planned in where the API was
designed and the endpoints needed were analyzed before starting with the development. There
were also more sessions during the development to check to perform tests, check the behaviour
of it and discover any potential issues that may appear during this phase, so we were able to do
modifications in order to fix them.
When the API was in the phase known as Beta (in software development known as the
phase were the product is completed but likely to contain a number of known or unknown bugs),
ESN started the design and development of the library as well. As we mentioned before when
we were defining what is an API and a library, the API is a mechanism used for fetching
information from a service online (like a website), but using it directly can be quite difficult and
not recommended. Because of this, the library was created, so now there were available some
simple functions for making all this fetch process as simple as possible for all the users without
knowing all the internal details or the complexity of the API behind.
The library was created in PHP, but any other language could have been used instead.
The main reason of choosing PHP has been also explained; it is the language in which some of
the platforms the partners own, like ErasmusIntern6, are developed, but also because PHP is
one of the most used coding languages nowadays (according to W3Techs7, 30% of the top 10
Million websites uses Wordpress, a Content Management System or CMS, that is written in
PHP), so is quite easy to create a library thanks to the multiple examples and tutorials
availables.
Another issue we had to face before the final version of the tools was where to test the
library. For that, we needed a development/test environment with the same data as in the
production environment where we could do all the requests before launching all the tools and
which behaviour is the same one as the production one. This step is important because during
the test phase of both, API and Library, lot of fake or useless data is created, and we don’t want
this information in the production server (because we have to delete everything later on and can
be available for the final users meanwhile).
6 https://erasmusintern.org 7 W3Techs report at https://w3techs.com/technologies/overview/content_management/all
Page 11 of 30
Technical challenges of the widget:
The widget we developed allows partners installing it to search the Transparency at
Work Database, see results and review companies from their own website. The challenge of
this consists in designing a user interface and user experience that is simple: users that never
heard of TAW need to understand what the widget can provide and how to use it.
In order to address this challenge we intensely worked with a UX team and interviewed
some of the partners using the tool.
“Partner acquisition” challenges
While there are technical challenges that can prevent the adoption of the IO3, that are
also other challenges related to habits and customs of intermediaries.
a) Competition with other “review solutions”
University careers services and other intermediaries sometimes have already starting
implementing a review system. They have developed review habits with their users and
are satisfied with it. It is thus considered time-consuming to recreate new habits.
CAPQI partners tried to reach out to potential university partners and we received
comments such as:
“However, their main concern was that students already have to fill out so many
different forms and steps that, at this point, they did not want to give them even
more things to do for their internships abroad.”
b) Fear that transparency could jeopardize their relationships with employers.
Intermediaires spend time building relationships with employers. They develop fruitful
relationships with repeated collaboration with some of them while collaborating only
once with others. Intermediaries already differentiate between good and bad employers
based on their working relationships. They are afraid that the differentiation brought by
full transparency could differentiate employers in an unusual way and put at risk the
relationship they have built with some.
c) Chicken and Egg problem
IO3 will only provide most of its value once the review database is big enough. Indeed
IO3 won’t initially create enough reviews (and thus value) to convince new
intermediaries to install IO3. It’s not strategic for new intermediaries to use IO3 when
there are no reviews. However,reviews can’t be produced largely enough if no
intermediary join in and make its young professional rate their employer. This is called
the chicken-and-egg problem.
To exemplify, CAPQI partners tried to reach out potential university partners and we
received comments such as:
Page 12 of 30
“Another concern for them was that at this point the number of reviews in the
database was still rather small and therefore there were some doubts about the
reliability of the reviews. I have tried to find at least one of our institutes willing to
do a testing phase/trial with you but unfortunately no one really dared to be the
first, I’m sorry about that”.
d) Relationships between career and IT services
Finally, CAPQI partners were confronted to cases where career services and university
staff are ready to implement IO3 but are stopped of doing so because of the reluctance
of the IT services. Reasons can range from lack of IT resources, different priorities or
poor personal relations.
Alternatives to API and widget (Transparency at Work accounts)
In order to overcome these challenges, CAPQI partners have developed a temporary
alternative to the API and widget: the Transparency at Work (further referred as TAW) platform.
Transparency at Work is a campaign website using IO2 to collect reviews in order to
build the IO3 database.
It also allows partners to test the IO2 and IO3 concept confidently and without IT development
on their side. Partners can request their Transparency at Work account and have their own
space hosted on TAW platform.
They can customize IO2, adding their visual identity, own questions and create an url
that is only visible to them. A video has been created to present them how partners can easily
customize the rating form: https://youtu.be/InJAxYO0ghI
They can then run experiments, access some basic data analytics on their internship
programme and even decide to publish or not the data. Though this last point is questionable in
relation with CAPQI objectives, it allows partners to measure the effect of a potential full
transparency.
Example of interface for “partner backend”
Page 13 of 30
Example of customization: https://www.transparencyatwork.org/partners/praxis/reviews/new
This solution has the advantage that there is no coding involved for partners. They can
experiment CAPQI tools while getting feedback on the quality of their internship programmes.
It is important to stress that this is a temporary alternative. It is used to build the database and
create a trust relationship between CAPQI and new partners; showing them the benefits of the
full IO3 solution.
4. Installation
In this section, we will explain how to install any of the options (widget or API) we have
made publicly available in a target website that wants to use the widget or the library to display
the ratings and allow its users to rate the internships quality. The first tool we will explain is the
widget and then, we will continue with the library that uses the API.
How to integrate the Widget in a website
As we have already mentioned, the widget option is the easiest tool to be integrated in a
target website and doesn’t need high specific web developer skills as well.
Page 14 of 30
The first step requires to have a valid username and password for the partners area at
the central website Transparency at Work8 that will give us access to the partners dashboard.
From there, we will see in the menu on the left part, a section called “Widget”. If we click
there, we will reach the page with the instructions to install & use the widget, divided in 3 steps.
The first step requires two simple actions. First, we are able to choose the language of
the text that will be used by default in the text displayed in the widget. The intermediaire should
choose one of the language availables in the list, as we can see in the next image.
Then, we have to copy the text that we have in the text area by selecting it or by clicking
in the button, and place it in the suggested area of the HTML page in the website, within the
<head></head> tags.
Usually, those are always in the file that handles the template or the header of the
website, but depending on how the website is done, it may be in a different file or even in
multiple files. The IT technician will need to find the proper file and then place that fragment of
code.
Once we have finished this step, the next one will give us a list of all the employers that
can be or have been rated so far in the platform. We have available a search box for the name
8 https://www.transparencyatwork.org/partners/
Page 15 of 30
and a filter selection for the country, so it is easier to find any company in the list, and each
employer has a unique widget code that it should be replaced later for the widget when the
page is rendered. Once we have found the desired company, we will see some basic
information about it: name and location country, general rating, internal ID and a button that will
give us the code to use in the partner page.
When we click on the button, the fragment of code needed will be automatically copied
to the clipboard with a nice message that will inform the user about this action. If we take a look
to that piece of code, will be something similar to the one we display now
When this code is added to the partner platform (in the code section we want to show
the widget), once the page is rendered in the browser by any website visitor, the widget will be
automatically loaded and the final result will be shown in the area where we have placed the last
piece of code, having exactly the same output as the image that is finally shown in this
document.
There is a variation in the render of the widget for those companies that may also have
any label in their profile, as we have mentioned in this document before. If this is the case, that
label will also appear within the text, as we have show as well before.
How to integrate the API PHP library in a website
As it has been already mentioned before this tool is slightly more advanced and powerful
than the snippet code given by the widget option. Therefore, this part will contain also more
technical explanations than the rest of the document.
The first step for using the library is common to the widget, we still need to have an
username and password that will give us access to the Dashboard in the Transparency At Work
website, but we don’t need to do login there at all.
Page 16 of 30
In the next step there are some requirements we need in order to install successfully the
library, but don’t worry if your server doesn’t have all, you can upload the final result to your
server of this step if you have a computer with the requirements where you can perform this
step. We will need basically a computer (Windows, Linux or Mac) with Command-line Interface
(or CLI ) and “Composer” installed. Composer9 is “a package manager for the PHP
programming language that provides a standard format for managing dependencies of PHP
software and required libraries.”
Once we have both in one computer (or if our server have both, directly into the server),
first we download the library that is available in the GitHub repository of ESN10 then, we open
the CLI program (Terminal, CMD, Powershell, Bash…), we navigate to the folder with the
downloaded files, and finally we run the install command just like we show in the image
After this, if the operation finishes without errors, we should have new folders created in
the library folder. That means that all the dependencies (other libraries) needed have been
downloaded and installed as well.
Now, we are ready to upload the library in our website (if we have used an external
computer, if we did this directly in the server, we are ready) and start editing the code.
To include the library, we have to load the main file of our library so we will have access
to all the functionalities. For that, we need the next line added where all the libraries are added
in any platform (but can be a bit different depending on the CMS or code the developer uses for
the website)
and with the next two lines we will be able to use our library in any platform.
If the integration with the library has been done properly, now we will be able to use all
the functions and functionalities included. We start by initializing the library and preparing it for
9 Composer website: https://getcomposer.org/ 10 URL of the repository: https://github.com/esn-org/capqiApi-library
Page 17 of 30
authenticate us with the same username and password as in the Dashboard. For this, we can
use this fragment of code:
As we can see, in the second function we need to write our credentials (username and
password), and in the response ($auth), we will have the result of the login. By doing:
Therefore, we are able to know if the login process was successful or not, depending if
this returns TRUE or FALSE. If is the first one, congratulations, you have been authenticated
and you are able to use the rest of the functions included in the library. On the contrary, if you
got FALSE, first check that the username and the password are valid ones and are written
properly (you can do login in the dashboard to verify them).
To finalize this part of the document, two more examples about how to use the library
are shown. First, we have to initialize the library by fetching the information (we will need to use
the $auth response obtained in the previous step as it contains all the relevant information
related to the authentication. By adding this fragment of code
we are able to create an $employers object and all the functionalities related to it. For example,
if we want to get a full list of all the employers and the information related to them, now we can
execute this fragment of code
and we will get them automatically. If, for example, we want to get the detailed information of an
employer, we can get it by specifying which one by their Identificator (is one of the values we
get always in all the responses). For example, by executing
we get the information related to this one.
This information, as we mentioned in previous parts of this document, is returned in raw
text format and needs to be manipulated a bit so we have a proper output displayed in the
Page 18 of 30
website as desired. We show in the next image for example how is a typical response after
executing the last example we have used before (for getting the info on the employer
‘internsgopro_be’)
The library contains have more functions available (like search, creation, etc…), we have
just used some of them for this document. All of them, with detailed examples, are explained in
the documentation that is available in the GitHub repository.
5. Documentation available
Within IT projects, it is common to have always any kind of documentation or user
manual available for the users and developers. Without any documentation, it can be quite
difficult to integrate any tool within a website, that’s why having a detailed documentation with
examples is very important and needed in any IT development. To help in the dissemination of
the API/widget, in the CAPQI project we have made available different manuals for the tools
(Intellectual Output 5) we have developed, and some of those we have partially mentioned in
previous chapters here.
Additionally, anyone can find all this information, code of examples available for the
widget, in the website of Transparency At Work already mentioned, once we have been logged
in with our username and password.
Then, for the developers, we have made available different documentation repositories.
Page 19 of 30
The first one is for the API and we can find it in the documentation website11. Here we
are going to find all the API endpoints available with their respective URL’s, examples about
how to request the information and what we get depending on whether we have done it properly
or not and even play with the simulator as if we were using the real API. This documentation will
be mainly used by the maintainers of the PHP library that has been created or by any other
developers that are interested in collaborating with the library or create new ones in different
languages. Also, the moment new features are added, or the API has any change, this page will
be updated according to the new changes.
Also, developers and webmasters have available the documentation available for the
PHP library in the GitHub repository already mentioned before. This library is Open Source,
meaning that also the code is public so anyone can copy, modify parts with possible errors or
add new features to it or to the documentation, but respecting the license used for the library.
We have followed part of the documentation available in the previous chapter, when we have
explained how to install the library in our website, but in this page12 we will find the full
documentation available, with all the options, functions and examples of the code, trying to
make it as simple and easy to follow by all the people.
Finally, we created a simple demo page13 that was used as an example for both tools.
This website simulates to be a portal where users could find internships (as we have mentioned,
it’s a demo site for displaying purpose and no more functionalities available). In this demo site
we have decided to display first a normal page with a couple of internships there (not real ones,
but with real data from the platform).
11 API documentation: https://transparencyatworkpartnersapi.docs.apiary.io/ 12 Library Documentation: https://github.com/esn-org/capqiApi-library/wiki 13 Demo page: http://ares.esn.org/~gorkaguerrero/capqidemo
Page 20 of 30
Then two extra pages that uses both tools created, the first with the widget and the
second one with the library integrated.
Page 21 of 30
The aim of this demo was to show how a website can be modified easily to display the
rating information and provide end users with some real examples of the widget/API usage,
including also the documentation related and used to create this demo page.
Page 22 of 30
6. Practical tests on real websites
Now we will explain how the Widger or the API have been implemented in different
platforms that already exists and offers different internships to their users.
ErasmusIntern
ErasmusIntern14 is the Internship’s platform of ESN. More than 6000 recruiters are
registered within the platform and constantly publishing internships (around 1400 internships are
currently available) for more than 80000 students registered but also to whoever visits the
platform.
Because of the amount of users and page impressions the platform has, we have
decided to implement the API instead of the Widget but even though this solution can have
some face some issues during the implementation phase. The main issue was the high amount
of requests the API could do from ErasmusIntern to TAW. Each time an internship is displayed
means an API request, and by showing a list of internships can be multiple requests too, so the
platform will be finally loaded after all the requests are done and the information is sended and
rendered. This can cause a) some delay in the load time of ErasmusIntern, b) huge
computational cost on the server of TAW and c) a high server-traffic cost as well.
14 https://erasmusintern.org
Page 23 of 30
In order to solve this, we decided to implement a cache system15 between the platform
and the API. What the cache system does in ErasmusIntern is to reduce the requests to the API
making faster the loading time of the platform. For this, we do some “cron jobs” (scheduled
operations in the server that performs automatically a series of pre-programmed tasks)
periodically (every 24 hours, but can be configured for shorter periods) that requests the
information from all the employers in the database. If the information has changed or there are
new recruiters, then we update or save this information in the cache system stored in the
ErasmusIntern server. Then, the request is done to this cache system instead of to the API.
Thanks to approach, we will be able to reduce drastically the number of requests from
an estimation more than 75.000 per day (based on the amount of page impressions and number
of internships visited) to less than 500.
In the next image we can see a fragment of the administration panel of the cache system
with the last time each field was updated by performing this operation and the possibility of
performing a manual synchronization of the information instead of waiting to the next cron job.
Another issue faced in the implementation of the API library in ErasmusIntern is related
with how Drupal16 (the Content Management System in which the platform is built) is created.
Drupal’s functionalities are extended via modules17 that are created by the community or by
ourselves, so we had to create a new one in order to accommodate the library from GitHub, the
cache system, and the internal management of our recruiters.
For that, we did many modifications in the background of the platform in order to extend
the functionality of existing modules, but also we created a new one that could support the new
ones the library needed, like storing the information for the cache system. Programming the API
library in PHP was an advantage as this is the language the modules are also programmed in,
so the integration of it in the module was quite easy. Then, we had to code all the interactions
15 More information about cache system on Wikipedia: https://en.wikipedia.org/wiki/Cache_(computing) 16 https://www.drupal.org/ 17 More info about modules on Wikipedia: https://en.wikipedia.org/wiki/Modular_programming
Page 24 of 30
between our data and the new data (i.e: match our recruiters with recruiters from the API,
submit new recruiters via the API, etc…), and also create new functionalities so all the
information is easily administered. In the next image we show for example if one recruiter has
already information of the TAW database matched with ours or not and the operations we can
perform.
The last issue was where to place the information within our internship pages. Although
there are many possibilities to be chosen, some or the areas were rejected because of the code
behind them or for other features that will be added in the future.
In the end, we decided to display our implementation of the widget in the menu bar
located in the middle of the page (where the “Profile” section is displayed in the last image) in
the internship page but also in the recruiter page as well. For this, we had to also modify and
update the existing code that renders this area.
During the creation of the demo website and the tutoria, we used the newest version of
Bootstrap18 (an open source toolkit for developing with HTML and CSS) available (v4.0) but in
ErasmusIntern we have an older version installed (v3.3.7) so we had to modify the initial code in
order to have an output similar to the original from the widget. After some modifications, we
managed to have the expected result placed in the desired location of the page. The next image
18 Bootstrap website: http://getbootstrap.com/
Page 25 of 30
shows a proposal of the implementation, meanwhile is decided which colours will be used
according to the Visual Identity of the platform within the different elements.
As we can see, we have a similar output as in the widget placed in the mentioned area.
We can see perfectly the label (if exists) of the employer and the general rating as well. If we
want to access to the full statistics, we can get them by placing the mouse over the “View
Statistics” badge and we will have a new element like the one in the next image.
Page 26 of 30
Praxis
Praxis19 is a virtual internship market offering internships for all study levels, from VET to
higher education. The platform was developed under an Erasmus Network project that was co-
funded by the Lifelong Learning Programme between 2011 and 2014. The platform is being
supported by a group of volunteers since then, including staff from former partners, staff from
institutions that joined the network at a later stage and young talents that did their internships in
Praxis and decided to keep on board to support it. The Praxis network, originally with 44
partners, currently has 142 partners from four continents.
The Praxis platform is being accessed from all over the world by students looking for an
internship opportunity and companies searching for students. The platform is available to all and
registration is only required when students want to apply to an offer. We have above 10.000
registered students and 16.000 applications to internship offers from approximately 800
registered providers.
Our core concerns when integrating TAW in Praxis were related to the keeping the
visual identity of Praxis and minimizing the traffic between Praxis and TAW. Both these
concerns are addressed by the integration possibilities that are available.
We are integrating TAW into Praxis using the API. Our approach required a few minor
changes in our database but we can now offer TAW to our users with a personalized look and
feel and a low traffic demand.
When students search for internships and their search results include offers from
providers that are already rated we exhibit a summary of its ranking in the search results page
as seen below.
From here students have access to a more comprehensive view of the company profile
and/or to the full profile from TAW.
19 www.praxisnetwork.eu
Page 27 of 30
Students have also direct access from Praxis to TAW. Through this feature they can
rank their internship, directly from Praxis, using a form that is tailored to suit Praxis visual
identity. More than the visual identity it is also possible to personalize the rating form in order to
include in particular aspects/questions you might be interested in.
Page 28 of 30
Other platforms
In the annex I, there is a list of potential partners that have been put in contact with the
CAPQI partners to install or use the widget/API developed in this intellectual output.
7. Conclusions and remarks about CAPQI IO3
It is tempting to think that once the API is built, results will come by themselves.
However, as first tests with the CAPQI partners have shown, just creating an API is not enough.
A complete strategy is required including documentation, sample code, flexible functionality,
parameters, developer support and co-marketing resources.
CAPQI partners believe that the process requires a lot of time to take off but once it has
been done, it will have evident results for a rating system capable to evolve along time.
To foster the acquisition of IO3, CAPQI partners are making recommendations for the
rest of the CAPQI project and beyond.
1. Developing a strong data-collection phase. In order to have a large database for IO3 to
thrive, efforts on communication, marketing need to be spent. For this reason, CAPQI
partners have developed the Transparency at Work campaign.
2. Starting small and going after low-hanging fruit. IO1 was very useful to identify pioneers
who would believe and see the potential of IO3 and accept to provide reviews to build
the first step of the IO3 database. These pioneers just want to access a small part of our
database.
3. Using and continually testing the API. One of the great strength of the project consortium
is that the solution developed have been used by project partners. By facing the same
challenges than other intermediaries we have been able to adapt the IO3 developed
tools to overcome them (such as TAW accounts).
4. Being a great partner and understanding the co-dependency of the relationship. The IO3
value depends largely on the usage of other intermediaries and universities. It is thus
essential to foster strong partnership outside the consortium to guarantee the success of
the CAPQI project.
Page 29 of 30
ANNEX 1 - Current partners interested to get IO3 solutions
Those are the organisations that we are in conversation with and the status updated on the
8/June/2018
Organisation Name Type Country Product Status
1 Abbott Company UK TAW account Using it
2 Adecco Company Switzerland TAW account Using it
3 La France s'engage
Association/Public Service
France TAW account in negotiation
4 Mladi + Youth Organisation
Slovenia TAW account IT dev. Needed
5 www.tenerifejobtraining.com
Job board Spain TAW account in negotiation
6 Universidad de Alcala
University Spain TAW account Using it
7 Smile Company France TAW account Using it
8 Siemens Company France TAW account in negotiation
9 Praxis Job board Portugal API Testing phase
10 ESN Youth Organisation
Belgium API Testing phase
11 ONISEP Youth Organisation
France Widget in negotiation
12 MIAGE Connection Youth Organisation
France Widget in negotiation
13 Inter Research University Germany API IT dev. Needed
14 LEONET University the Netherlands
TAW account in negotiation
15 La Fage Youth Organisation
France Widget in negotiation
16 European Youth Forum
Youth Organisation
Belgium Widget in negotiation
17 Instituto Politécnico University Portugal TAW account in negotiation
Page 30 of 30
do Cávado e Ave
18 Science Po. University France TAW account in negotiation
19 Workspace Europe Job board Slovakia API in negotiation
20 Polytechnic Institute of Leiria
University Portugal TAW account in negotiation
21 European Student Placement Agency Ltd.
Job board UK API in negotiation
22 Polytechnic Institute of Coimbra
University Portugal TAW account in negotiation
23 Bonanza Company France TAW account in negotiation
24 HappyOffice Job board Hungary API IT dev. Needed
25 Ares Youth Organisation
France Widget in negotiation
26 Brussels Interns NGO
Youth Organisation
Belgium Widget in negotiation