{"id":16560870,"url":"https://github.com/shobrook/smarterreply","last_synced_at":"2025-03-21T11:31:42.574Z","repository":{"id":54752977,"uuid":"188487944","full_name":"shobrook/SmarterReply","owner":"shobrook","description":"Chrome extension for creating custom Smart Replies in Gmail","archived":false,"fork":false,"pushed_at":"2021-03-20T16:18:30.000Z","size":1841,"stargazers_count":45,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-18T00:46:20.509Z","etag":null,"topics":["chrome-extension","gmail","gmail-extension","information-retrieval","language-model","recommendation-system"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shobrook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-24T21:11:25.000Z","updated_at":"2024-12-30T19:03:56.000Z","dependencies_parsed_at":"2022-08-14T01:50:19.765Z","dependency_job_id":null,"html_url":"https://github.com/shobrook/SmarterReply","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shobrook%2FSmarterReply","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shobrook%2FSmarterReply/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shobrook%2FSmarterReply/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shobrook%2FSmarterReply/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shobrook","download_url":"https://codeload.github.com/shobrook/SmarterReply/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244790827,"owners_count":20510817,"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","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":["chrome-extension","gmail","gmail-extension","information-retrieval","language-model","recommendation-system"],"created_at":"2024-10-11T20:30:19.320Z","updated_at":"2025-03-21T11:31:42.211Z","avatar_url":"https://github.com/shobrook.png","language":"JavaScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg width=\"45%\" src=\"./assets/logo.png\" /\u003e\n  \u003cbr /\u003e\n\u003c/h1\u003e\n\nGmail has a feature called \"Smart Reply,\" where users can select from a list of recommended responses when replying to an email. But Gmail doesn't allow you to create your own smart replies. _Smarter_ Reply for Gmail is a Chrome extension which does let you create custom replies, and will learn to recommend the right reply for a given email.\n\n\u003cimg src=\"assets/demo.png\" /\u003e\n\n## Installation\n\nYou can download the extension on the [Chrome web store](https://chrome.google.com/webstore/detail/smarter-reply-for-gmail/mnclffmabpkinejmfajagggbmehcilgi). Or you can install the development version of the extension by cloning the repo, navigating to [chrome://extensions/](chrome://extensions/), selecting \"Load Unpacked\" in the top-left corner, and uploading the repo.\n\n## Usage\n\nBefore using Smarter Reply, go to your Gmail settings and enable Smart Compose. It is usually enabled by default.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"589\" alt=\"smart_compose_setting\" src=\"https://user-images.githubusercontent.com/33335169/105696259-121d0680-5ed1-11eb-8a94-cd62e083c3f6.png\"\u003e\n\u003c/p\u003e\n\n### 1. Creating a Smarter Reply\n\nTo create a Smarter Reply, open an email that already has smart replies. Click the \"+\" button and you should see a prompt for creating a new smart reply. Enter the title and body of your message and then click \"Create.\"\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"65%\" src=\"assets/create_smarter_reply.png\" /\u003e\n\u003c/p\u003e\n\n### 2. Using a Smarter Reply\n\nTo use your Smarter Reply, simply click it as you would a regular smart reply. An email draft should be created and autofilled with your smart reply.\n\n![use_smarter_reply](assets/use_smarter_reply.gif)\n\n### 3. Deleting a Smarter Reply\n\nTo delete a Smarter Reply, click the \"-\" button and then select the Smarter Reply(ies) that you would like to delete. Then click the \"-\" button again.\n\n![delete_smarter_reply](assets/delete_smarter_reply.gif)\n\n## How it Works\n\nSmarter Reply is written in pure Javascript and has no dependencies. The event loop is pretty straightforward:\n\n1. Background script (`background.js`) detects when a user opens an email and sends a signal to the content script (`content.js`)\n2. Content script scrapes the email content and sends it back to the background script\n3. Background script searches the Chrome cache for the best matching Smarter Replies (\\*) and sends them to the content script\n4. Content script injects JS into the Gmail frontend to render the Smarter Replies\n5. When a Smarter Reply is created, clicked, or deleted on the frontend, the content script sends a signal to the background to update the Chrome cache\n\n\\* Smarter Replies are recommended by a unigram model, which calculates the similarity of the received email to the set of emails associated with each Smart Reply. Here's how it works:\n\n1. An opened email is scraped and preprocessed (stopword and punctuation removal, uniform capitalization, and stemming)\n2. For each Smarter Reply, a bag-of-words (BoW) model is fitted from the previous emails associated with that Smarter Reply\n3. The BoW model produces a vector for the input email, _x\u003csub\u003ei\u003c/sub\u003e_, and each associated email, _y\u003csub\u003e0\u003c/sub\u003e, y\u003csub\u003e1\u003c/sub\u003e, ..., y\u003csub\u003en\u003c/sub\u003e_\n4. _y\u003csub\u003e0\u003c/sub\u003e, y\u003csub\u003e1\u003c/sub\u003e, ..., y\u003csub\u003en\u003c/sub\u003e_ are summed to create _y_, a vector representing word frequencies across all associated emails\n5. Cosine similarity between _x\u003csub\u003ei\u003c/sub\u003e_ and _y_ is calculated, and the Smarter Replies with the highest similarity measures are returned to the frontend\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshobrook%2Fsmarterreply","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshobrook%2Fsmarterreply","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshobrook%2Fsmarterreply/lists"}