Get a perfect quote

We’re eager to work with you. Please share your project goals and contact information. We respond to 97% of messages within 1-2 business day. Really!

TELL US ABOUT YOU

TELL US ABOUT YOUR PROJECT

What Are You Looking For?

Browse

case studies

  • image description
  • image description
  • image description

Cognition

About the project/client

Global Rev Gen is a digital consultancy and media agency.

Global Rev Gen works with brands and other agencies all over the world to implement digital media campaigns in new and innovative ways.

Consulting Services
Global Rev Gen consulting services include strategic advice around delivering Business, Brand, Marketing and Media outcomes. They consult to startups and corporates directly as well as their agencies.
Media Services
Global Rev Gen media services include media strategy, campaign planning, media planning & buying, campaign management & assessment, tracking & analytics, reporting, re-investment planning & optimization. They work across every digital channel (and sometimes some offline ones too).

Cognition is Global Rev Gen's proprietary CMP (Campaign Management Platform) It has been custom built by us, for the customer to help them deliver value to our clients. All of the work Global Rev Gen does flows through, and is enhanced by this platform. It is the outcome of Global Rev Gen innovation and drives them to collaborate and innovate and inspires them to scale.

Involvement / participation

We started to build Cognition back in 2010 as a single page application to extend the single publishers subsystem of HasOffers online service ( http://www.hasoffers.com ), which the customer used at the moment to run its online digital campaigns. The support of additional subsystems was quickly adding up and the scope of already built subsystems was broadening, changing at the same pace as the workflow requirements of Global Rev Gen were maturing.

The necessity to implement the campaign subsystem quickly became obvious and it was added up to the pack. Then the creative briefs subsystem was thrown in, together with the tight integration between campaigns, briefs and publishers subsystems. Shortly after that Insertion Orders, Prospecting, Client invoicing followed (to name only a few). Together with the new subsystems the integrations with third party services was built up :

  • HasOffers to track the online digital campaigns data in real time
  • EchoSign to sign the Insertion Orders online and make the whole process of such documents generation, parsing and full cycle processing a breeze.
  • Xero to deliver the automatically generated invoices based on the campaign reporting data quickly and efficiently
  • CampaignMonitor to control nurture streams flexibly for each individual campaign or client.
  • RedBooth to manage the issues, tasks and facilitate close communication between company employees

Above are just some of the third party integrations we built into Cognition during all these years of active development, improvement, polishing and optimization. During this time our project manager, graphical designers, UX engineer, HTML slicers, front end and back end developers, QAs, system administrator and document writer constantly worked to deliver Cognition features, on which Global Rev Gen now relies in their business critical operations.

From the ground up Cognition was meant to be a proprietary platform to match Global Rev Gen workflow to manage the online digital campaigns efficiently, transparently and give the Global Rev

Gen operators unparalleled view of both the entire picture on how their digital campaigns are doing and to be able to dig into the tiniest details, which are not covered by third party services. The major requirement was to enable Cognition availability globally for all the Global Rev Gen employees who work in Australia, Europe, Asia and travel around the whole world, which means that the service must have been optimized for global accessibility but to feature strong security to protect company’s proprietary information.

  • HasOffers to track the online digital campaigns data in real time
  • EchoSign to sign the Insertion Orders online and make the whole process of such documents generation, parsing and full cycle processing a breeze.
  • Xero to deliver the automatically generated invoices based on the campaign reporting data quickly and efficiently
  • CampaignMonitor to control nurture streams flexibly for each individual campaign or client.
  • RedBooth to manage the issues, tasks and facilitate close communication between company employees
image description

Cognition must have enabled efficient access and management of both organized and un-organized digital ad inventory (Organized inventory can be purchased via technology platforms, un-organized inventory requires humans to work with other humans). It must have been a data warehouse of thousands of global traffic sources, all categorized by digital channel, traffic type, quality and accessibility. Regional teams must be able to service local clients and work with global publishers efficiently and at scale.

In order to ensure availability as close as possible to 100% it was critical to choose the cloud hosting provider with reliable infrastructure, with presence of the data centers in different cities around the world. Reliable backup and restore procedures were also a MUST to prevent the critical data loss. It was likewise critical to ensure efficient UX/IU which would be both intuitive for the operators and at the same time would allow efficient data entry, retrieval, manipulation and control of the business indicators.

Initial Functionsl Requirements Gathering.

As proprietary platform Cognition requirements always closely matched castomer's workflow. That is why in order to get the requirement we worked in close cooperation both with the Global Rev Gen founders, managers and operators.

UX/UI Prototyping

When we saw it necessary the requirements gathering was followed by the UX prototyping phase. To do the job we used Balsamiq Mockups and Invision services. The former allowed us to quickly outline the UX layouts based on the user requirements. The latter made it possible to convey to the customer our vision of the user interactions within the proposed layouts. Both services are available online and allow to instantaneously share the vision with customer and collect feedback.

image description
image description

Design

After the UX/UI prototyping is done and approved by the customer the design is made up. During the Cognition lifecycle its design has undergone 3 major overhauls. In order to follow along the iterative approach the new design exists inside the application together with the previously implemented one. The new subsystems naturally pick the new design. The existing subsystems are refactored in order of priority which is set by the customer. Each design phase is based on the styling guidelines which were proposed and approved by the customer as a first effort of each major design overhaul.

Static layouts slicing

The approved designs are further sliced using SASS and HAML languages. Usage of SASS and HAML at the slicing stage allows quick integration of the designs to the project, no matter whether it is a newly designed subsystem or just a small change to the existing layout. Our slicers are making modifications right in the project sources, which streamlines the development process and eliminates the necessity of the additional phase to integrate the static slicing to the existing project. Also during the slicing stage the front end JavaScript pieces are added. We have involved AngularJS for recent implementations to take Cognition to the new level of user interactivity. customer as a first effort of each major design overhaul.

image description
image description

Front and back end Implementation

Static layouts are further used for the implementation. CSS Styles are split to the individual files and integrated to the Ruby on Rails asset pipeline. Likewise the JavaScript files are distributed within asset pipeline. The functional requirements are further used to data models and for business logic implementation. Each new major feature is done in a separate GIT branch, and when implementation is complete it is further cross-reviewed by the team leader and team members and then merged to the main branch for testing and quality assurance & control. Also the new implementations and changes are supplemented with the unit, functional and integration tests.

Infrastructure

Our infrastructure includes 3 types of the servers to produce the most efficient and reliable path from the implementation to production :

Development servers, where our developers and slicers initially interact to implement the functionality and make it ready for QA

Staging servers where QA is performed and where the functionality is being demonstrated to the customer. These servers are setup to match the configuration of the production servers.

Production servers are the servers where the live application is running, and where the changes become visible to the audience of the application.

image description
image description

Testing and Quality assurance

Our development process features usage of the automated tests, which are produced during the implementation phase. The automated tests are further used during the deployment to development, staging and production servers.

Before the QA phase is starting the implementation is deployed to the staging server, where the main QA activities are performed. After QA activities are over and the customer approves the functionality on the staging server it is deployed to the production and tested there.

Deployment

To ensure the project efficiency Amazon AWS was chosen as a hosting provider to hold the live application. Our installation features EC2 instance usage to run the application processes, S3 instance to store the assets, RDS to run the database and Glacier to store the project backups safely. Our DevOps engineer makes the deployment process using Capistrano. The latter allows us to make the deployment procedure accessible with a single command. Once triggered Capistrano script performs all the necessary plumbing to shutdown/startup the application processes, to deploy to master/slave servers, to run the database migrations and more.

image description
image description

Production monitoring and support

When the application is live on the production server our job is not finished. We continue to monitor the application health, look for the critical updates to make sure the application infrastructure is up to date. Also we routinely check the validity of the backups by retrieving them and installing the application on the development instances based on the backed up data. In addition we continuously overview the libraries and frameworks updates - this leads to the upgrades of the libraries within the project to keep the technology stack up to date.

BACK END

The backbone of the application is Ruby on Rails framework (of the version 4.2 at the time of writing).

As the HTTP server Apache is installed. Together with Phusion Passenger it serves the user requests. As a backend storage we are using the MySQL 5 server, with InnoDB engine. The choice of MySQL allows us to use the full power of relational database storage engine and to keep the resources footprint to run a storage engine to minimum. To manage the asynchronous back end long running tasks we currently use Resque library. And earlier implementations are based on the cron jobs.

image description
image description

FRONT END

The most recent developments are implemented with usage of AngularJS framework. We arranged separate single page application for each subsystem. Earlier developments are based on jQuery, jQuery UI and jQuery plugins stack. As already mentioned the front end layout and interactions are done with HAML, SASS and CoffeeScript to complement Ruby on Rails stack most efficiently.

TEST HARNESS

As testing framework to implement the unit, functional and integration tests we use MiniTest. For the initial test data generation we utilize FactoryGirl as well as Faker gem. To add more useful methods and assertions we added up Capybara and Shoulda gems. For service integration testing we utilize webmock and vcr gems. Also for acceptance testing we use headless and selenium webdriver gems. Before the functions are going live we provide performance testing with SoapUI test automation framework.

image description

Results

From the time when we introduced the first implementation of Cognition to Global Rev Gen employees around the world it became the indispensable part of the company workflow, which tightly glues together separate services used for company operations. It quickly became a platform which allows the company employees to control the online digital campaigns at any stage - starting from the prospecting phase to the billing.

Constant monitoring and support of the service deployment allows us to keep it up and running 24x7, make the critical updates and upgrades well before they might become a bottleneck, and lets us implement the user requests in quick iterations, providing the balance between time to production, quality and costs.