{"id":22382110,"url":"https://github.com/googleinterns/step51-2020","last_synced_at":"2025-07-31T03:31:04.138Z","repository":{"id":37946102,"uuid":"273537814","full_name":"googleinterns/step51-2020","owner":"googleinterns","description":"2020 Google STEP Capstone Project","archived":true,"fork":false,"pushed_at":"2022-09-01T23:30:26.000Z","size":147895,"stargazers_count":3,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T19:29:43.687Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/googleinterns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-19T16:20:14.000Z","updated_at":"2023-11-09T21:22:33.000Z","dependencies_parsed_at":"2022-09-02T19:11:41.163Z","dependency_job_id":null,"html_url":"https://github.com/googleinterns/step51-2020","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/googleinterns/step51-2020","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep51-2020","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep51-2020/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep51-2020/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep51-2020/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/googleinterns","download_url":"https://codeload.github.com/googleinterns/step51-2020/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleinterns%2Fstep51-2020/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267983363,"owners_count":24176057,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:11:49.890Z","updated_at":"2025-07-31T03:31:03.741Z","avatar_url":"https://github.com/googleinterns.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DSA Campaign Uplift Estimation\n\n### Project Overview\nThis project addresses two main problems with the current Dynamic Search Ads framework. The first involves the lack of transparency associated with automated products and the limited predictability of DSA and machine learning in general. Users have no guarantee that using DSA will produce the results they intend, creating some risk for users attempting to transition over from their traditional keyword campaigns to DSA. The second issue involves the sometimes unnecessary complexity of DSA. Especially for newer advertisers and smaller companies, incorporating DSA into their already confusing keyword campaigns only adds another layer of complexity.\n\nTo address these issues, we built a web app that allows advertisers to run test DSA campaigns and estimate the uplift DSA can bring to their keyword campaigns. Users can experiment with different DSA campaign settings when creating their campaigns, and easily view their campaign results on the home page and compare the results of their different configurations. There is also an additional Google Hangouts Bot that allows users to perform all of the same functions on the website but in a step-by-step, chat-based context. By allowing users to clearly see the value DSA can bring to their ad campaigns, this project hopes to convince more users to incorporate DSA into their ad campaigns.\n\nThis project is a model of what DSA could eventually implement. Many changes would have to be made for this project to be used in production, such as a more accurate estimation feature, a cleaner, simpler UI, and auto-generated campaign settings using AI.\n\n### User Experience\nWhen users access the site, they first have to login in order to view their created DSA campaigns. When they access the home page, they will see information on all of their previously created DSA campaigns in the form of charts and graphs. Three test keyword campaigns have been created so that all users can interact with the UI and experiment with creating their own DSA campaigns. If implemented in production, the tool would pull keyword campaigns from a user's existing Google Ads account.\n\nThe create page is where users create and run DSA campaigns. After a user inputs all the required settings and runs the campaign, the estimation results will be able to be viewed on the home page.\n\nThe compare page allows users to easily compare the results of their different DSA campaigns. Users can select any number of their created DSA campaigns to compare, and the uplift statistics will be displayed along with the inputted campaign settings and generated search query reports.\n\n### Estimation Algorithm\nThe estimation process takes into account all of the factors inputted on the create page, as well as the settings of the associated keyword campaign. The estimation process does not resemble the way DSA works in production - various formulas are used to factor in the settings to obtain the rough estimates. The parts of the process that involve the most complexity are generating the locations and website factors. To obtain the locations factor, the algorithm uses 2019 US Census data population estimates to analyze the number of people targeted in the DSA campaign versus that of the keyword campaign. This relative difference is used in the final estimation calculations.\n\nTo create a website factor for the provided domain and target page links, the algorithm implements a web crawler to analyze the target pages and many of the pages linked to on the domain. The algorithm performs a keyword analysis on pages to search for a common theme or thread of ideas. While performing the keyword analyses, the algorithm also generates the SQR as a by-product.\n\n### Demo Video\nhttps://www.youtube.com/watch?time_continue=1\u0026v=3CFrmuMjKig\u0026feature=emb_logo\n\n### Contact\nFor any questions/feedback, please send an email to one of the following depending on the nature of your inquiry:\n\nNevin George (nevingeorge2000@gmail.com) - created the compare page and developed the estimation algorithm.\\\nNeel Bagora (neelbagora@gmail.com) - created the create page and Hangouts Bot.\\\nErik Garcia (erikgarciam246@gmail.com) - created the login and home pages.\n\n### References\nWe used 2019 US Census Population Estimates in our calculations.\\\nLink: https://www.census.gov/data/tables/time-series/demo/popest/2010s-state-total.html#par_textimage_1574439295\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleinterns%2Fstep51-2020","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogleinterns%2Fstep51-2020","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleinterns%2Fstep51-2020/lists"}