The entities identified so far that need to data to be stored and have relationships with each other are the following:
- Brand
- Vertical
- Fans
- Community
- Campaigns
- Hashtag
- UGC
- Users
Represents Zyper client and should have all the attributes we need to keep track to identify the Brand and or operate in their behalf.
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | [pk] key |
name | string | name of the brand / client |
street_address | string | address of the client |
postal code | string | postal code of the client |
insta_id | integer | instagram unique identifier [pk] |
ig_username | string | instagram username |
ig_password | string | instagram password if given |
ig_public_email | string | instagram public email |
ig_public_phone_country_code | integer | instagram phone country code |
ig_public_phone_number | integer | instagram public phone number |
ig_contact_phone_number | integer | instagram phone number |
ig_url | string | url of the instagram account |
ig_profile_pic_url | string | instagram profile pictures url |
ig_media_count | integer | instagram total number of posts |
ig_is_private | boolean | if the ig account is private |
ig_is_verified | boolean | if ig account is verified |
ig_category | string | what is the category of account ex: Comunity |
ig_following_count | integer | total number of users being followed |
ig_follower_count | integer | total number of followers |
ig_followers_ratio | integer | ratio of following / followers |
ig_biography | string | the last text biography from instagram |
ig_latitude | string | registered instagram latitude |
ig_longitude | string | registered instagram latitude |
ig_external_url | string | website url from instagram |
created_at | integer | timestamp of creation date |
updated_at | integer | timestamp of last updated date |
vertical_id | integer | foreign key for verticals table |
community_id | integer | foreign key for communities |
Notes:
- One
brand
belongs to onecommunity
- One
brand
belongs to onevertical
- N
brands
are followed by Mfans
- One
brand
enrolls in Ncampaigns
- N
brands
have M potentialcandidates
for campaigns
Represents the various Areas that Zyper operates on (Fashion, Movies, Cars)
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | key |
name | string | name of the brand / client |
Notes:
- N
verticals
are appropriate to Mcandidates
- One
vertical
is associated to onebrand
- N
verticals
are appropriate to Mfans
Represents the Fans of a Brand that engage in a Social Media Campaign
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | [pk] key |
name | string | name of the brand / client |
street_address | string | address of the client |
postal code | string | postal code of the client |
insta_id | integer | instagram unique identifier [pk] |
ig_username | string | instagram username |
ig_password | string | instagram password if given |
ig_public_email | string | instagram public email |
ig_public_phone_country_code | integer | instagram phone country code |
ig_public_phone_number | integer | instagram public phone number |
ig_contact_phone_number | integer | instagram phone number |
ig_url | string | url of the instagram account |
ig_profile_pic_url | string | instagram profile pictures url |
ig_media_count | integer | instagram total number of posts |
ig_is_private | boolean | if the ig account is private |
ig_is_verified | boolean | if ig account is verified |
ig_category | string | what is the category of account ex: Comunity |
ig_following_count | integer | total number of users being followed |
ig_follower_count | integer | total number of followers |
ig_followers_ratio | integer | ratio of following / followers |
ig_biography | string | the last text biography from instagram |
ig_latitude | string | registered instagram latitude |
ig_longitude | string | registered instagram latitude |
ig_external_url | string | website url from instagram |
created_at | integer | timestamp of creation date |
updated_at | integer | timestamp of last updated date |
Notes:
- N
fans
enroll in Mcampaigns
- N
fans
are following Mbrands
- One
fan
generates NUGSs
- N
fans
are suited for MVerticals
Represents the group of Fans of a Brand that is activated through a series of campaings.
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | key |
name | string | name of the community |
goal_num_users | integer | goal of total number of active fans |
brand_id | integer | foreign key to brand_id |
Describes the goals and duration of a campaign where a group of fans are enrolled to produce UGCs about the products of the Brand.
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | key |
name | string | name of the community |
goal_num_users | integer | goal of total number of active fans |
community_id | integer | foreign key to communities |
cost_per_fan | decimal | how much the brand is paying per fan |
length_of_campaign | integer | number of days for the duration of the campaign |
limit_geolocations | array | Lists of geolocations ids to restrict fans |
total_active_fans | integer | Total number of fans that are active on the campaign |
goal_total_UGC | integer | Total number of required UGC per campaign |
goal_total_engagement_rate | float | Percentage of engagement with the UGC on the campaign |
goal_total_reach | integer | Total number of people to reach with the campaign UGC |
For each campaign at any moment in time we should be able to answear the following queries
Current situation
- number of fans
- number of UGC
- number of likes
- number of comments
- number of reposts
calculated fields
- total engagement ( sum of UGC total fans engagement %)
- total reach / market voice ( sum of brand fans followers)
- engagement (percentage of likes or comments or reposts or #hastag)
- geolocations distribution
- territorial reach
costs
- cost per brand fan
- cost per acquisition
- cost per content engagement (https://docs.google.com/spreadsheets/d/1SMH3SCnqTIrxUjGLxeqnGs1_ikg0LScuohkKeeLV4k8/edit )
- id
- tag
- description
- community_id
Multiple Hashtags can be associated with a Campaing and with the UGC produced by the fans
Stores the User generated content and the metrics of engagement.
- id
- url
- name
- caption
- caption_edited
- instagram_id
- like_count
- image_url
- small_image_url
- device_timestamp
- created_at
- hashtag_id
- brand_id
- community_id
- campaign_id
- fan_id
Represents all the potential Fans of a Brand that have certain requirements like they are already following the brand, they use the brand hashtags, they have similar interests etc.
This entity represents a potential member of a future campaign. To be a successfull fan he needs to meet certain criteria like his reach, engagement rate, influence, style etc. and finally he has to accept to enroll in the campaign and fullfill the conditions the brand imposes.
NAME OF FIELD | TYPE | DESCRIPTION |
---|---|---|
id | integer | [pk] key |
name | string | name of the brand / client |
street_address | string | address of the client |
postal code | string | postal code of the client |
insta_id | integer | instagram unique identifier [pk] |
ig_username | string | instagram username |
ig_password | string | instagram password if given |
ig_public_email | string | instagram public email |
ig_public_phone_country_code | integer | instagram phone country code |
ig_public_phone_number | integer | instagram public phone number |
ig_contact_phone_number | integer | instagram phone number |
ig_url | string | url of the instagram account |
ig_profile_pic_url | string | instagram profile pictures url |
ig_media_count | integer | instagram total number of posts |
ig_is_private | boolean | if the ig account is private |
ig_is_verified | boolean | if ig account is verified |
ig_category | string | what is the category of account ex: Comunity |
ig_following_count | integer | total number of users being followed |
ig_follower_count | integer | total number of followers |
ig_followers_ratio | integer | ratio of following / followers |
ig_biography | string | the last text biography from instagram |
ig_latitude | string | registered instagram latitude |
ig_longitude | string | registered instagram latitude |
ig_external_url | string | website url from instagram |
created_at | integer | timestamp of creation date |
updated_at | integer | timestamp of last updated date |
Notes:
- The candidates table needs more fields to capture the satus of the collection, and other important filtering criteria to be identified.
- There are some basic criteria to filter candidates immediatly: (public vs. private account), number of followers bellow a certain Minimum, etc.
This is a sample of a statistic with the relevance of each of the candidate attributes. Some are exclusive to business accounts (attributes with count 155)
{
"pk": 1321
"username": 1321
"full_name": 1321
"is_private": 1321
"profile_pic_url": 1321
"is_verified": 1321
"has_anonymous_profile_picture": 1321
"media_count": 1321
"follower_count": 1321
"following_count": 1321
"biography": 1321
"external_url": 1321
"usertags_count": 1321
"is_favorite": 1321
"has_chaining": 1321
"hd_profile_pic_url_info": 1321
"is_business": 1321
"include_direct_blacklist_status": 1321
"has_unseen_besties_media": 1321
"auto_expand_chaining": 1321
"geo_media_count": 1248
"hd_profile_pic_versions": 1020
"profile_pic_id": 971
"chaining_suggestions": 608
"has_biography_translation": 506
"external_lynx_url": 271
"public_email": 155
"public_phone_number": 155
"public_phone_country_code": 155
"contact_phone_number": 155
"city_id": 155
"city_name": 155
"zip": 155
"address_street": 155
"direct_messaging": 155
"latitude": 155
"longitude": 155
"category": 155
"is_call_to_action_enabled": 155
"business_contact_method": 155
"fb_page_call_to_action_id": 155
"profile_context": 2
"profile_context_links_with_user_ids": 2
"profile_context_mutual_follow_ids": 2
}
Users of the Zyper system