SlideShare a Scribd company logo
1 of 26
Download to read offline
MATCHMAKING APP
Case study of Miggly project
OVERVIEW
• The purpose of this application is to build a tool “Where Friends Match Up
Single Friends”
• Anyone having a valid Facebook account can register on Miggly as either
“Single” or “Matchmaker", where “Single” is the one who is looking for the
perfect match and “Matchmaker” is the one who is interested in helping their
other single friends in finding the perfect match
• For “Single Role”, the user should be able to invite their Facebook friends as
their “Matchmaker” and hence to see the “Single” friends of the “Matchmaker”
based on their preferred gender and then to “Say Hi” to the perfect match
• They should be able to create “Dating Games”, which is nothing but asking
questions (a maximum of 5 questions per game) within a group of minimum
two and maximum four singles
• Singles should be able to see their Facebook likes regarding Music,Video, Books
on their profile page and it should be always updating based on the changes on
Facebook
OVERVIEW
• For “Matchmaker Role”, the user should be able to invite their Facebook friends
as their “Singles” and hence to “Match Up” those with their other “Single”
friends based on the gender preference
• Matchmaker can also invite their Facebook friends as their “Matchmaking
Helper” and by boosting their network of “Single” friends for “Match Up”
• Matchmaker should also be able to create “Dating Games” for their “Single”
friends
• Matchmaker should get notifications based on their Single’s activities
• Matchmakers should be able to see their “Single” friends on their profile page
based on their “Single Friend’s activity on Facebook”
• Both “Single” as well as “Matchmaker” should be able to upload photos and can
have different custom photos based on their roles
• All the photos should be approved by the administrators before it can be
viewed by others
• Miggly will be using re-marketing emails to get their users back into the system
based on certain criteria; especially when they were not logging in back for a
period of time
CHALLENGES
• Allowing the user to register with a valid Facebook login and automatically
logging into Miggly if the user is already logged in to Facebook and has a valid
account on Miggly.
• Always keeping the friends list updated on Miggly with Facebook.
• Handling of different types of Facebook Requests/callbacks.
• Updating the “Relationship Status” changes on Facebook into Miggly.
• For Matchmaker role, to keep their Friends list on profile page always updated
based on the Facebook activity of their friends.
• Identifying the Miggly users when they de-authorize the “Miggly App” from their
Facebook account and to avoid authorization related problems when using
“App Request on Facebook”.
• Identifying the Miggly users who have de-activated their Facebook account; to
avoid sending any message/request to their Non-Existing Facebook account.
• To prevent the un-authorized viewing of content by other users of Miggly.
• To reflect any changes in the profile picture on Miggly emails after the email
delivery was made.
CHALLENGES
• Identifying the number of successful logins based on the user’s role to show the
“MigglyTour” without affecting the performance
• Displaying of user’s Facebook likes regarding Music,Videos & Books
• Dynamically displaying of “Notification Messages” on users Home Page & LOVE
Page with multi-language support
• Automatic Allocation of Miggly Badges and the provision to verify the same.
• To approve the photos uploaded by the users
• To manage the “User Reports” and hence to suspend the users’ account if necessary
• Handling of Miggly Emails andTracking
• To bring user back to the system if they are not active for a period of time
• To testing the re-marketing emails to verify the delivery, copy, layout, etc
• Processing of various kinds of request by clicking on the buttons from Miggly emails
• Auto Processing of request followed from Facebook notification/message links
SOLUTION
• FACEBOOK LOGIN
• In Miggly, we have implemented a combination of JavaScript & PHP SDK to
connect the users with Facebook and hence to access the system. The login part
was handled by JavaScript SDK and the post request callback was handled via PHP
SDK to complete/validate the login and hence to allow/deny the user to continue
with the application.
• UPDATING FACEBOOK FRIENDS (ALWAYS)
• One of the challenge was to keep the Facebook Friends list updated within the
miggly system. There could be a possible delay in taking the user to his/her home
page as it required to update the FB friends list during every login; depending on
the number of friends they dely could vary. After done with the R&D, we have
provided the best solution which uses the “ETag” information provided by
Facebook that will help us to identify if there are changes in the user’s friends list
on Facebook. This helped us to avoide the checking unwanted and thus to
improve the performance.
SOLUTION
• FACEBOOK REQUESTS
• In Miggly, we need to send many kind of requests to user's Facebook
account and most of the request will have certain action/functionality
involved if the user happened to click the link. It was “true” that the FB API
will redirect all request to a single URL and we cannot configure multiple
callback URLs.As a result, it will be verify difficult for the developer / QA to
verify these requests as it would require us to copy /paste the URLs to work
with different platforms
• We have implemented a logic such that the Redirect URLs created on
Facebook will hold a reference that will help us to identify the platform from
which the request was generated. Once the user click the link from their
Facebook account, it will redirect to the callback URL and there our system
will identify the actual platform to which the request belongs to and then
the Miggly System will redirect the request to the correct platform.This
helped us to avoid the copy/paste URLs from Facebook request redirection
and hence to save the developer/QA time
SOLUTION
• UPDATING ‘RELATIONSHIP STATUS’ CHANGES
• One of the major role in miggly is “Singles” and it is very important to track any
changes to the users’ Facebook Relationship Status
• It was “true” that there is “NO” direct way of identifying such changes on
Facebook account
• To overcome the situation, we have followed the same “ETag” logic that we have
implemnted to update the friends list
• However, we have enhanced the logic such that any change in the “Relationship
Status” of the user will be updated into Miggly in two ways:
1. During the very next login by the user after the “Relationship Status” was
changed on their Facebook account
2. When one of his/her friend is trying to login to Miggly after the
“Relationship Status” was modified by their friend
• As we used to capture / update the “Relationship Status” in two different ways, it
will make sure that the user’s “Relationship Status” will be immediately updated if
someone happened to see/visit the Miggly profile
SOLUTION
• SORTING FRIENDS BASED ON FB ACTIVITY (PERMISSION BASED)
• In Miggy, for Matchmaker role, it was required to sort the friends list on the
users’ profile page based on the Facebook activity of their friends and there
was not direct API available in Facebook to achieve this task
• We have built a custom solution, which will crawl the user's notification (latest
10) and hence to build a sorting index based on the number of occurrence of
their friends
SOLUTION
• HANDLING OF ‘MIGGLY APP’ DE-AUTHORISATION
• While using Facebook Apps, it was a challenge to identify the users who were
de-authorized the application from their Facebook account
• This caused a problem when we try to send the messages to the user’s
account using “App Message”
• After doing the R&D we decided to use the FB API’s “De-authorization
Callback” functionality to overcome the situation
• We have implemented the logic such that on receiving the de-authorization
callback, Miggly system will be marking the user’s account and hence to avoid
using the “App Message” while sending any future message to the user’s
Facebook account
• It is noted that the new logic we have implemented will update the user’s
account status across the platforms with the single callback function
SOLUTION
• HANDLING OF ‘MIGGLY USERS’WITH DISABLED FB ACCOUNTS
• In Miggly, we are sending various kinds of message / notifications to the user’s
Facebook account
• While sending the message to the user’s Facebook account, there are
exceptional case in which the user might have deleted / disabled their
Facebook account; in such case, Facebook used to through an error message
as the user account does not exists and was caused a problem in completing
the desired action
• We have implemented a new logic that will work as a “PRE Check” to
whether the user’s accounts is valid on Facebook or not.
• If it is found that the user has disabled their FB account, the Miggly System will
show the message to the user to let them know that the other user’s
Facebook account does not exist and also at the same time the other user’s
Miggly account status will be marked so that the user’s account will not be
shown in Miggly until they re-visit the Miggly system again
SOLUTION
• PREVENT UNAUTHORISEDVIEWING OF ACCOUNT
• Once of the biggest challenge in any of the web-based application is to
prevent the un-authorized access of other’s data/content by copy/paste URLs
• In Miggly, we have implemented the logic to cross verify to identify whether
the user is authorized to view the particular data belongs to the other user
and if “NOT” the user will be redirected to either his own home page or
other related page; thus completely preventing the un-authorized access of
user’s data and hence to increase the privacy of the user
SOLUTION
• SHOWING UPDATED PROFILES ON MIGGLY MAILS
• Miggly delivers a number of emails to its user; these email may contains the
profile images of other Miggly or Non-Miggly users
• For the case of Miggly user; they can change their profile images any time
based on their roles
• In such occurrence, the new image will not be reflected in the emails delivered
in the past
• To overcome this issue, we have created an API to display the user’s profile
image dynamically inside the emails that are generated by the Miggly system;
thus ensuring the latest profile image to be displayed always in emails even if
the delivery happened in the past
SOLUTION
• LOGGING IN (BASED ON USER ROLE)
• In Miggly, we have to display a “Tour” based on user’s role during their first
seven login attempt
• This tour is used to help / guide the user the basic functionality of the system
as they are new
• This required us to keep track of the user’s successful login attempt and the
challenge in implementing the system was to ensure that this logic will not
cause any trouble in the performance of the system especially the logging-in
time. We have implemented a login-log system as 1:1 (one row per user) as
we required to query this table during every login
SOLUTION
• FACEBOOK LIKES
• In the profile pages of Miggly Singles, we have to display the Facebook likes
regardingVideo, Music and Books and it should always display the latest
information from the users Facebook account
• After the R&D we have implemented a live crawl for reading the latest users’
likes; thus ensuring the data displayed on Miggly to be always updated
SOLUTION
• MIGGLY BADGE ALLOCATION
• One of the features of Miggly is “Allocating Badges” to the user based on
their “Role & Activity” and each user role can have a maximum of 21 badges
hence there can be 42 badges per user
• For the better performance, we have decided to approach 1:2 (one user two
rows) i.e.. one row for each role
• This helped us in reducing the number of rows in the main table and hence to
increase the performance of the system
SOLUTION
• MIGGLY NOTIFICATION HANDLING
• One of the biggest challenges in Miggly was to handing the various kinds of
messages/notifications displayed in the user's home page and especially in the
love page
• In the love page of the single user, the notification text will be changing based
on the visitor’s role
• To give the optimum performance, we have decided to store only one entry in
the database and then to change the notification text based on the visiting
user's role
• In addition to this some of the notification are not shown to a specific role
(either self, matchmaker or other matchmaker) this become a complex in
retrieving the notifications from the database
• We have implemented a logic to validate the notifications after reading it from
the database and before displaying it in the page based on the user’s role
SOLUTION
• PHOTO APPROVALTOOL
• Miggly allows the user to upload photos and it was highly important to screen
the photos before it can be viewed by others
• We have created a tool for photo monitoring and the tool requires
authentication for accessing it
• This tool will list all the photos uploaded by the users based onToday,This
Week,This Month, etc.
• The administrator can approve, warn or suspend the user once after verifying
the same and all is done by a single click
• If the administrator warns the user, an automatic email will be send to the user
and during the 4th warning, the users account will be blocked automatically
• In addition to the flexibility we have provided in this tool, it was built with a
tracking of all administrator activity especially when the warn/suspend the user
for any future audit purpose
• The data is stored in a stats table that can be queried accordingly
SOLUTION
• REPORT USERTOOL
• Miggly allows the users to report others profile if they find some data to be
abusive
• We have provided a system for monitoring all user reports so that the
administrator can verify take necessary action to suspend/un-suspend the
users account
• We have also given the search option so that the admin can easily find the
user by simply typing the search words into the search box.
• Also provide a custom filtering option to display the result based onToday,This
Week,This Month, etc.
• In addition to the flexibility we have provided in this tool, it was built with a
tracking of all administrator activity especially when the warn/suspend the user
for any future audit purpose
• The data is stored in a stats table that can be queried accordingly
SOLUTION
• HANDLING EMAIL via MANDRILL
• Miggly uses emails for re-marketing purpose and a large number of emails
were send automatically based on the criteria
• It is very important to have a system to track the delivery of the emails and
also to identify the number of users who have opened/read the mail
• After the R&D we have decided to proceed with the MANDRIL with is a 3rd
party service; a free email tracking tool for 12K emails per month
• This tool includes the complete tracking including the deliver and read/unread
status, etc.
SOLUTION
• REMARKETING EMAILS
• One of the biggest challenge in Miggly is to bring the user back to the system
when the are idle for a week, month, etc.
• We have implemented automated email (remarketing email) delivery system
with necessary information to increase the possibility of bringing the user back
and these emails will be send automatically via CRON (running of automated
scripts on schedule basis) running on server
SOLUTION
• TRAILMAILTOOL
• One of the difficult part while using the re-marketing email was the “wait
time” as the emails will be generated only once the days, weeks, etc. is reached
• We have provided a tool to the client for manually generating all the
remarketing emails by simply inputting the desired user’s email as an input
• The tool also contains an alternate email address that will allow the
administrator to receive the email in a secondary email inbox. This tool
helped the developer/QA to save their time in receiving the email to verify the
layout, copy, body, etc.
SOLUTION
• CTA BUTTON REQUEST PROCESSING
• The mails generated from Miggly system will also include CTA (CallTo Action)
buttons
• Once the user clicks the button, the user should be re-directed to Miggly and
hence to complete any action/activity associated with the same
• It was a challenge when implementing the logic such that the user may be
already logged into system with a different role which is NOT associated with
the CTA button action
• We have implemented a logic to automatically switch the users role to the
desired one before start processing any further action hence to the successful
completion of the request
SOLUTION
• REMOVE DATATOOL
• During the development/QA it was found very difficult to test various action
as most of the actions were one time activity (example registration)
• As Miggly works completely with Facebook credentials, it was verify difficult to
create Facebook account to check every kind of development/QA activity
• We have suggested a tool that will allow to remove/clean all user related data
from the Miggly system so that to re-use the Facebook account again and
again
• This helped us in saving the developer/QA time very much
SOLUTION
• OPTIMISING PERFORMANCE
• During the implementation of Miggly, the a primary goal was to ensure the
optimized performance of the system.
• We have studied / analyzed the system considering various use case and
designed the Database accordingly to avoid the maximum possibility of
reducing the over all load to each and every table
• To achieve this, we have decided to separate the table into two blocks one for
the regular use with the system and the other is to used to store the logs,
which can be used for any stats activity
• We have also used the DBTRIGGERS in the best possible way that will help
us to reduce the Web-Server load
SOLUTION
• THE MIGGLY SYSTEM
• The Miggly System was about to change based on the market study and the
other factors involved in the market and the initial requirement was to expect
frequent changes to the system including logic and functionality.
• It was a challenge for the developer to handle this as you can understand the
difficulty in handling frequent changes in any system
• To overcome the situation, we have decided to build a system based on
“Templates & Component” basis so that we can reuse the component by
“Plug & Play” the templates/modules easily from one plays to the other.
• This decision helped us for the maximum possibility of reusing existing
components and hence to avoid too much of reworks
• In other words, it helped us to minimize the rework to at least some level

