Application Descriptions

Overview of the App

You can see the application at https://audienti.com/. It is currently in production.

Audienti is software that our customers use to generate new leads. It combines three key technologies to deliver a solution that automatically finds, attracts, and delivers leads to a customer's website.

How it works is this: First, it has a listening component, that listens for mentions of keywords across a number of different channels. Then, from there, when a mention is found, it finds the person behind that mention, and searches for all the various ways you can potentially reach that person (social accounts, emails, phone numbers). Then, we have an automation component (with a super easy to use drag and drop UI) that lets our customer build a chart that shows how to engage that user.

Our solution works across both paid and organic channels.

In our early testing, we achieved greater than 10% click through rates in the majority of our campaigns.

The Problem

As we went into production, we found some scaling problems with the archiecteure, and have stopped new sales until we refactor the application to remove these limits. This mainly consists of changing from using ElasticSearch as a database to using Cassandra as a database, and breaking apart non-normalized data back to something that looks much more like a normalized database structure.

This change also meant that we have to signficiantly change how we do calculations. Previously, they were done mostly with ElasticSearch aggregations dyanmically. Now, due to how Cassandra works, and for front end performance reasons, we will do the now mostly in the pipeline itself, writing results to Cassandra tables. This significantly changes our data architecture obviously, and how our pipelines work.

And, given that the application's initial code base was started in 2010, we felt it a good opportunity to totally refactor the application to get a foundation we can build from for the next 5 years.

Back End Architecture

Our data architecture mostly consists of pipelines that regularly retrieve data. These pipeline are built on ActiveJob currently, but the core classes that "do work" are extracted, so that we can move to another worker/queue system in the future without problems (Kafka most likely).

There are several major pipelines of note:

  1. Mention Pipeline - This retrieves mentions from various services when a keyword is pushed into this pipeline. These mentions come from both APIs and from crawling/scraping.

  2. Profile Pipeline - When a mention is produced, it has an associated social profile. The Profile pipeline takes this "raw profile" and enriches it, grabbing the person/company's information on the profile page and putting it in the database. It also finds references to other profiles mentioned on these pages, and adds them to the Profile Pipeline for enrichment. Profiles are also scored regularly both for their generial visiblity and social engagemetn, as well as for their visibility and social engagement for each keyword we are tracking.

  3. Cluster Pipeline - This regularly looks at the profiles produced and uses machine learning and AI techniques to cluster the profiles together into "People" and "Companies". These are the basis of our customer's front end interaction with the profile data, they are the "leads" in our system. These people or companies are thene "segmented" into segments based on a person/company matching a segment definition supplied by our customers.

  4. Automation Pipeline - Once a lead has been identified thorugh a segment, our tool has the ability to automatically perform actions on behalf of the company. These consist of "social enginering actions" like following and "engagement" actions like sending a message/email. There are also tools that let you rate limit, split test, etc.

  5. Data pipeline - We gather data from various sources for elements in our system. This pipeline does this retrieval and storage of these data elements.

Front End Architecture

Given that we are refactoring the application, we are taking this opportunity to modernize the front end. Our stack includes: Rails 5.1, React-On-Rails for integration or React, and several react components that implement our toolset. We use an off the shelf "skin" that has pre-built react components, so we can avoid much of the headaches of "standardizing" our look and feel. Layouts are based on Bootstrap 4. We use Turbolinks as well for basic UI.

Our drag and drop interface is implemented in Javascript, using the Rappid.js framework. The original developer is around to answer questions and potentially help. The code itself needs a refactor here as well to a more modern JS standard, using classes, etc.

Most of the front end's "specifications" are the behaviors that we see in the existing front end. You, as a front end developer, will be given access to this, and can see how they behave. Note that we are not duplicating them--as that would bring along deprecated code. We are rewriting them to do the same things, using best practices now for how to do this work. Note you will also have access to the old code base.

Engineering Resources

The CEO of the company, plus 3 other developers currently work on the application in some capacity. The CEO and one developer have client responsibilities and thus don't get to spend full time on the application. One of the remaining developers was the initial developer of the Drag and Drop workflow, and is part time. One developer is working full time on the application.

Engineering Needs

Backend

The CEO needs someone that will understand what each pipeline is supposed to do, and do the work necessary to make these pipelines function. The engineers that currently work on the application, while great, are still somewhat junior. So, this person needs to be more experienced and a person that can get things done.

Front End

The CEO needs a developer that can take what is existing, the functions and capabilities, and built new front end components that encapsulate similar functions. This means modernizing to a modern (Bootstrap4/React/UI Design) look and feel, as well as supporting the functions and capabilities built in each section. This also means that you need to understand how our new architecture is different than our old one, and handle bridging. Some features and functions in our NEW system will not exist in the old, as they were hard and difficult to to, and some features will no longer many any sense in our new UI. You have to understand enough to be able to handle this.

In all developers

I'm looking for is someone that get's things done. I have had these roles open for many months, and have hired and fired several people so far. All of those people though they were "get things done" type people. But, after 2 weeks+, they had not produced much if anything in results/completed work.

The right person isn't purely looking to "bill by the hour"-- The right person wants to build something they can be proud of, and be part of something great.. and WORK to make that happen.

This isn't a "pie in the sky vision" by some want to be entreprenur. We are a cash flow positive company, with paying customers. We have an existing, working version of the software that we are refactoring. We have 100+ trials waiting for the next generation of our application. Customers like the features.

And, now, I need help to get a better, more scalable and improved version out so we can finally capture the market that is demanding our software.

We're looking for a long term relationship. So, if you are trying to build something great.. something you can truly be proud of, that touches many hot new areas and technologies... then let's talk.

Last updated