Sep 20 - 22th Seattle Startup Weekend Pitch and Plan

1 min Pitch

Scheduling service for online dating companies to recommend coffee shops dates based on the user's calendar and their frequent locations.

We[bold emphasis]

Make it happen 

- Dating websites should not just be a platform for discovering new people, they should take the pain out by organizing one on one dates.  

Make it better

- Dating websites should give their users date recommendations based on their time slot and location.

Make it connect.

- Start a relationship with your users, connect with them and connect with us via web view from your website or your app.

Two Versions

  1. Mobile Web app
    1. Used by dating apps or websites to render our website as an web view or in the browser. Users get the options for emailing the final meeting location details. Also recommended location/times are sent back to the website in the response.
  2. Native app(Future)
    1. Used for personal use to schedule events/parties with your friends.  

UI flow(Native and web based app)

  • Open our website as an web view if you have a app or open the url if you are a desktop app.
  • Give us their email and a redirect url of your website.
  • We will take them to Sync your calendar page.
  • After  syncing, we ll ask them if they want to add/update their location
  • We will show simultaneously the progress of the other person on the top bar of the website
  • Wait till both users are finished importing calendar and location
  • Recommend them the local cafes with the distance from their location at one of their free time slots.   
  • Redirect them to your app/browser with the recommend time and slots in the response body.  

Data Model

  1.  User
    1. userId [Type : String]
    2. userName [Type : String]
    3. userEmailId [Type : String]
    4. freeTimeSlotIds [Type : Array of timeSlotIds]
  2. Location
    1. locId [Type : String]
    2. locName [Type : String]
    3. Location [Type : int]
    4. Latitude[Type : int]
  3. Time
    1. timeSlotId  [Type : String]
    2. time [Type : Json array of String]
    3. locId : [Type : locId]
  4. ResultObject
    1. userName [Type : String]
    2. timeSlotStringName [Type : String]
    3. locationName [Type : String]
    4. distance [Type : Int]

Backend API

  1. Create/Find API :  Create or find the user with the given email and user's name
  2. Fetch Google Calendar API : Call the google calendar API and get the calendar slots for the next 1 week.
  3. Save the calendar API : Convert the data into a array of free time slots with each free time slot linked to a day.
  4. Save user location API : Make an api that will store the array of locations from the users. 
  5. Get the longitude and latitude API : Give a address, get latitude and longitude from the 
  6. Matching API : Input parameters will be two user's emails Ids. 
    1. Get the free time slots array from the userIds 
    2. Get the common timeSlotIds
    3. Fetch the locId from the timeSlotIds
    4. If the locId is same, call Yelp API to get at most 3 cafes
    5. If the locId is different for the timeslotId, call Yelp API for the locId and get at most 3 cafes for each locIds.
  7. Yelp API : Call yelp api to get the cafes near a location, takes longitude and latitude as an input parameter and return list of cafes. Persist at most 3 cafes in our location object. 
  8. Distance API : Given two locId, get the walking/driving distance between them by calling google map API

Test Data[User]

User 1

User 2

  1. User 
  • userId : goog1234A38
  • userName : Jake
  • userEmailId : jakeblade@gmail.com
  • timeSlotIds : {112,223,523}
  • free timeSlotIds : {123,124,132}
  • Location[Work]
    • locId : googPla1287E3
    • locName : SLU
    • location : 24 
    • latitude : -123
  • Location [Home/Neighborhood]
    • locId : googPla1287E3
    • locName : Belltown
    • latitude : 26
    • longitude : -124
  • TimeSlot[Busy]
    • timeSlotId : 112
    • time : {2,3}
    • locId : googPla1287E3
  • Time [Free]
    • timeSlotId : 123
    • time : {5, 10:30}
    • locId : googPla1287E3
    1. User 
    • userId : goog32414B98
    • userName : Lily
    • userEmailId : lilykim@gmail.com
    • timeSlotIds : {897,210,421}
    • free timeSlotIds : {123,223,984}
  • Location[Work]
    • locId : googPla5648D3
    • locName : Fremont
    • location : 39
    • latitude : -143
  • Location [Home/Neighborhood]
    • locId : googPla1287E3
    • locName : Belltown
    • latitude : 26
    • longitude : -124
  • TimeSlot[Busy]
    • timeSlotId : 210
    • time : {2,3}
    • locId : googPla1287E3
  • Time [Free]
    • timeSlotId : 123
    • time : {5, 10:30}
    • locId : googPla1287E3

    Test Data [Yelp Places]

    Location 1

    Location 2

    Location 3

    1. Location 
      1. locId : googPla4279F9
      2. locName : Cafe Cesura
      3. latitude : 26
      4. longitude : -123


    1. Location 
      1. locId : googPla5687M9
      2. locName : Cafe Presse
      3. latitude : 29
      4. longitude : -123


    1. Location 
      1. locId : googPla1007I3
      2. locName : Cade Ladro
      3. latitude : 34
      4. longitude : -145



    Test Matching API[For the start up weekend, everything comes from the test data]

    Match API : Input  (user 1, user 2)

                      Output (array of ResultObject)

    1. [Test data from DB]Get free timeslots for userid1 and userId2. Common time slots is 123
    2. [Test data from DB]For each free common timeSlotIds and userId, get associated location. locId for the common timeslot 123 for both user1 and user2 is googPla1287E3 
    3. [Test data from DB] Call Yelp API and fetch places near the locId "googPla1287E3". Returns a bunch of locations with latitude and longitude. 
    4. [Mock]For each of the returned cafe locations, call google Maps API and calculate the distance between the cafe location and the locId "googPla1287E3". Make a simple distance calculations and fill the result object with location name, distance and user name.
    5. Return an array of resultObjects as below.

    Test ResultObjects

    <-----  Tuesday [2-3 PM]  --->

    Jake

    Lily

    Recommend Places

    • Cafe Ladro
    • Distance from your location : 5 mins walking
    • Cafe Cesura
    • Distance : 10 mins walking

    Recommended Places

    • Cafe Ladro
    • Distance from your location : 5 mins walking
    • Cafe Cesura
    • Distance : 10 mins walking


    <-----  Friday [7-8  PM]  --->

    Jake

    Lily

    Recommend Places

    • Purple Cafe
    • Distance : 10 mins walking
    • Din Tia Fung
    • Distance : 30 mins driving

    Recommended Places

    • Purple Cafe
    • Distance : 30 mins driving
    • Din Tai Fung
    • Distance : 5 mins walking

    Data Getters

    Make wrapper for all the getters. Getters should obscure the source of the data, this will help us in mocking the API calls, the data can either come from the test database or from the third party APIs.