More Related Content

What's hot

Beyond a basic facebook page
Beyond a basic facebook pageBeyond a basic facebook page
Beyond a basic facebook pageMia Lee
 
Delaying call to require_login for accessing Facebook applications: Benefits,...
Delaying call to require_login for accessing Facebook applications: Benefits,...Delaying call to require_login for accessing Facebook applications: Benefits,...
Delaying call to require_login for accessing Facebook applications: Benefits,...Mobicules Technologies
 
Facebookrequirelogin 1228296175829554 8
Facebookrequirelogin 1228296175829554 8Facebookrequirelogin 1228296175829554 8
Facebookrequirelogin 1228296175829554 8Mobicules Technologies
 
How To Grow Your Business With Social Media
How To Grow Your Business With Social MediaHow To Grow Your Business With Social Media
How To Grow Your Business With Social MediaMichelle Hummel
 
SEO for Facebook Guide
SEO for Facebook GuideSEO for Facebook Guide
SEO for Facebook GuideKasasa
 
Share point 2010-activity-feed
Share point 2010-activity-feedShare point 2010-activity-feed
Share point 2010-activity-feedSankaran D
 

What's hot (7)

Beyond a basic facebook page
Beyond a basic facebook pageBeyond a basic facebook page
Beyond a basic facebook page
 
