+1 832 476 8459

Kapow! Media

Kapow! Media Logo

Marketing Campaign Management Tool using Ruby on Rails

Client Overview

Kapow! Media is an upcoming marketing services company with a clear emphasis on maximizing client response. It uses advanced analytics to tailor marketing campaigns per customer basis. It leverages both the active and passive communication by tracking users’ reaction to content and frequency. This means that both Kapow! and partners will get the highest return on their data. It provides the best end-user experience ensuring that advertisements do not alienate good customers.

Project Overview

Project involved implementation of an online marketing tool. This project targeted customers who had opted for what advertisements they want, in their emails. This involved complex algorithms, that judged authenticity of an advertisement, and separating SPAM. Most of the e-mail advertisements today are mostly SPAM, so genuine ads were segregated from the clutter. Project involved 2 sub-projects: The Effort and the Campaign Manager.

Project Challenges

  • Most of the email advertisements involve SPAMs. The challenge was to segregate relevant and genuine advertisements from the others.
  • Most of the advertisements are rejected by e-mail filters. The major challenge remained designing algorithms that could match (actually fool) the e-mail filters to accept genuine advertisements.
  • Technology is ever evolving, keeping abreast with the same would require certain extra effort. Latest version of Ruby language and Ruby-on-Rails was used, as also version control (Git), and key-value storage (Redis), in addition to advanced JavaScript library (extJS), and a light-weight Ruby framework (Sinatra).

The BluEnt Approach & Methodology

BluEnt followed Behavior Driven Development approach (BDD). BDD focuses on obtaining a clear understanding of desired software behavior through discussion with stakeholders. BDD also helps communication between development team and testing team, by simplifying the language used to describe scenarios in which the software will be used. Rspec was used to write executable examples of the expected behavior of a small bit of code in a controlled context.

Linux was used as development platform, which resulted in faster development, and testing. Choice of Ruby-on-Rails as development framework meant Agile Software Development model was followed, culminating in faster release cycles and better interaction within the team.

The tool involved 2 sub-projects:

1. Version 1: Effort

This phase involved implementation of a CRUD interface for various tables in the schema. These operations were based on specified privileges, so as to safeguard against unauthorized access and / or modification of data. A periodic background scheduler was used (Resque) to manage fetch / storage of new advertisement campaigns. Hobo (www.hobocentral.net) was used to speed up development. jQuery was used as JavaScript library, and database used was MySQL, along with Redis, for storing links.

2. Version 2: Campaign Manager

This version involved generation of JSON response for advertisement data, and parsing the same. This generation / parsing of JSON response was restricted, based on privilege of the logged-in user. ExtJS library was used, resulting in a better UI experience. Also, latest version of Ruby (1.9.2) and Rails (3.0.5) were used. PostgreSQL and Redis were used this time, MySQL support was dropped. Latest Rubygems, such as Cancan, Devise were used to accelerate development, and faker was used to generate fake testing data. A sinatra application was also developed, for fetching and browsing e-mail offers. The same was achieved within a very short span of time.

Technologies used

1. Operating System: Ubuntu Linux Desktop 10.10 for development, Ubuntu Server for deployment.
2. Programming Language: Ruby 1.8.7 (for v-1), 1.9.2 (v-2)
3. Framework: Ruby-on-Rails (v 3.0.5), Sinatra (v 1.2.0)
4. Database: MySQL (for v-1), Redis, PostgreSQL (v-2)
5. Web Server: Mongrel (for v-1), Thin (v-2)
6. JavaScript Library: jQuery, extJS
7. IDE for development: Netbeans (Linux)
8. Testing framework: Test::Unit (v-1), Rspec, Cucumber (v-2)
9. Ruby gems used:

  • Cancan (Authorization library)
  • Devise (Authentication solution)
  • Database_cleaner (Database clean up for testing)
  • Faker (Fake data for testing)
  • Faster_csv (CSV parser)
  • Json (JSON Parser)
  • Nokogiri (HTML, XML, SAX, and Reader parser )
  • Machinist (Test object creator)
  • Mail (Ruby DSL for mails)
  • Meta_where (Simplifying ActiveRecord queries)
  • Paperclip (File attachments as attributes)
  • Rcov (Code coverage analysis)
  • Resque (Redis-backed queueing)
  • Rspec (Behaviour-Driven Development)
  • rufus_scheduler (Job Scheduler)
  • Selenium (For automated testing)
  • Tzinfo (Timezone library)
  • Warden (Rack middleware)

Competitive Advantages

BluEnt strives to achieve the task with effective client interaction, while following proper programming practices. Daily meetings with client were scheduled, progress was properly charted. Hipchat client was used for effective communication with the client (IM as well as voice), in addition to Skype (for video conference). Notes were shared with the client using Evernote.

BluEnt strictly followed Agile Methodology for development and preferred BDD methodology rather than coding immediately. Specs were written for the desired behavior, and then code was written to achieve the desired behavior, followed by code refactoring. Also, proper testing meant firmer code base. Selenium was used for automated testing of the application.

BluEnt insisted on development using Linux platform (which is currently the OS of choice for developers). Also, ideas regarding schema were encouraged, and Redis was introduced as a key-value storage. Also, other Ruby gems were used to ease development, so as to emphasize Ruby-on-Rails principles of Convention-over-Configuration (CoC) and Don't Repeat Yourself (DRY).