SlideShare a Scribd company logo
Building an Analytics Engine on
MongoDB to Revolutionize Advertising
@ Yallzi
/crowd-Fun the Internet
“Hello (MongoDB) World!”
Steve and ALL@YALLZI
{
“title”: ”yallzi@yallzi”,
“email”: ”steve@yallzi.com”,
“linkedin”: ”https://www.linkedin.com/in/stevebond”,
“twitter”: [“company”: “@YALLZI”,
“personal”: “@TheOneTechie”],
“web”: “yallzi.com”,
"location": "garage/Austin_TX"
}
Agenda
/ About
/ Challenges, requirements
/ Journey
/ Outcome, next
/crowd-Fun the audience
About
/crowd-Fun the moderator
Who are you?
/about
/about
Crowd-Fun the internet.
Started *not* that long ago... in a galaxy that involved moving from NYC to Austin
1. Lost all local NYC hangouts over two short nights
2. Is there a guide to living like an Austin local and get to know business owners?
3. No excuses not to unpack boxes.
We asked ourselves:
Why there is no app for this?
/about
Dreaming of..
- Not Unpacking!
- Cold Beer
- Movie,
- Local Museum
- BBQ! I am in
Texas...
Can’t a local just share
the best places to
hangout and let me
chat vendors up ??!
/about
I want to Share my City: “My Stay-cation is someone’s perfect Vacation”: I’m
searching for an easier way to help others experience the town I love. Family and
friends constantly ask for recommendations for their visits. They share these with
their friends and families… and then I get calls from people they’ve shared it with
who I don’t even know. AND at the worst times of the day. There’s gotta be an
easier way to share the town I love…
I want Advertising that works for me: “Invite vendors to your dialogue” I
am not sure which venues to select. I wish I could have a dialogue with
multiple vendors to help me pick the best spots for my group and needs… I
wish my vendors fought for my business, maybe through hand-picked
discounts and freebies? I’m sure they would like this personal connection
too.
I want to Explore New Cities: “Someone’s Stay-cation is my perfect
Vacation” I am planning a vacation. We love traveling like locals. Hours of
scouring the web for perfect places are turning to weeks… This is becoming a
second job! We just want to find a local’s perfect staycation. Isn’t there an easier
way for me to experience Places others love?
/jɑːlzi:/
YALLZI
/about
YALLZI helps you share all your favorite places with friends or the whole world.
YALLZI helps you explore new worlds that other Yallziers have shared.
YALLZI breaks the barrier between Vendor and Consumer.
/about
Vision
/Challenges, Requirements
/challenges, requirements
Strength-Skills
● C, C++, Java
● Product Development
● Content Management
● SQL - Any RDBMS since mid 1990s
● NoSQL - 5 years of dev and prod
● Data Warehousing
● Ad Servers and Analytics
● Proven ability to squeeze 4 weeks of work out of 7 days of free demo version
● Mean Extra Dry Martini’s
/challenges, requirements
Needs
● Data set of POI covering major verticals in US and International
● Ensure parallel development of web, iOS and Android apps
● APP that does not need a lot of design work initially but will tell a story and please investors
● Multi-language support
● Save Time and Money on Everything
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
/challenges, requirements
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps
● APP that does not need a lot of design work initially but will tell a story and please investors
● Multi-language support
● Save Time and Money on Everything
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Solutions
/challenges, requirements
Solutions
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design work initially but will tell a story and please investors
● Multi-language support
● Save Time and Money on Everything
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
/challenges, requirements
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design … Hold Expensive Design - go simple
● Multi-language support
● Save Time and Money on Everything
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Solutions
/challenges, requirements
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design … Hold Expensive Design - go simple
● Multi-language support Pick A DB!
● Save Time and Money on Everything
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Solutions
/challenges, requirements
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design … Hold Expensive Design - go simple
● Multi-language support Pick A DB!
● Save Time and Money on Everything Go Open Source
● Lighting fast speed :
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Solutions
/challenges, requirements
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design … Hold Expensive Design - go simple
● Multi-language support Pick A DB!
● Save Time and Money on Everything Go Open Source
● Lighting fast speed : Pick A DB!
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Solutions
● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI
● Ensure parallel development of web, iOS and Android apps RESTful dev
● APP that does not need a lot of design … Hold Expensive Design - go simple
● Multi-language support Pick A DB!
● Save Time and Money on Everything Go Open Source
● Lighting fast speed : Pick A DB!
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real time analytics collection and processing to power apps
Pick A DB!
/challenges, requirements
Solutions
- expressive query language
- indexing- GeoIndexing
- performance
- scalability
- flexibility
- no need to learn new languages
- easy to use management tools
- a vendor behind the product
- opensource / strong community
- run well on Cloud (deployment architecture
flexibility)
/challenges, requirements
Pick a DB...
SQL noSQL
Select * from actors a, activities ac,
history h where a.actorID=...
Selecting MongoDB
● Multi-language support
● Save Time and Money on Everything - Open Source/Supported by Vendor
● Lightning fast speed to
○ vision → prototype → alpha/beta → GA
○ iterate
○ scale
○ data and geo data retrieval
○ DB is NOT a bottleneck for frequent app builds
● Close to real-time analytics collection and processing to power apps
/challenges, requirements
/Journey
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access
○ Indexing
○ Availability
○ Scale
○ Flexibility
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing
○ Availability
○ Scale
○ Flexibility
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
All calls are made as HTTP requests to
one common backend residing on one
URL and serviced by one application, so
all calls will have a common prefix:
http://<server>:<port>/api
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability
○ Scale
○ Flexibility
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale
○ Flexibility
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 2.6
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
1. Location (Dynamic)
a. geo : latitude, longitude (geoLocation)
2. Preferences (Historical & “Acquired”)
a. Existing preference
- Bob loves bicycling followed by
a beer and lives on UES... A
fellow Yallzier just biked East
River Greenway, followed by a
beer at Pony Bar. Yallzi
renders this plan to Bob.
- A fellow Yallzier Has Shared
Interests and fellow Yalzier is a
referrer
a. Shared
- Bob and Sue both like
Mexican, Sue loves Rosa
Mexicana. Yallzi asks, Will
Bob?)
- Sue has similar interests and is
a referer
a. Adjacent and could be “Acquired”
- Bob likes Ballets and Opera.
Sue loves this + Broadway
Show. Yallzi suggest Broadway
show)
- Sue has similar interests and is
a referrer
1. Availability (Dynamic)
a. time
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“user”: {
“name”: “Yallzier”,
“email”: “yallzi@yallzi.com”,
“phone”: “+1-2121212121”,
“socialLogin”: “FACEBOOK_Yallzier”,
“deviceToken”: [
“appleToken123”,
“appleToken234”,
...
]}
} }
/journey
/api/v2/user/getDetails
Actors(Consumers)
Parameters
String auth: authentication token
previously received
double lat: latitude of users current
position
long: longitude of users current
position
1. Location (Dynamic)
a. geo : latitude, longitude (geoLocation)
2. Preferences (Historical & “Acquired”)
a. Existing preference
- Bob loves bicycling followed
by a beer and lives on UES...
A fellow Yallzier just biked
East River Greenway,
followed by a beer at Pony
Bar. Yallzi renders this plan
to Bob.
- A fellow Yallzier Has Shared
Interests and fellow Yalzier is
a referrer
a. Shared
- Bob and Sue both like
Mexican, Sue loves Rosa
Mexicana. Yallzi asks, Will
Bob?)
- Sue has similar interests and
is a referer
a. Adjacent and could be “Acquired”
- Bob likes Ballets and Opera.
Sue loves this + Broadway
Show. Yallzi suggest
Broadway show)
- Sue has similar interests and
is a referrer
1. Availability (Dynamic)
a. time
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“user”: {
“name”: “Yallzier”,
“email”: “yallzi@yallzi.com”,
“phone”: “+1-2121212121”,
“socialLogin”: “FACEBOOK_Yallzier”,
“deviceToken”: [
“appleToken123”,
“appleToken234”,
...
]}
} }
/journey
Actors(Consumers)
/api/v2/user/getDetails Parameters
String auth: authentication token
previously received
double lat: latitude of users current
position
long: longitude of users current
position
1. Location (Dynamic)
a. geo : latitude, longitude (geoLocation)
1. Preferences (Historical & “Acquired”)
a. Existing preference
- Bob loves bicycling followed by
a beer and lives on UES... A
fellow Yallzier just biked East
River Greenway, followed by a
beer at Pony Bar. Yallzi
renders this plan to Bob.
- A fellow Yallzier Has Shared
Interests and fellow Yalzier is a
referrer
a. Shared
- Bob and Sue both like
Mexican, Sue loves Rosa
Mexicana. Yallzi asks, Will
Bob?)
- Sue has similar interests and is
a referer
a. Adjacent and could be “Acquired”
- Bob likes Ballets and Opera.
Sue loves this + Broadway
Show. Yallzi suggest Broadway
show)
- Sue has similar interests and is
a referrer
1. Availability (Dynamic)
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“user”: {
“name”: “Yallzier”,
“email”: “yallzi@yallzi.com”,
“phone”: “+1-2121212121”,
“socialLogin”: “FACEBOOK_Yallzier”,
“deviceToken”: [
“appleToken123”,
“appleToken234”,
...
]}
} }
Parameters
String auth: authentication token
previously received
double lat: latitude of users current
position
long: longitude of users current
position
/api/v2/user/getDetails
Actors(Consumers)
Parameters
String auth: authentication token
previously received
double lat: latitude of users current
position
long: longitude of users current
position
1. Location (Dynamic)
a. geo : latitude, longitude (geoLocation)
1. Preferences (Historical & “Acquired”)
a. Existing preference
- Bob loves bicycling followed by
a beer and lives on UES... A
fellow Yallzier just biked East
River Greenway, followed by a
beer at Pony Bar. Yallzi
renders this plan to Bob.
- A fellow Yallzier Has Shared
Interests and fellow Yalzier is a
referrer
a. Shared
- Bob and Sue both like
Mexican, Sue loves Rosa
Mexicana. Yallzi asks, Will
Bob?)
- Sue has similar interests and is
a referer
a. Adjacent and could be “Acquired”
- Bob likes Ballets and Opera.
Sue loves this + Broadway
Show. Yallzi suggest Broadway
show)
- Sue has similar interests and is
a referrer
1. Availability (Dynamic)
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“user”: {
“name”: “Yallzier”,
“email”: “yallzi@yallzi.com”,
“phone”: “+1-2121212121”,
“socialLogin”: “FACEBOOK_Yallzier”,
“deviceToken”: [
“appleToken123”,
“appleToken234”,
...
]}
} }
Parameters
String auth: authentication token
previously received
double lat: latitude of users current
position
long: longitude of users current
position
Actors(Consumers)
/api/v2/user/getDetails
1. Location (Static)
2. Vertical (Static)
a. Food & Dining
b. Recreation
c. Entertainment
d. Arts & Culture
e. Sports
3. Category
a. Mexican
4. Offerings-Deals (dynamic)
5. Hours
/journey
{
"message": "",
"status": "OK",
"data": {
"date": "10/26/14",!
"deals": [
{
"dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee",
"name": "Porfirio’s Tacos",!
"imageUrl": "http://api.yallzi.com/api/resources/rest.png",
"address": "1512 Holly Street",
"locality": "Austin",
"postcode": "78703",
"country": "us",
"type": "Restaurant",
"locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee",
"latitude": 30.255314,
"longitude": -97.730564,
"details": "",
"amount": 0,
"distance": 0.8936700034260777,
"categoryLabels": [
[
"Mexicanl",
“Tex Mex” ],
...
],
"hours": { "monday": [ ]}....
Parameters:
String auth: authentication token
double lat: latitude of users current
position
double long: longitude of users current
position"
String verticalId
int numberOfPeople: number of
participants"
long date: time stamp of event start"
double distance: search radius
double searchLat, if different from users
current position
double searchLong, if different from users
current position
Actors(Vendors)
/api/v2/deal/list
1. Location (Static)
2. Vertical (Static)
a. Food & Dining
b. Recreation
c. Entertainment
d. Arts & Culture
e. Sports
3. Category
a. Mexican
4. Offerings-Deals (dynamic)
5. Hours
/journey
{
"message": "",
"status": "OK",
"data": {
"date": "10/26/14",!
"deals": [
{
"dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee",
"name": "Porfirio’s Tacos",!
"imageUrl": "http://api.yallzi.com/api/resources/rest.png",
"address": "1512 Holly Street",
"locality": "Austin",
"postcode": "78703",
"country": "us",
"type": "Restaurant",
"locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee",
"latitude": 30.255314,
"longitude": -97.730564,
"details": "",
"amount": 0,
"distance": 0.8936700034260777,
"categoryLabels": [
[
"Mexicanl",
“Tex Mex” ],
...
],
"hours": { "monday": [ ]}....
Parameters:
String auth: authentication token
double lat: latitude of users current
position
double long: longitude of users current
position"
String verticalId
int numberOfPeople: number of
participants"
long date: time stamp of event start"
double distance: search radius
double searchLat, if different from users
current position
double searchLong, if different from users
current position
/api/v2/deal/list
Actors(Vendors)
1. Location (Static)
2. Vertical (Static)
a. Food & Dining
b. Recreation
c. Entertainment
d. Arts & Culture
e. Sports
3. Category
a. Mexican
4. Offerings-Deals (dynamic)
5. Hours
/journey
{
"message": "",
"status": "OK",
"data": {
"date": "10/26/14",!
"deals": [
{
"dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee",
"name": "Porfirio’s Tacos",!
"imageUrl": "http://api.yallzi.com/api/resources/rest.png",
"address": "1512 Holly Street",
"locality": "Austin",
"postcode": "78703",
"country": "us",
"type": "Restaurant",
"locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee",
"latitude": 30.255314,
"longitude": -97.730564,
"details": "",
"amount": 0,
"distance": 0.8936700034260777,
"categoryLabels": [
[
"Mexicanl",
“Tex Mex” ],
...
],
"hours": { "monday": [ ]}....
Parameters:
String auth: authentication token
double lat: latitude of users current
position
double long: longitude of users current
position"
String verticalId
int numberOfPeople: number of
participants"
long date: time stamp of event start"
double distance: search radius
double searchLat, if different from users
current position
double searchLong, if different from users
current position
Actors(Vendors)
/api/v2/deal/list
● Database Selection - MongoDB 2.6->3.0. DB size decreased by 70%
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 3.0
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
Analytics
an·a·lyt·ics
/ˌanl’itiks /
noun
1. the systematic computational analysis of data or statistics.
o information resulting from the systematic analysis of data or statistics.
We are Analyzing the ACTOR ACTIVITIES through Referrers and Referrals and Following…
We analyze
● intent( following)
● checkIn ( confirmed at the place)
● Scoop( reviews, after the visit)
With emphasis on people voting with their “feet”
/journey
User Activities include
● intent to do stuff and/or share it
● intent to “borrow” or reuse of these
plans
● Checked in Activities of Referrers
● Checked in Activities of Followers
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,!
“data”: [
{
“id”: “abcdef1234”,
“referral”: “abcdefabcdef”
...}, ...] }
/journey
Referrer/Referral new Concept
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,!
“data”: [
{
“id”: “abcdef1234”,
“referral”: “abcdefabcdef”
...}, ...] }
User Activities include
● intent to do stuff and/or share it
● intent to “borrow” or reuse of these
plans
● Checked in Activities of Referrers
● Checked in Activities of Followers
Referrer/Referral new Concept
User Activities include
● intent to do stuff and/or share it
● intent to “borrow” or reuse of these
plans
● Checked in Activities of Referrers
● Checked in Activities of Followers
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,!
“data”: [
{
“id”: “abcdef1234”,
“referral”: “abcdefabcdef”
...}, ...] }
Referrer/Referral new Concept
User Activities include
● intent to do stuff and/or share it
● intent to “borrow” or reuse of these
plans
● Checked in Activities of Referrers
● Checked in Activities of Followers
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,!
“data”: [
{
“id”: “abcdef1234”,
“referral”: “abcdefabcdef”
...}, ...] }
Referrer/Referral new Concept
Analytics
... And ... Secret Potion:
Yallzi enables:
● suggestions in your current or desired location that match your interests
● suggestions for “acquired” interests (delta between having common and different preferences)
● identification of emerging trends
● preparation for personal recommendations based on your and people with common interests behavior
● identification of new ratings model (people vote with their feet)
/journey
● Activities collection is sharable
● Initial activity owner is a Referrer.
Referrals are ‘followed”
● Vote signifies acceptance
● Ratings and Reviews=People Vote
with their feet + Comments- is
mined and analyzed real time
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,
“YallziID”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” : “ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “This is a comment”
}, ...
]}
api/v2/yallzi/get
Activity Log
PARAMs:
String auth: authentication token
previously received
Double lat: latitude of users current
position
Double long: longitude of users
current position"
String yallziId: event to update"
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,
“YallziID”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” : “ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “This is a comment”
}, ...
]}
● Activities collection is sharable
● Initial activity owner is a Referrer.
Referrals are ‘followed”
● Vote signifies acceptance
● Ratings and Reviews=People
Vote with their feet + Comments-
is mined and analyzed real time
api/v2/yallzi/get
Activity Log
PARAMs:
String auth: authentication token
previously received
Double lat: latitude of users current
position
Double long: longitude of users
current position"
String yallziId: event to update"
/journey
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,
“YallziID”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” : “ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “This is a comment”
}, ...
]}
● Activities collection is sharable
● Initial activity owner is a Referrer.
Referrals are ‘followed”
● Vote signifies acceptance
● Ratings and Reviews=People Vote
with their feet + Comments- is
mined and analyzed real time
api/v2/yallzi/get
Activity Log
PARAMs:
String auth: authentication token
previously received
Double lat: latitude of users current
position
Double long: longitude of users
current position"
String yallziId: event to update"
/journey
Actor Activity
{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,
“YallziID”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” : “ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “This is a comment”
}, ...
]}
PARAMs: String auth: authentication
token previously received double lat:
latitude of users current position
double long: longitude of users current
position"
String yallziId: event to update"
● Activities collection is sharable
● Initial activity owner is a Referrer.
Referrals are ‘followed”
● Vote signifies acceptance
● Ratings and Reviews=People Vote
with their feet + Comments- is
mined and analyzed real time
api/v2/yallzi/get
● Database Selection - MongoDB 3.0
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
{{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,!
“children”: [“xxx1”, “xxx2”, ...]
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” :
“ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “Looking for a table for 1”
}, ...
/journey
Vendor Direct Messaging
● Message - Direct Interaction with the vendor (online)
● Consumer initiates bidirectional conversation with
business/brand
● Analyzed to provide service
● Can be private or public and become a hospitality message
that all consumers can view by interacting with a link.
/journey
Vendor Direct Messaging
● Message - Direct Interaction with the vendor (online)
● Consumer initiates bidirectional conversation with
business/brand
● Analyzed to provide service
● Can be private or public and become a hospitality message
that all consumers can view by interacting with a link.
{{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,!
“children”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” :
“ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “table for 1,quiet place?”
}, ...
/journey
Vendor Direct Messaging
● Message - Direct Interaction with the vendor (online)
● Consumer initiates bidirectional conversation with
business/brand
● Analyzed to provide service
● Can be private or public and become a hospitality message
that all consumers can view by interacting with a link.
{{
"message": "",
"status": "OK",
"auth": “156D66FE8B9097A336DF325589837E674B”,
“data”: {
“id”: “xxx”,
“date”: 1445901561064,!
“dealId”: “yyy”,!
“children”: [“xxx1”, “xxx2”, ...],
“groupId”: “541f149be4b0c4c655ad5721”,
“referral”: “12345677”,
“votes”: [
“bead43122” : 0,
“edba43edf” : 1
],
“comments”: [ {
“user” :
“ab12345678901234567”,
“timestamp” : 14455667788,
“text” : “table for 1,quiet place?”
}, ...
/journey
Vendor Direct Messaging
● Message - Direct Interaction with the vendor (online)
● Consumer initiates bidirectional conversation with
business/brand
● Analyzed to provide service
● Can be private or public and become a hospitality
message that all consumers can view by interacting
with a link.
● Database Selection - MongoDB 3.0
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
Personal “funBox” Collection
● Your most frequent referrers can
be pre-processed
○ Yallzi personal “funBox”
/journey
Grouping and Deltas
{WIP}
Will include:
- Plans of most frequently used
referrers
- Does not require any action on
user part
- Analyses Yallzier’s activity log
● Database Selection - MongoDB 3.0
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment : AWS, MMS
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
● Database Selection - MongoDB 3.0
● Design
○ DB’s: POI, Actors, Actor Activities(Analytics)
○ Access : API
○ Indexing: Frugal, don’t over-index to avoid degradation
○ Availability: 24/7 365 - revisit at deployment meeting
○ Scale: targeting 100,000 active users in 3-6 months
○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible
● Schema
○ Actors
○ Analytics
○ Advertising Secret Potion
○ Personalize This!
○ Deployment : AWS, MMS
/journey
Building BackEnd: Data Meets The App
while both constantly Evolve
Outcome, Next and Recap
Outcome
- Dream to Prototype : 2.5 weeks
- Prototype to Alpha: 1 month
- iOS App development: ~5 months
- Android App development: ~ 2 months
- Suspended
- Rebranded and Pivoted 5 months into Dev. Adjust within 2 weeks
- Beta Releases: twice a week
- AWS hosting $36 a month
- MongoDB : rock solid
/outcome, next
Recap (our lessons)
- MongoDB is great fit for bootstrapped startUps like Yallzi or for an innovative project with aggressive goals
- Take risks, but stick to the following:
- Simplify everything from storage to aggregation downstream
- Understand what you are storing and where (vis a vis static and dynamic data)
- Determine what data will be made public/private
- Don’t go Index happy
- Flexibility is not throwing the kitchen sink in DB. Flexibility is for growth and dynamics of your business.
- Overuse of database strengths can create a big SPOF
- Simplify access patterns/abstract
- If it is too easy to do, you might not have thought of something
- Have fun! It will work!
/outcome, next
What’s Next
- Development:
- Completing within next few weeks
- Beta launch:
- Follow us on Twitter @Yallzi or @TheOneTechie for the date to install the app and Crowd-Fun the
internet
- We are looking for partners and developers
- Funding :
- We are going strong for the first prize in crowdfunding drives
- We are in conversations with TX based accelerators
- We love talking to investors even those who want to say NO!
- Community:
- We are looking for advise and happy to share our thoughts
- Future:
- See y’all on Yallzi and at MongoDB World next year
- Philosophy:
- Do one thing, do it right, test, repeat!
/outcome, next
Hit is on Twitter
- @YALLZI
- @TheOneTechie
Yes, We’re Hiring:
- http://yallzi.com/internships/
Eureka Moments:
- http://yallzi.com/internships/our-eureka-moments/
Angel Profile:
- https://angel.co/yallzi
On Social Choice Data:
- https://www.linkedin.com/pulse/article/social-choice-data-steve-bond
- https://www.linkedin.com/pulse/how-do-groups-decide-social-choice-
data-part-2-steve-bond
On App Adoption:
- https://www.linkedin.com/pulse/article/first-date-app-steve-bond
- https://www.linkedin.com/pulse/article/userapp-dating-steve-bond
Holly Street Garage, Austin, Texas
----------------------------------------------
Also Found on:
KickStarter,
LaunchLeader,
CrunchBase..
and other fine ‘net sites
/outcome, next
Thank you
/Tricks
Actually, there are no tricks, whatsoever… except
- be “lazy” developers making the best of the tools we build
- provide users, be they sharers, benefactors, or business owners with simple tools:
- map and ‘save’ their most memorable moments and share it with y’all
- see others best memorable moments
- reach out to vendors to invite them into the conversation
For this we needed a thought through, light-weight and flexible model that allows us to build/add
additional artifacts and store them.
We also decided to bank of reverse of Similar Interests and see if people might want to discover
stuff they never experiences before. We are still working on it
We are looking forward to learn from reputable companies and scrappy startUps!
What challenges do you solve when you don’t get paid for it?
● A revolution in combining social choice data with behavioral data
that results in Kick Ass User Experience
● New Dimension of Advertising
● We don’t reinvent the wheel, even though we tried 17 times and
came up with helium inflatable wheels supporting a beach chair
with 2 beers and my puppy than annoys me when I work
/What We Do
#startUp Recent SCRUM NOTES
● “Man, where did all those competitors come from?”
● VC Breaking News: said they Loved the idea and we definitely should.. call them after we have 1 million DL’s.
● Alerts: Looks like we hacked our own bank account but due to error in the code we left 23 cents. Whose code is
it, i don’t care whose money..
● Battle of API versus App developer is won by API. After all: iPhone processing power is probably greater than
our server!

More Related Content

Similar to Building an Analytics Engine on MongoDB to Revolutionize Advertising

Pre-Aggregated Analytics And Social Feeds Using MongoDB
Pre-Aggregated Analytics And Social Feeds Using MongoDBPre-Aggregated Analytics And Social Feeds Using MongoDB
Pre-Aggregated Analytics And Social Feeds Using MongoDBRackspace
 
Run your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloudRun your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloudwesley chun
 
uMobile, I’m Mobile, We’re All Mobile!!
uMobile, I’m Mobile, We’re All Mobile!!uMobile, I’m Mobile, We’re All Mobile!!
uMobile, I’m Mobile, We’re All Mobile!!Aaron Grant
 
MassNow - intelligent church locator
MassNow - intelligent church locatorMassNow - intelligent church locator
MassNow - intelligent church locatorJakub Žitný
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloudwesley chun
 
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015Rapid mobile development with Ionic framework - Voxxdays Ticino 2015
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015Alessio Delmonti
 
Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Bastian Grimm
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloudwesley chun
 
Getting started with Couchbase
Getting started with CouchbaseGetting started with Couchbase
Getting started with CouchbaseJosue Bustos
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsAndrew Brust
 
Agile UX - expanded and reworked
Agile UX - expanded and reworkedAgile UX - expanded and reworked
Agile UX - expanded and reworkedsparrk
 
How to build and run a big data platform in the 21st century
How to build and run a big data platform in the 21st centuryHow to build and run a big data platform in the 21st century
How to build and run a big data platform in the 21st centuryAli Dasdan
 
Building modern applications in the cloud
Building modern applications in the cloudBuilding modern applications in the cloud
Building modern applications in the cloudCommit Software Sh.p.k.
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jCorie Pollock
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Pythonwesley chun
 
Presentation - Android App Development - Mr. Samrakchan
Presentation - Android App Development - Mr. SamrakchanPresentation - Android App Development - Mr. Samrakchan
Presentation - Android App Development - Mr. SamrakchanMobileNepal
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsAlius Petraška
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglotTugdual Grall
 

Similar to Building an Analytics Engine on MongoDB to Revolutionize Advertising (20)

Pre-Aggregated Analytics And Social Feeds Using MongoDB
Pre-Aggregated Analytics And Social Feeds Using MongoDBPre-Aggregated Analytics And Social Feeds Using MongoDB
Pre-Aggregated Analytics And Social Feeds Using MongoDB
 
Run your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloudRun your code serverlessly on Google's open cloud
Run your code serverlessly on Google's open cloud
 
uMobile, I’m Mobile, We’re All Mobile!!
uMobile, I’m Mobile, We’re All Mobile!!uMobile, I’m Mobile, We’re All Mobile!!
uMobile, I’m Mobile, We’re All Mobile!!
 
MassNow - intelligent church locator
MassNow - intelligent church locatorMassNow - intelligent church locator
MassNow - intelligent church locator
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloud
 
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015Rapid mobile development with Ionic framework - Voxxdays Ticino 2015
Rapid mobile development with Ionic framework - Voxxdays Ticino 2015
 
Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018Welcome to a new reality - DeepCrawl Webinar 2018
Welcome to a new reality - DeepCrawl Webinar 2018
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 
Getting started with Couchbase
Getting started with CouchbaseGetting started with Couchbase
Getting started with Couchbase
 
Big Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI ProsBig Data and NoSQL for Database and BI Pros
Big Data and NoSQL for Database and BI Pros
 
Agile UX - expanded and reworked
Agile UX - expanded and reworkedAgile UX - expanded and reworked
Agile UX - expanded and reworked
 
How to build and run a big data platform in the 21st century
How to build and run a big data platform in the 21st centuryHow to build and run a big data platform in the 21st century
How to build and run a big data platform in the 21st century
 
Building modern applications in the cloud
Building modern applications in the cloudBuilding modern applications in the cloud
Building modern applications in the cloud
 
Polyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4jPolyglot Persistence with MongoDB and Neo4j
Polyglot Persistence with MongoDB and Neo4j
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
Presentation - Android App Development - Mr. Samrakchan
Presentation - Android App Development - Mr. SamrakchanPresentation - Android App Development - Mr. Samrakchan
Presentation - Android App Development - Mr. Samrakchan
 
PykQuery.js
PykQuery.jsPykQuery.js
PykQuery.js
 
I knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile appsI knew there had to be a better way to build mobile apps
I knew there had to be a better way to build mobile apps
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
Google Developers Overview Deck 2015
Google Developers Overview Deck 2015Google Developers Overview Deck 2015
Google Developers Overview Deck 2015
 

More from MongoDB

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump StartMongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB
 

More from MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 

Recently uploaded

IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Alison B. Lowndes
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Product School
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationZilliz
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...Elena Simperl
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyJohn Staveley
 

Recently uploaded (20)

IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 

Building an Analytics Engine on MongoDB to Revolutionize Advertising

  • 1. Building an Analytics Engine on MongoDB to Revolutionize Advertising @ Yallzi /crowd-Fun the Internet
  • 2. “Hello (MongoDB) World!” Steve and ALL@YALLZI { “title”: ”yallzi@yallzi”, “email”: ”steve@yallzi.com”, “linkedin”: ”https://www.linkedin.com/in/stevebond”, “twitter”: [“company”: “@YALLZI”, “personal”: “@TheOneTechie”], “web”: “yallzi.com”, "location": "garage/Austin_TX" }
  • 3. Agenda / About / Challenges, requirements / Journey / Outcome, next /crowd-Fun the audience
  • 8. Crowd-Fun the internet. Started *not* that long ago... in a galaxy that involved moving from NYC to Austin 1. Lost all local NYC hangouts over two short nights 2. Is there a guide to living like an Austin local and get to know business owners? 3. No excuses not to unpack boxes. We asked ourselves: Why there is no app for this? /about Dreaming of.. - Not Unpacking! - Cold Beer - Movie, - Local Museum - BBQ! I am in Texas... Can’t a local just share the best places to hangout and let me chat vendors up ??!
  • 9. /about I want to Share my City: “My Stay-cation is someone’s perfect Vacation”: I’m searching for an easier way to help others experience the town I love. Family and friends constantly ask for recommendations for their visits. They share these with their friends and families… and then I get calls from people they’ve shared it with who I don’t even know. AND at the worst times of the day. There’s gotta be an easier way to share the town I love… I want Advertising that works for me: “Invite vendors to your dialogue” I am not sure which venues to select. I wish I could have a dialogue with multiple vendors to help me pick the best spots for my group and needs… I wish my vendors fought for my business, maybe through hand-picked discounts and freebies? I’m sure they would like this personal connection too. I want to Explore New Cities: “Someone’s Stay-cation is my perfect Vacation” I am planning a vacation. We love traveling like locals. Hours of scouring the web for perfect places are turning to weeks… This is becoming a second job! We just want to find a local’s perfect staycation. Isn’t there an easier way for me to experience Places others love?
  • 11.
  • 12. YALLZI helps you share all your favorite places with friends or the whole world. YALLZI helps you explore new worlds that other Yallziers have shared. YALLZI breaks the barrier between Vendor and Consumer. /about Vision
  • 14. /challenges, requirements Strength-Skills ● C, C++, Java ● Product Development ● Content Management ● SQL - Any RDBMS since mid 1990s ● NoSQL - 5 years of dev and prod ● Data Warehousing ● Ad Servers and Analytics ● Proven ability to squeeze 4 weeks of work out of 7 days of free demo version ● Mean Extra Dry Martini’s
  • 15. /challenges, requirements Needs ● Data set of POI covering major verticals in US and International ● Ensure parallel development of web, iOS and Android apps ● APP that does not need a lot of design work initially but will tell a story and please investors ● Multi-language support ● Save Time and Money on Everything ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps
  • 16. /challenges, requirements ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps ● APP that does not need a lot of design work initially but will tell a story and please investors ● Multi-language support ● Save Time and Money on Everything ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Solutions
  • 17. /challenges, requirements Solutions ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design work initially but will tell a story and please investors ● Multi-language support ● Save Time and Money on Everything ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps
  • 18. /challenges, requirements ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design … Hold Expensive Design - go simple ● Multi-language support ● Save Time and Money on Everything ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Solutions
  • 19. /challenges, requirements ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design … Hold Expensive Design - go simple ● Multi-language support Pick A DB! ● Save Time and Money on Everything ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Solutions
  • 20. /challenges, requirements ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design … Hold Expensive Design - go simple ● Multi-language support Pick A DB! ● Save Time and Money on Everything Go Open Source ● Lighting fast speed : ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Solutions
  • 21. /challenges, requirements ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design … Hold Expensive Design - go simple ● Multi-language support Pick A DB! ● Save Time and Money on Everything Go Open Source ● Lighting fast speed : Pick A DB! ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Solutions
  • 22. ● Data set of POI covering major verticals in US and International -- FACTUAL, US Based POI ● Ensure parallel development of web, iOS and Android apps RESTful dev ● APP that does not need a lot of design … Hold Expensive Design - go simple ● Multi-language support Pick A DB! ● Save Time and Money on Everything Go Open Source ● Lighting fast speed : Pick A DB! ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real time analytics collection and processing to power apps Pick A DB! /challenges, requirements Solutions
  • 23. - expressive query language - indexing- GeoIndexing - performance - scalability - flexibility - no need to learn new languages - easy to use management tools - a vendor behind the product - opensource / strong community - run well on Cloud (deployment architecture flexibility) /challenges, requirements Pick a DB... SQL noSQL
  • 24. Select * from actors a, activities ac, history h where a.actorID=...
  • 25. Selecting MongoDB ● Multi-language support ● Save Time and Money on Everything - Open Source/Supported by Vendor ● Lightning fast speed to ○ vision → prototype → alpha/beta → GA ○ iterate ○ scale ○ data and geo data retrieval ○ DB is NOT a bottleneck for frequent app builds ● Close to real-time analytics collection and processing to power apps /challenges, requirements
  • 27. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access ○ Indexing ○ Availability ○ Scale ○ Flexibility ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 28. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing ○ Availability ○ Scale ○ Flexibility ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve All calls are made as HTTP requests to one common backend residing on one URL and serviced by one application, so all calls will have a common prefix: http://<server>:<port>/api
  • 29. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability ○ Scale ○ Flexibility ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 30. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale ○ Flexibility ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 31. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 32. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 33. ● Database Selection - MongoDB 2.6 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 34. 1. Location (Dynamic) a. geo : latitude, longitude (geoLocation) 2. Preferences (Historical & “Acquired”) a. Existing preference - Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. - A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer a. Shared - Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) - Sue has similar interests and is a referer a. Adjacent and could be “Acquired” - Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) - Sue has similar interests and is a referrer 1. Availability (Dynamic) a. time { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “user”: { “name”: “Yallzier”, “email”: “yallzi@yallzi.com”, “phone”: “+1-2121212121”, “socialLogin”: “FACEBOOK_Yallzier”, “deviceToken”: [ “appleToken123”, “appleToken234”, ... ]} } } /journey /api/v2/user/getDetails Actors(Consumers) Parameters String auth: authentication token previously received double lat: latitude of users current position long: longitude of users current position
  • 35. 1. Location (Dynamic) a. geo : latitude, longitude (geoLocation) 2. Preferences (Historical & “Acquired”) a. Existing preference - Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. - A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer a. Shared - Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) - Sue has similar interests and is a referer a. Adjacent and could be “Acquired” - Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) - Sue has similar interests and is a referrer 1. Availability (Dynamic) a. time { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “user”: { “name”: “Yallzier”, “email”: “yallzi@yallzi.com”, “phone”: “+1-2121212121”, “socialLogin”: “FACEBOOK_Yallzier”, “deviceToken”: [ “appleToken123”, “appleToken234”, ... ]} } } /journey Actors(Consumers) /api/v2/user/getDetails Parameters String auth: authentication token previously received double lat: latitude of users current position long: longitude of users current position
  • 36. 1. Location (Dynamic) a. geo : latitude, longitude (geoLocation) 1. Preferences (Historical & “Acquired”) a. Existing preference - Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. - A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer a. Shared - Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) - Sue has similar interests and is a referer a. Adjacent and could be “Acquired” - Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) - Sue has similar interests and is a referrer 1. Availability (Dynamic) /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “user”: { “name”: “Yallzier”, “email”: “yallzi@yallzi.com”, “phone”: “+1-2121212121”, “socialLogin”: “FACEBOOK_Yallzier”, “deviceToken”: [ “appleToken123”, “appleToken234”, ... ]} } } Parameters String auth: authentication token previously received double lat: latitude of users current position long: longitude of users current position /api/v2/user/getDetails Actors(Consumers) Parameters String auth: authentication token previously received double lat: latitude of users current position long: longitude of users current position
  • 37. 1. Location (Dynamic) a. geo : latitude, longitude (geoLocation) 1. Preferences (Historical & “Acquired”) a. Existing preference - Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. - A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer a. Shared - Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) - Sue has similar interests and is a referer a. Adjacent and could be “Acquired” - Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) - Sue has similar interests and is a referrer 1. Availability (Dynamic) /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “user”: { “name”: “Yallzier”, “email”: “yallzi@yallzi.com”, “phone”: “+1-2121212121”, “socialLogin”: “FACEBOOK_Yallzier”, “deviceToken”: [ “appleToken123”, “appleToken234”, ... ]} } } Parameters String auth: authentication token previously received double lat: latitude of users current position long: longitude of users current position Actors(Consumers) /api/v2/user/getDetails
  • 38. 1. Location (Static) 2. Vertical (Static) a. Food & Dining b. Recreation c. Entertainment d. Arts & Culture e. Sports 3. Category a. Mexican 4. Offerings-Deals (dynamic) 5. Hours /journey { "message": "", "status": "OK", "data": { "date": "10/26/14",! "deals": [ { "dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee", "name": "Porfirio’s Tacos",! "imageUrl": "http://api.yallzi.com/api/resources/rest.png", "address": "1512 Holly Street", "locality": "Austin", "postcode": "78703", "country": "us", "type": "Restaurant", "locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee", "latitude": 30.255314, "longitude": -97.730564, "details": "", "amount": 0, "distance": 0.8936700034260777, "categoryLabels": [ [ "Mexicanl", “Tex Mex” ], ... ], "hours": { "monday": [ ]}.... Parameters: String auth: authentication token double lat: latitude of users current position double long: longitude of users current position" String verticalId int numberOfPeople: number of participants" long date: time stamp of event start" double distance: search radius double searchLat, if different from users current position double searchLong, if different from users current position Actors(Vendors) /api/v2/deal/list
  • 39. 1. Location (Static) 2. Vertical (Static) a. Food & Dining b. Recreation c. Entertainment d. Arts & Culture e. Sports 3. Category a. Mexican 4. Offerings-Deals (dynamic) 5. Hours /journey { "message": "", "status": "OK", "data": { "date": "10/26/14",! "deals": [ { "dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee", "name": "Porfirio’s Tacos",! "imageUrl": "http://api.yallzi.com/api/resources/rest.png", "address": "1512 Holly Street", "locality": "Austin", "postcode": "78703", "country": "us", "type": "Restaurant", "locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee", "latitude": 30.255314, "longitude": -97.730564, "details": "", "amount": 0, "distance": 0.8936700034260777, "categoryLabels": [ [ "Mexicanl", “Tex Mex” ], ... ], "hours": { "monday": [ ]}.... Parameters: String auth: authentication token double lat: latitude of users current position double long: longitude of users current position" String verticalId int numberOfPeople: number of participants" long date: time stamp of event start" double distance: search radius double searchLat, if different from users current position double searchLong, if different from users current position /api/v2/deal/list Actors(Vendors)
  • 40. 1. Location (Static) 2. Vertical (Static) a. Food & Dining b. Recreation c. Entertainment d. Arts & Culture e. Sports 3. Category a. Mexican 4. Offerings-Deals (dynamic) 5. Hours /journey { "message": "", "status": "OK", "data": { "date": "10/26/14",! "deals": [ { "dealId": “DINE_184a2409-7d4c-4854-ad1c-e7de099064ee", "name": "Porfirio’s Tacos",! "imageUrl": "http://api.yallzi.com/api/resources/rest.png", "address": "1512 Holly Street", "locality": "Austin", "postcode": "78703", "country": "us", "type": "Restaurant", "locationId": "184a2409-7d4c-4854-ad1c-e7de099064ee", "latitude": 30.255314, "longitude": -97.730564, "details": "", "amount": 0, "distance": 0.8936700034260777, "categoryLabels": [ [ "Mexicanl", “Tex Mex” ], ... ], "hours": { "monday": [ ]}.... Parameters: String auth: authentication token double lat: latitude of users current position double long: longitude of users current position" String verticalId int numberOfPeople: number of participants" long date: time stamp of event start" double distance: search radius double searchLat, if different from users current position double searchLong, if different from users current position Actors(Vendors) /api/v2/deal/list
  • 41. ● Database Selection - MongoDB 2.6->3.0. DB size decreased by 70% ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 42. ● Database Selection - MongoDB 3.0 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 43. Analytics an·a·lyt·ics /ˌanl’itiks / noun 1. the systematic computational analysis of data or statistics. o information resulting from the systematic analysis of data or statistics. We are Analyzing the ACTOR ACTIVITIES through Referrers and Referrals and Following… We analyze ● intent( following) ● checkIn ( confirmed at the place) ● Scoop( reviews, after the visit) With emphasis on people voting with their “feet” /journey
  • 44. User Activities include ● intent to do stuff and/or share it ● intent to “borrow” or reuse of these plans ● Checked in Activities of Referrers ● Checked in Activities of Followers { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”,! “data”: [ { “id”: “abcdef1234”, “referral”: “abcdefabcdef” ...}, ...] } /journey Referrer/Referral new Concept
  • 45. /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”,! “data”: [ { “id”: “abcdef1234”, “referral”: “abcdefabcdef” ...}, ...] } User Activities include ● intent to do stuff and/or share it ● intent to “borrow” or reuse of these plans ● Checked in Activities of Referrers ● Checked in Activities of Followers Referrer/Referral new Concept
  • 46. User Activities include ● intent to do stuff and/or share it ● intent to “borrow” or reuse of these plans ● Checked in Activities of Referrers ● Checked in Activities of Followers /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”,! “data”: [ { “id”: “abcdef1234”, “referral”: “abcdefabcdef” ...}, ...] } Referrer/Referral new Concept
  • 47. User Activities include ● intent to do stuff and/or share it ● intent to “borrow” or reuse of these plans ● Checked in Activities of Referrers ● Checked in Activities of Followers /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”,! “data”: [ { “id”: “abcdef1234”, “referral”: “abcdefabcdef” ...}, ...] } Referrer/Referral new Concept
  • 48. Analytics ... And ... Secret Potion: Yallzi enables: ● suggestions in your current or desired location that match your interests ● suggestions for “acquired” interests (delta between having common and different preferences) ● identification of emerging trends ● preparation for personal recommendations based on your and people with common interests behavior ● identification of new ratings model (people vote with their feet) /journey
  • 49. ● Activities collection is sharable ● Initial activity owner is a Referrer. Referrals are ‘followed” ● Vote signifies acceptance ● Ratings and Reviews=People Vote with their feet + Comments- is mined and analyzed real time /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”, “YallziID”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “This is a comment” }, ... ]} api/v2/yallzi/get Activity Log PARAMs: String auth: authentication token previously received Double lat: latitude of users current position Double long: longitude of users current position" String yallziId: event to update"
  • 50. /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”, “YallziID”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “This is a comment” }, ... ]} ● Activities collection is sharable ● Initial activity owner is a Referrer. Referrals are ‘followed” ● Vote signifies acceptance ● Ratings and Reviews=People Vote with their feet + Comments- is mined and analyzed real time api/v2/yallzi/get Activity Log PARAMs: String auth: authentication token previously received Double lat: latitude of users current position Double long: longitude of users current position" String yallziId: event to update"
  • 51. /journey { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”, “YallziID”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “This is a comment” }, ... ]} ● Activities collection is sharable ● Initial activity owner is a Referrer. Referrals are ‘followed” ● Vote signifies acceptance ● Ratings and Reviews=People Vote with their feet + Comments- is mined and analyzed real time api/v2/yallzi/get Activity Log PARAMs: String auth: authentication token previously received Double lat: latitude of users current position Double long: longitude of users current position" String yallziId: event to update"
  • 52. /journey Actor Activity { "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”, “YallziID”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “This is a comment” }, ... ]} PARAMs: String auth: authentication token previously received double lat: latitude of users current position double long: longitude of users current position" String yallziId: event to update" ● Activities collection is sharable ● Initial activity owner is a Referrer. Referrals are ‘followed” ● Vote signifies acceptance ● Ratings and Reviews=People Vote with their feet + Comments- is mined and analyzed real time api/v2/yallzi/get
  • 53. ● Database Selection - MongoDB 3.0 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 54. {{ "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”,! “children”: [“xxx1”, “xxx2”, ...] “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “Looking for a table for 1” }, ... /journey Vendor Direct Messaging ● Message - Direct Interaction with the vendor (online) ● Consumer initiates bidirectional conversation with business/brand ● Analyzed to provide service ● Can be private or public and become a hospitality message that all consumers can view by interacting with a link.
  • 55. /journey Vendor Direct Messaging ● Message - Direct Interaction with the vendor (online) ● Consumer initiates bidirectional conversation with business/brand ● Analyzed to provide service ● Can be private or public and become a hospitality message that all consumers can view by interacting with a link.
  • 56. {{ "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”,! “children”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “table for 1,quiet place?” }, ... /journey Vendor Direct Messaging ● Message - Direct Interaction with the vendor (online) ● Consumer initiates bidirectional conversation with business/brand ● Analyzed to provide service ● Can be private or public and become a hospitality message that all consumers can view by interacting with a link.
  • 57. {{ "message": "", "status": "OK", "auth": “156D66FE8B9097A336DF325589837E674B”, “data”: { “id”: “xxx”, “date”: 1445901561064,! “dealId”: “yyy”,! “children”: [“xxx1”, “xxx2”, ...], “groupId”: “541f149be4b0c4c655ad5721”, “referral”: “12345677”, “votes”: [ “bead43122” : 0, “edba43edf” : 1 ], “comments”: [ { “user” : “ab12345678901234567”, “timestamp” : 14455667788, “text” : “table for 1,quiet place?” }, ... /journey Vendor Direct Messaging ● Message - Direct Interaction with the vendor (online) ● Consumer initiates bidirectional conversation with business/brand ● Analyzed to provide service ● Can be private or public and become a hospitality message that all consumers can view by interacting with a link.
  • 58. ● Database Selection - MongoDB 3.0 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 59. Personal “funBox” Collection ● Your most frequent referrers can be pre-processed ○ Yallzi personal “funBox” /journey Grouping and Deltas {WIP} Will include: - Plans of most frequently used referrers - Does not require any action on user part - Analyses Yallzier’s activity log
  • 60. ● Database Selection - MongoDB 3.0 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment : AWS, MMS /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 61. ● Database Selection - MongoDB 3.0 ● Design ○ DB’s: POI, Actors, Actor Activities(Analytics) ○ Access : API ○ Indexing: Frugal, don’t over-index to avoid degradation ○ Availability: 24/7 365 - revisit at deployment meeting ○ Scale: targeting 100,000 active users in 3-6 months ○ Flexibility : Don’t throw kitchen sink in DB. Keep DB’s collections as slim as possible ● Schema ○ Actors ○ Analytics ○ Advertising Secret Potion ○ Personalize This! ○ Deployment : AWS, MMS /journey Building BackEnd: Data Meets The App while both constantly Evolve
  • 63. Outcome - Dream to Prototype : 2.5 weeks - Prototype to Alpha: 1 month - iOS App development: ~5 months - Android App development: ~ 2 months - Suspended - Rebranded and Pivoted 5 months into Dev. Adjust within 2 weeks - Beta Releases: twice a week - AWS hosting $36 a month - MongoDB : rock solid /outcome, next
  • 64. Recap (our lessons) - MongoDB is great fit for bootstrapped startUps like Yallzi or for an innovative project with aggressive goals - Take risks, but stick to the following: - Simplify everything from storage to aggregation downstream - Understand what you are storing and where (vis a vis static and dynamic data) - Determine what data will be made public/private - Don’t go Index happy - Flexibility is not throwing the kitchen sink in DB. Flexibility is for growth and dynamics of your business. - Overuse of database strengths can create a big SPOF - Simplify access patterns/abstract - If it is too easy to do, you might not have thought of something - Have fun! It will work! /outcome, next
  • 65. What’s Next - Development: - Completing within next few weeks - Beta launch: - Follow us on Twitter @Yallzi or @TheOneTechie for the date to install the app and Crowd-Fun the internet - We are looking for partners and developers - Funding : - We are going strong for the first prize in crowdfunding drives - We are in conversations with TX based accelerators - We love talking to investors even those who want to say NO! - Community: - We are looking for advise and happy to share our thoughts - Future: - See y’all on Yallzi and at MongoDB World next year - Philosophy: - Do one thing, do it right, test, repeat! /outcome, next
  • 66. Hit is on Twitter - @YALLZI - @TheOneTechie Yes, We’re Hiring: - http://yallzi.com/internships/ Eureka Moments: - http://yallzi.com/internships/our-eureka-moments/ Angel Profile: - https://angel.co/yallzi On Social Choice Data: - https://www.linkedin.com/pulse/article/social-choice-data-steve-bond - https://www.linkedin.com/pulse/how-do-groups-decide-social-choice- data-part-2-steve-bond On App Adoption: - https://www.linkedin.com/pulse/article/first-date-app-steve-bond - https://www.linkedin.com/pulse/article/userapp-dating-steve-bond Holly Street Garage, Austin, Texas ---------------------------------------------- Also Found on: KickStarter, LaunchLeader, CrunchBase.. and other fine ‘net sites /outcome, next
  • 68. /Tricks Actually, there are no tricks, whatsoever… except - be “lazy” developers making the best of the tools we build - provide users, be they sharers, benefactors, or business owners with simple tools: - map and ‘save’ their most memorable moments and share it with y’all - see others best memorable moments - reach out to vendors to invite them into the conversation For this we needed a thought through, light-weight and flexible model that allows us to build/add additional artifacts and store them. We also decided to bank of reverse of Similar Interests and see if people might want to discover stuff they never experiences before. We are still working on it We are looking forward to learn from reputable companies and scrappy startUps!
  • 69. What challenges do you solve when you don’t get paid for it? ● A revolution in combining social choice data with behavioral data that results in Kick Ass User Experience ● New Dimension of Advertising ● We don’t reinvent the wheel, even though we tried 17 times and came up with helium inflatable wheels supporting a beach chair with 2 beers and my puppy than annoys me when I work /What We Do
  • 70. #startUp Recent SCRUM NOTES ● “Man, where did all those competitors come from?” ● VC Breaking News: said they Loved the idea and we definitely should.. call them after we have 1 million DL’s. ● Alerts: Looks like we hacked our own bank account but due to error in the code we left 23 cents. Whose code is it, i don’t care whose money.. ● Battle of API versus App developer is won by API. After all: iPhone processing power is probably greater than our server!

Editor's Notes

  1. Welcome to Yallzi way of Building an Analytics Engine on MongoDB to Revolutionize Advertising. Dont put on your seatbelts but please open up your curious minds as we are about to go fast into untangling and simplifying the complex problems
  2. I’m Steve Bond, Founder of Yallzi, where we believe your staycation is someone elses’s perfect vacation -- and vice vera! We’re crowd-funning the internet. But more on that later. In today’s session, we’ll explore how Yallzi is building an analytics engine to power our product and create a new dimension of advertising. We’ll review how we made our decisions to herd the cats of technology, schema, architecture, analytics and more as well as how MongoDB allows us to iterate quickly -- which is critical for our bootstrapped startup. Before we get starter, Who is in the room: (ops, dev, business)?? And what about MongoDB experience level… who is just exploring…. developing;... in production… TRUE EXPERTS?... Great! this is the perfect group! let’s get started
  3. we’ll start with an “about” (who Yallzi is, what we do, why you’ll love us), move into our technical challenges and requirements then walk through our Journey with MongoDB… we’ll sprinkle in user stories / horror stories / what we’ve learned and more and end with plenty of time for questions / dialogue.
  4. I’m Steve Bond, same as from a few slides ago… I went from college bench to military then back to weird civilian life, disrupting the status quo. It is fun, pain and real. Always about discipline, focus and carefully calculated risk taking. “you need to take risk but not stupid risk” In civilian life, I’ve done Engineering, Operations and Business. I’ve both consulted for and run tiny startups, to acquired companies… to some of the largest companies in the world. I ran a tech consulting company soup to nuts. Ran DB operations for Moviefone… Ran global content management at AOL. At 24/7 I ran the global consulting practice, which was acquired by WPP -- where I became VP of Global Consulting. Most recently, I ran Software Engineering at Forbes where i led the rebuild of content management, created a mobile strategy, packaged our CMS to be sold as commercial publishing software… and made a few sales. Roughly 4 years into the Forbes adventure, my bride was asked to relocate from NY to Austin. Being the man in the relationship… this meant only one thing. I put my foot down and put it hard on.. ======================= below is if reordered Luckily… this was something we could help the world with. With a personal background in... …. …… I quickly realized, we could solve this common need for travelers and locals alike!
  5. I put my foot down… on the gas pedal of a u-haul truck. we loaded up the apartment on UES and moved cross country This is, in sorts, how Yallzi - /jɑːlzi/ was conceived.
  6. We lost our favorite NYC hangouts over 2 short nights as my bride and I drove cross country to our new life. We were foreigners as we stepped out of the truck into Austin. We didn't know how to "live like Austin locals". And worst of all… It became difficult to procrastinate and find excuses not to unpack boxes. We asked ourselves why there is no app for this- Why nobody want to crowd Fun the interent
  7. Turned out we weren’t the only ones looking for an app like this. An app that would allow people to explore new cities, an app that would allow people to share the cities they love, an app that would advertising work for them by breaking the barrier between consumer and vendor. Locations can be Verticals: Food & Dining, Recreation, Entertainment, Arts & Culture, Sports…
  8. Crowd Fun The Internet
  9. Travel is a huge industry. Today’s travelers travel differently than we’d seen historically. We know there is a growing interest in traveling “like locals”. We see it through preferences away from hotels and towards hostels / airbnb / homeaway… We see it through travel off beaten path (versus tourist check boxes). So why not see it in how we select our travel itineraries and interact with venues!?
  10. So we set out to create Yallzi and crowd fun the internet YALLZI let's you share all your favorite places with friends or the whole world. (you create purpose-based groups) YALLZI let's you explore new worlds that other Yallziers have shared. YALLZI breaks the barrier between Vendor and Consumer.
  11. I put together a power team of folks I’d worked with before. We had a variety of skills and experiences We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercialia
  12. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  13. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  14. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  15. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  16. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  17. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  18. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  19. I put together a power team of folks I’d worked with before. We had a variety of skills. We focused on C, C++, Java. Had been using RDBMS for 20 years Had used MongoDB for 5 years in production for consumer facing, high-profile use cases at Forbes (analytics engine, content management, etc) Ran on Extra Dry Martinis Had proven abilities to squeeze 4 weeks of work into 7 days Gift for finding Free Data before the company behind it commercia
  20. We also had a variety of requirements and could see our challenges before we even began… SUMMARY: Build and applicationa and analytics engine harvesting and using real time social choice and propensity data Challenge: FLEXIBLE. Storing and managing dynamic data with usual for any stat up constant pivots for a “ sweet spot” [INSERT Examples of data: User information, map data, venue data, etc… how does this change over time?] Challenge: SPEED. Speed of iteration We’re a startup with constantly changing business requirements. We needed a database that would allow us to iterate as quickly as needed. Ex: Our business model has changed from x to y. We required a zero barrier to implement Challenge: SCALE. Scale with our success. We are a bootstrapped startup. We needed a technology compatible with cloud deployment architectures. We couldn’t put up a large upfront investment. We needed to be able to leverage the cloud /commodity hardware and will scale with our success.
  21. We also had a variety of requirements and could see our challenges before we even began… SUMMARY: Build and applicationa and analytics engine harvesting and using real time social choice and propensity data Challenge: FLEXIBLE. Storing and managing dynamic data with usual for any stat up constant pivots for a “ sweet spot” [INSERT Examples of data: User information, map data, venue data, etc… how does this change over time?] Challenge: SPEED. Speed of iteration We’re a startup with constantly changing business requirements. We needed a database that would allow us to iterate as quickly as needed. Ex: Our business model has changed from x to y. We required a zero barrier to implement Challenge: SCALE. Scale with our success. We are a bootstrapped startup. We needed a technology compatible with cloud deployment architectures. We couldn’t put up a large upfront investment. We needed to be able to leverage the cloud /commodity hardware and will scale with our success.
  22. Indexing… story of how we learned this lesson: About 5 years ago when I lead Engineering at Forbes, we were running into slow performance. To fix, we indexed…. EVERYTHING. What happened? The application CRAWLED. < how did you learn this / who helped / what did you do >
  23. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  24. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  25. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  26. Diving into Schema: we’ll first take a dive into “Actors”.
  27. One type of Actor is Consumer
  28. USERS User Collection is personal and private User data can be shared if desired for vanity or specific purpose( dietary reqs) Location (Dynamic) geo : latitude, longitude(geoLocation) Preferences (Historical & “Acquired”) Existing preference Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer Shared Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) Sue has similar interests and is a referer Adjacent and could be “Acquired” Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) Sue has similar interests and is a referrer Availability (Dynamic) time Vendors
  29. USERS User Collection is personal and private User data can be shared if desired for vanity or specific purpose( dietary reqs) Location (Dynamic) geo : latitude, longitude(geoLocation) Preferences (Historical & “Acquired”) Existing preference Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer Shared Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) Sue has similar interests and is a referer Adjacent and could be “Acquired” Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) Sue has similar interests and is a referrer Availability (Dynamic) time Vendors
  30. USERS User Collection is personal and private User data can be shared if desired for vanity or specific purpose( dietary reqs) Location (Dynamic) geo : latitude, longitude(geoLocation) Preferences (Historical & “Acquired”) Existing preference Bob loves bicycling followed by a beer and lives on UES... A fellow Yallzier just biked East River Greenway, followed by a beer at Pony Bar. Yallzi renders this plan to Bob. A fellow Yallzier Has Shared Interests and fellow Yalzier is a referrer Shared Bob and Sue both like Mexican, Sue loves Rosa Mexicana. Yallzi asks, Will Bob?) Sue has similar interests and is a referer Adjacent and could be “Acquired” Bob likes Ballets and Opera. Sue loves this + Broadway Show. Yallzi suggest Broadway show) Sue has similar interests and is a referrer Availability (Dynamic) time Vendors
  31. 2nd type of Actor is Vendors. Location: Don’t move location of restaurant Vertical: A museum will be arts&culture, a Museum will (rarely, if ever) change into a Sporting Center or Restaurant.
  32. 68% = 2.5G  800mb
  33. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  34. we design something like Google Page Ranking meets Twitter Following model for:
  35. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  36. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  37. (we crowd-fun the internet)
  38. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  39. And now we’re going to review how the app works, we’ll see both the “sausage creation” and the user interface side by side and talk through our decisions on indexing and schema to provide the analytics required for Yallzi. small, big data where data is the engine
  40. Metrics with mongodb we were able to go from idea to prototype in x time once we prototyped, we moved into alpha roughly 1 month later we changed our business model
  41. As a wrap up, we (A) reviewed who Yallzi is and what we’re trying to do, we reviewed why Yallzi selected MongoDb (initially for flexibility and scale) Selected MongoDB initially for flexibility and scale, in addition to other requirements. It provided the best of both worlds: foundation of RDBMS with innovations of NoSQL. index on article makes most sense if talkign about preferences: index preferences if talkign about location, we would index xxxx overloading any collection with indices will lead to rapid degradation of performance get one collection, identify the
  42. So what’s next for us?: We’re wrapping up Development for our beta launch. If you’re interested, follow us on Twitter! We’re eager to partner and stay in touch and see you next year at MongoDB World. Philosophy
  43. Selected MongoDB initially for flexibility and scale, in addition to other requirements. It provided the best of both worlds: foundation of RDBMS with innovations of NoSQL. With MongoDB: build collections by purpose that you can aggregate on top of do not over index