Delaying call to require_login for accessing Facebook applications: Benefits,...
Delaying call to require_login for accessing Facebook applications: Benefits,...Delaying call to require_login for accessing Facebook applications: Benefits,...
Delaying call to require_login for accessing Facebook applications: Benefits,...
 
Facebookrequirelogin 1228296175829554 8
Facebookrequirelogin 1228296175829554 8Facebookrequirelogin 1228296175829554 8
Facebookrequirelogin 1228296175829554 8
 
How To Grow Your Business With Social Media
How To Grow Your Business With Social MediaHow To Grow Your Business With Social Media
How To Grow Your Business With Social Media
 
SEO for Facebook Guide
SEO for Facebook GuideSEO for Facebook Guide
SEO for Facebook Guide
 
Off Page Optimization
Off Page OptimizationOff Page Optimization
Off Page Optimization
 
Share point 2010-activity-feed
Share point 2010-activity-feedShare point 2010-activity-feed
Share point 2010-activity-feed
 

Similar to AMS Miggly

Socialize: May 2014
Socialize: May 2014Socialize: May 2014
Socialize: May 2014W2O Group
 
The ups store facebook training workshop on march 10 2013 slide deck
The ups store facebook training workshop on march 10 2013   slide deckThe ups store facebook training workshop on march 10 2013   slide deck
The ups store facebook training workshop on march 10 2013 slide deckBright Spark Media
 
