SlideShare ist ein Scribd-Unternehmen logo
1 von 70
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!

Weitere ähnliche Inhalte

Andere mochten auch

Proceso productivo del pan donoso arias
Proceso productivo del pan donoso ariasProceso productivo del pan donoso arias
Proceso productivo del pan donoso ariascrissdonoso
 
AdWords для видео | Реклама на YouTube и других сайтах
AdWords для видео | Реклама на YouTube и других сайтахAdWords для видео | Реклама на YouTube и других сайтах
AdWords для видео | Реклама на YouTube и других сайтахTanya Mikhalchenko
 
Emma Kovacs_ResumeHR_1
Emma Kovacs_ResumeHR_1Emma Kovacs_ResumeHR_1
Emma Kovacs_ResumeHR_1Emma Kovacs
 
Transportovanje tecnog goriva
Transportovanje tecnog gorivaTransportovanje tecnog goriva
Transportovanje tecnog gorivaigoriv
 
Procesos productivo del pan_Valverde
Procesos productivo del pan_ValverdeProcesos productivo del pan_Valverde
Procesos productivo del pan_ValverdeDiegoValverde8A
 

Andere mochten auch (7)

Proceso productivo del pan donoso arias
Proceso productivo del pan donoso ariasProceso productivo del pan donoso arias
Proceso productivo del pan donoso arias
 
AdWords для видео | Реклама на YouTube и других сайтах
AdWords для видео | Реклама на YouTube и других сайтахAdWords для видео | Реклама на YouTube и других сайтах
AdWords для видео | Реклама на YouTube и других сайтах
 
Food preparation
Food preparationFood preparation
Food preparation
 
QubitWorksEsp
QubitWorksEspQubitWorksEsp
QubitWorksEsp
 
Emma Kovacs_ResumeHR_1
Emma Kovacs_ResumeHR_1Emma Kovacs_ResumeHR_1
Emma Kovacs_ResumeHR_1
 
Transportovanje tecnog goriva
Transportovanje tecnog gorivaTransportovanje tecnog goriva
Transportovanje tecnog goriva
 
Procesos productivo del pan_Valverde
Procesos productivo del pan_ValverdeProcesos productivo del pan_Valverde
Procesos productivo del pan_Valverde
 

Ähnlich wie YALLZI @ mongoDBWorld

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
 

Ähnlich wie YALLZI @ mongoDBWorld (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
 

Kürzlich hochgeladen

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

YALLZI @ mongoDBWorld

  • 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!

Hinweis der Redaktion

  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