7 Deadly Sins in Azure AD App Development
7 Deadly Sins in Azure AD App Development7 Deadly Sins in Azure AD App Development
7 Deadly Sins in Azure AD App DevelopmentJoonas Westlin
 
WordPress + Facebook how to connect with friends
WordPress + Facebook how to connect with friendsWordPress + Facebook how to connect with friends
WordPress + Facebook how to connect with friendsRebecca Caroe
 
Facebook Developer Garage Milan
Facebook Developer Garage MilanFacebook Developer Garage Milan
Facebook Developer Garage Milanjleszcze
 
Jasmeet Grp Facebook It Group Assig
Jasmeet Grp Facebook It Group AssigJasmeet Grp Facebook It Group Assig
Jasmeet Grp Facebook It Group Assigsharing notes123
 
3 New Facebook Promotional Engagement Models
3 New Facebook Promotional Engagement Models3 New Facebook Promotional Engagement Models
3 New Facebook Promotional Engagement ModelsTom Edwards
 
Micropower social media presentation 280212
Micropower social media presentation 280212Micropower social media presentation 280212
Micropower social media presentation 280212Micropower
 
03.Corporate social media
03.Corporate social media03.Corporate social media
03.Corporate social mediaJulian Matthews
 
Facebook Parent-Child Process Overview & FAQ | Location3 Media
Facebook Parent-Child Process Overview & FAQ | Location3 MediaFacebook Parent-Child Process Overview & FAQ | Location3 Media
Facebook Parent-Child Process Overview & FAQ | Location3 MediaLocation3 Media
 
Managing FACEBOOK for a business organization
Managing FACEBOOK for a business organizationManaging FACEBOOK for a business organization
Managing FACEBOOK for a business organizationPepovski Darko
 
Ollie long unit 35 (changed)
Ollie long unit 35 (changed)Ollie long unit 35 (changed)
Ollie long unit 35 (changed)olong17
 
Acquire Customers at the Lowest Cost
Acquire Customers at the Lowest CostAcquire Customers at the Lowest Cost
Acquire Customers at the Lowest CostDrew Beaurline
 
Leveraging Facebook Marketing, Insights and EdgeRank for Small Business
Leveraging Facebook Marketing, Insights and EdgeRank for Small BusinessLeveraging Facebook Marketing, Insights and EdgeRank for Small Business
Leveraging Facebook Marketing, Insights and EdgeRank for Small BusinessJoshua Panzer
 
Socialize: January 2014
Socialize: January 2014Socialize: January 2014
Socialize: January 2014W2O Group
 
How to make our app go viral
How to make our app go viralHow to make our app go viral
How to make our app go viralDebasish Panda
 
Organic and Paid Tactics on Facebook
Organic and Paid Tactics on FacebookOrganic and Paid Tactics on Facebook
Organic and Paid Tactics on FacebookIgnite Social Media
 

Similar to AMS Miggly (20)

Socialize: May 2014
Socialize: May 2014Socialize: May 2014
Socialize: May 2014
 
The ups store facebook training workshop on march 10 2013 slide deck
The ups store facebook training workshop on march 10 2013   slide deckThe ups store facebook training workshop on march 10 2013   slide deck
The ups store facebook training workshop on march 10 2013 slide deck
 
7 Deadly Sins in Azure AD App Development
7 Deadly Sins in Azure AD App Development7 Deadly Sins in Azure AD App Development
7 Deadly Sins in Azure AD App Development
 
WordPress + Facebook how to connect with friends
WordPress + Facebook how to connect with friendsWordPress + Facebook how to connect with friends
WordPress + Facebook how to connect with friends
 
Facebook Developer Garage Milan
Facebook Developer Garage MilanFacebook Developer Garage Milan
Facebook Developer Garage Milan
 
Jasmeet Grp Facebook It Group Assig
Jasmeet Grp Facebook It Group AssigJasmeet Grp Facebook It Group Assig
Jasmeet Grp Facebook It Group Assig
 
3 New Facebook Promotional Engagement Models
3 New Facebook Promotional Engagement Models3 New Facebook Promotional Engagement Models
3 New Facebook Promotional Engagement Models
 
Micropower social media presentation 280212
Micropower social media presentation 280212Micropower social media presentation 280212
Micropower social media presentation 280212
 
03.Corporate social media
03.Corporate social media03.Corporate social media
03.Corporate social media
 
Facebook Parent-Child Process Overview & FAQ | Location3 Media
Facebook Parent-Child Process Overview & FAQ | Location3 MediaFacebook Parent-Child Process Overview & FAQ | Location3 Media
Facebook Parent-Child Process Overview & FAQ | Location3 Media
 
it.pptx
it.pptxit.pptx
it.pptx
 
Managing FACEBOOK for a business organization
Managing FACEBOOK for a business organizationManaging FACEBOOK for a business organization
Managing FACEBOOK for a business organization
 
Ollie long unit 35 (changed)
Ollie long unit 35 (changed)Ollie long unit 35 (changed)
Ollie long unit 35 (changed)
 
Acquire Customers at the Lowest Cost
Acquire Customers at the Lowest CostAcquire Customers at the Lowest Cost
Acquire Customers at the Lowest Cost
 
Leveraging Facebook Marketing, Insights and EdgeRank for Small Business
Leveraging Facebook Marketing, Insights and EdgeRank for Small BusinessLeveraging Facebook Marketing, Insights and EdgeRank for Small Business
Leveraging Facebook Marketing, Insights and EdgeRank for Small Business
 
Socialize: January 2014
Socialize: January 2014Socialize: January 2014
Socialize: January 2014
 
How to make our app go viral
How to make our app go viralHow to make our app go viral
How to make our app go viral
 
03.Facebook
03.Facebook03.Facebook
03.Facebook
 
Jobster Webmediaforum 12 6 07
Jobster   Webmediaforum 12 6 07Jobster   Webmediaforum 12 6 07
Jobster Webmediaforum 12 6 07
 
Organic and Paid Tactics on Facebook
Organic and Paid Tactics on FacebookOrganic and Paid Tactics on Facebook
Organic and Paid Tactics on Facebook
 

More from Atlas Systems (20)

DB Tenzing
DB TenzingDB Tenzing
DB Tenzing
 
DBA for leading financial company in NJ
DBA for leading financial company in NJDBA for leading financial company in NJ
DBA for leading financial company in NJ
 
DBA Discovery
DBA DiscoveryDBA Discovery
DBA Discovery
 
SAP automobile major
SAP automobile majorSAP automobile major
SAP automobile major
 
ISV Net iq
ISV Net iqISV Net iq
ISV Net iq
 
DBA Thomson reuters db
DBA Thomson reuters dbDBA Thomson reuters db
DBA Thomson reuters db
 
Cloud Openshift paas
Cloud Openshift paasCloud Openshift paas
Cloud Openshift paas
 
Cloud Forge Rock
Cloud Forge RockCloud Forge Rock
Cloud Forge Rock
 
BD Thomson Reuters
BD Thomson ReutersBD Thomson Reuters
BD Thomson Reuters
 
BD JD power_1
BD JD power_1BD JD power_1
BD JD power_1
 
AMS Trilogy
AMS TrilogyAMS Trilogy
AMS Trilogy
 
AMS Spider
AMS SpiderAMS Spider
AMS Spider
 
AMS Skill derby
AMS Skill derbyAMS Skill derby
AMS Skill derby
 
AMS Reged
AMS RegedAMS Reged
AMS Reged
 
AMS Net iq
AMS Net iqAMS Net iq
AMS Net iq
 
AMS Narus
AMS NarusAMS Narus
AMS Narus
 
AMS Love sms
AMS Love smsAMS Love sms
AMS Love sms
 
AMS IT client
AMS IT clientAMS IT client
AMS IT client
 
AMS Invision
AMS InvisionAMS Invision
AMS Invision
 
AMS Guardian 360
AMS Guardian 360AMS Guardian 360
AMS Guardian 360
 

Recently uploaded

activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 

Recently uploaded (20)

activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 

AMS Miggly

  • 1. MATCHMAKING APP Case study of Miggly project
  • 2. OVERVIEW • The purpose of this application is to build a tool “Where Friends Match Up Single Friends” • Anyone having a valid Facebook account can register on Miggly as either “Single” or “Matchmaker", where “Single” is the one who is looking for the perfect match and “Matchmaker” is the one who is interested in helping their other single friends in finding the perfect match • For “Single Role”, the user should be able to invite their Facebook friends as their “Matchmaker” and hence to see the “Single” friends of the “Matchmaker” based on their preferred gender and then to “Say Hi” to the perfect match • They should be able to create “Dating Games”, which is nothing but asking questions (a maximum of 5 questions per game) within a group of minimum two and maximum four singles • Singles should be able to see their Facebook likes regarding Music,Video, Books on their profile page and it should be always updating based on the changes on Facebook
  • 3. OVERVIEW • For “Matchmaker Role”, the user should be able to invite their Facebook friends as their “Singles” and hence to “Match Up” those with their other “Single” friends based on the gender preference • Matchmaker can also invite their Facebook friends as their “Matchmaking Helper” and by boosting their network of “Single” friends for “Match Up” • Matchmaker should also be able to create “Dating Games” for their “Single” friends • Matchmaker should get notifications based on their Single’s activities • Matchmakers should be able to see their “Single” friends on their profile page based on their “Single Friend’s activity on Facebook” • Both “Single” as well as “Matchmaker” should be able to upload photos and can have different custom photos based on their roles • All the photos should be approved by the administrators before it can be viewed by others • Miggly will be using re-marketing emails to get their users back into the system based on certain criteria; especially when they were not logging in back for a period of time
  • 4. CHALLENGES • Allowing the user to register with a valid Facebook login and automatically logging into Miggly if the user is already logged in to Facebook and has a valid account on Miggly. • Always keeping the friends list updated on Miggly with Facebook. • Handling of different types of Facebook Requests/callbacks. • Updating the “Relationship Status” changes on Facebook into Miggly. • For Matchmaker role, to keep their Friends list on profile page always updated based on the Facebook activity of their friends. • Identifying the Miggly users when they de-authorize the “Miggly App” from their Facebook account and to avoid authorization related problems when using “App Request on Facebook”. • Identifying the Miggly users who have de-activated their Facebook account; to avoid sending any message/request to their Non-Existing Facebook account. • To prevent the un-authorized viewing of content by other users of Miggly. • To reflect any changes in the profile picture on Miggly emails after the email delivery was made.
  • 5. CHALLENGES • Identifying the number of successful logins based on the user’s role to show the “MigglyTour” without affecting the performance • Displaying of user’s Facebook likes regarding Music,Videos & Books • Dynamically displaying of “Notification Messages” on users Home Page & LOVE Page with multi-language support • Automatic Allocation of Miggly Badges and the provision to verify the same. • To approve the photos uploaded by the users • To manage the “User Reports” and hence to suspend the users’ account if necessary • Handling of Miggly Emails andTracking • To bring user back to the system if they are not active for a period of time • To testing the re-marketing emails to verify the delivery, copy, layout, etc • Processing of various kinds of request by clicking on the buttons from Miggly emails • Auto Processing of request followed from Facebook notification/message links
  • 6. SOLUTION • FACEBOOK LOGIN • In Miggly, we have implemented a combination of JavaScript & PHP SDK to connect the users with Facebook and hence to access the system. The login part was handled by JavaScript SDK and the post request callback was handled via PHP SDK to complete/validate the login and hence to allow/deny the user to continue with the application. • UPDATING FACEBOOK FRIENDS (ALWAYS) • One of the challenge was to keep the Facebook Friends list updated within the miggly system. There could be a possible delay in taking the user to his/her home page as it required to update the FB friends list during every login; depending on the number of friends they dely could vary. After done with the R&D, we have provided the best solution which uses the “ETag” information provided by Facebook that will help us to identify if there are changes in the user’s friends list on Facebook. This helped us to avoide the checking unwanted and thus to improve the performance.
  • 7. SOLUTION • FACEBOOK REQUESTS • In Miggly, we need to send many kind of requests to user's Facebook account and most of the request will have certain action/functionality involved if the user happened to click the link. It was “true” that the FB API will redirect all request to a single URL and we cannot configure multiple callback URLs.As a result, it will be verify difficult for the developer / QA to verify these requests as it would require us to copy /paste the URLs to work with different platforms • We have implemented a logic such that the Redirect URLs created on Facebook will hold a reference that will help us to identify the platform from which the request was generated. Once the user click the link from their Facebook account, it will redirect to the callback URL and there our system will identify the actual platform to which the request belongs to and then the Miggly System will redirect the request to the correct platform.This helped us to avoid the copy/paste URLs from Facebook request redirection and hence to save the developer/QA time
  • 8. SOLUTION • UPDATING ‘RELATIONSHIP STATUS’ CHANGES • One of the major role in miggly is “Singles” and it is very important to track any changes to the users’ Facebook Relationship Status • It was “true” that there is “NO” direct way of identifying such changes on Facebook account • To overcome the situation, we have followed the same “ETag” logic that we have implemnted to update the friends list • However, we have enhanced the logic such that any change in the “Relationship Status” of the user will be updated into Miggly in two ways: 1. During the very next login by the user after the “Relationship Status” was changed on their Facebook account 2. When one of his/her friend is trying to login to Miggly after the “Relationship Status” was modified by their friend • As we used to capture / update the “Relationship Status” in two different ways, it will make sure that the user’s “Relationship Status” will be immediately updated if someone happened to see/visit the Miggly profile
  • 9. SOLUTION • SORTING FRIENDS BASED ON FB ACTIVITY (PERMISSION BASED) • In Miggy, for Matchmaker role, it was required to sort the friends list on the users’ profile page based on the Facebook activity of their friends and there was not direct API available in Facebook to achieve this task • We have built a custom solution, which will crawl the user's notification (latest 10) and hence to build a sorting index based on the number of occurrence of their friends
  • 10. SOLUTION • HANDLING OF ‘MIGGLY APP’ DE-AUTHORISATION • While using Facebook Apps, it was a challenge to identify the users who were de-authorized the application from their Facebook account • This caused a problem when we try to send the messages to the user’s account using “App Message” • After doing the R&D we decided to use the FB API’s “De-authorization Callback” functionality to overcome the situation • We have implemented the logic such that on receiving the de-authorization callback, Miggly system will be marking the user’s account and hence to avoid using the “App Message” while sending any future message to the user’s Facebook account • It is noted that the new logic we have implemented will update the user’s account status across the platforms with the single callback function
  • 11. SOLUTION • HANDLING OF ‘MIGGLY USERS’WITH DISABLED FB ACCOUNTS • In Miggly, we are sending various kinds of message / notifications to the user’s Facebook account • While sending the message to the user’s Facebook account, there are exceptional case in which the user might have deleted / disabled their Facebook account; in such case, Facebook used to through an error message as the user account does not exists and was caused a problem in completing the desired action • We have implemented a new logic that will work as a “PRE Check” to whether the user’s accounts is valid on Facebook or not. • If it is found that the user has disabled their FB account, the Miggly System will show the message to the user to let them know that the other user’s Facebook account does not exist and also at the same time the other user’s Miggly account status will be marked so that the user’s account will not be shown in Miggly until they re-visit the Miggly system again
  • 12. SOLUTION • PREVENT UNAUTHORISEDVIEWING OF ACCOUNT • Once of the biggest challenge in any of the web-based application is to prevent the un-authorized access of other’s data/content by copy/paste URLs • In Miggly, we have implemented the logic to cross verify to identify whether the user is authorized to view the particular data belongs to the other user and if “NOT” the user will be redirected to either his own home page or other related page; thus completely preventing the un-authorized access of user’s data and hence to increase the privacy of the user
  • 13. SOLUTION • SHOWING UPDATED PROFILES ON MIGGLY MAILS • Miggly delivers a number of emails to its user; these email may contains the profile images of other Miggly or Non-Miggly users • For the case of Miggly user; they can change their profile images any time based on their roles • In such occurrence, the new image will not be reflected in the emails delivered in the past • To overcome this issue, we have created an API to display the user’s profile image dynamically inside the emails that are generated by the Miggly system; thus ensuring the latest profile image to be displayed always in emails even if the delivery happened in the past
  • 14. SOLUTION • LOGGING IN (BASED ON USER ROLE) • In Miggly, we have to display a “Tour” based on user’s role during their first seven login attempt • This tour is used to help / guide the user the basic functionality of the system as they are new • This required us to keep track of the user’s successful login attempt and the challenge in implementing the system was to ensure that this logic will not cause any trouble in the performance of the system especially the logging-in time. We have implemented a login-log system as 1:1 (one row per user) as we required to query this table during every login
  • 15. SOLUTION • FACEBOOK LIKES • In the profile pages of Miggly Singles, we have to display the Facebook likes regardingVideo, Music and Books and it should always display the latest information from the users Facebook account • After the R&D we have implemented a live crawl for reading the latest users’ likes; thus ensuring the data displayed on Miggly to be always updated
  • 16. SOLUTION • MIGGLY BADGE ALLOCATION • One of the features of Miggly is “Allocating Badges” to the user based on their “Role & Activity” and each user role can have a maximum of 21 badges hence there can be 42 badges per user • For the better performance, we have decided to approach 1:2 (one user two rows) i.e.. one row for each role • This helped us in reducing the number of rows in the main table and hence to increase the performance of the system
  • 17. SOLUTION • MIGGLY NOTIFICATION HANDLING • One of the biggest challenges in Miggly was to handing the various kinds of messages/notifications displayed in the user's home page and especially in the love page • In the love page of the single user, the notification text will be changing based on the visitor’s role • To give the optimum performance, we have decided to store only one entry in the database and then to change the notification text based on the visiting user's role • In addition to this some of the notification are not shown to a specific role (either self, matchmaker or other matchmaker) this become a complex in retrieving the notifications from the database • We have implemented a logic to validate the notifications after reading it from the database and before displaying it in the page based on the user’s role
  • 18. SOLUTION • PHOTO APPROVALTOOL • Miggly allows the user to upload photos and it was highly important to screen the photos before it can be viewed by others • We have created a tool for photo monitoring and the tool requires authentication for accessing it • This tool will list all the photos uploaded by the users based onToday,This Week,This Month, etc. • The administrator can approve, warn or suspend the user once after verifying the same and all is done by a single click • If the administrator warns the user, an automatic email will be send to the user and during the 4th warning, the users account will be blocked automatically • In addition to the flexibility we have provided in this tool, it was built with a tracking of all administrator activity especially when the warn/suspend the user for any future audit purpose • The data is stored in a stats table that can be queried accordingly
  • 19. SOLUTION • REPORT USERTOOL • Miggly allows the users to report others profile if they find some data to be abusive • We have provided a system for monitoring all user reports so that the administrator can verify take necessary action to suspend/un-suspend the users account • We have also given the search option so that the admin can easily find the user by simply typing the search words into the search box. • Also provide a custom filtering option to display the result based onToday,This Week,This Month, etc. • In addition to the flexibility we have provided in this tool, it was built with a tracking of all administrator activity especially when the warn/suspend the user for any future audit purpose • The data is stored in a stats table that can be queried accordingly
  • 20. SOLUTION • HANDLING EMAIL via MANDRILL • Miggly uses emails for re-marketing purpose and a large number of emails were send automatically based on the criteria • It is very important to have a system to track the delivery of the emails and also to identify the number of users who have opened/read the mail • After the R&D we have decided to proceed with the MANDRIL with is a 3rd party service; a free email tracking tool for 12K emails per month • This tool includes the complete tracking including the deliver and read/unread status, etc.
  • 21. SOLUTION • REMARKETING EMAILS • One of the biggest challenge in Miggly is to bring the user back to the system when the are idle for a week, month, etc. • We have implemented automated email (remarketing email) delivery system with necessary information to increase the possibility of bringing the user back and these emails will be send automatically via CRON (running of automated scripts on schedule basis) running on server
  • 22. SOLUTION • TRAILMAILTOOL • One of the difficult part while using the re-marketing email was the “wait time” as the emails will be generated only once the days, weeks, etc. is reached • We have provided a tool to the client for manually generating all the remarketing emails by simply inputting the desired user’s email as an input • The tool also contains an alternate email address that will allow the administrator to receive the email in a secondary email inbox. This tool helped the developer/QA to save their time in receiving the email to verify the layout, copy, body, etc.
  • 23. SOLUTION • CTA BUTTON REQUEST PROCESSING • The mails generated from Miggly system will also include CTA (CallTo Action) buttons • Once the user clicks the button, the user should be re-directed to Miggly and hence to complete any action/activity associated with the same • It was a challenge when implementing the logic such that the user may be already logged into system with a different role which is NOT associated with the CTA button action • We have implemented a logic to automatically switch the users role to the desired one before start processing any further action hence to the successful completion of the request
  • 24. SOLUTION • REMOVE DATATOOL • During the development/QA it was found very difficult to test various action as most of the actions were one time activity (example registration) • As Miggly works completely with Facebook credentials, it was verify difficult to create Facebook account to check every kind of development/QA activity • We have suggested a tool that will allow to remove/clean all user related data from the Miggly system so that to re-use the Facebook account again and again • This helped us in saving the developer/QA time very much
  • 25. SOLUTION • OPTIMISING PERFORMANCE • During the implementation of Miggly, the a primary goal was to ensure the optimized performance of the system. • We have studied / analyzed the system considering various use case and designed the Database accordingly to avoid the maximum possibility of reducing the over all load to each and every table • To achieve this, we have decided to separate the table into two blocks one for the regular use with the system and the other is to used to store the logs, which can be used for any stats activity • We have also used the DBTRIGGERS in the best possible way that will help us to reduce the Web-Server load
  • 26. SOLUTION • THE MIGGLY SYSTEM • The Miggly System was about to change based on the market study and the other factors involved in the market and the initial requirement was to expect frequent changes to the system including logic and functionality. • It was a challenge for the developer to handle this as you can understand the difficulty in handling frequent changes in any system • To overcome the situation, we have decided to build a system based on “Templates & Component” basis so that we can reuse the component by “Plug & Play” the templates/modules easily from one plays to the other. • This decision helped us for the maximum possibility of reusing existing components and hence to avoid too much of reworks • In other words, it helped us to minimize the rework to at least some level