{"id":18975019,"url":"https://github.com/bufferapp/mrr-forecaster","last_synced_at":"2025-08-12T18:11:38.925Z","repository":{"id":146340131,"uuid":"81010584","full_name":"bufferapp/mrr-forecaster","owner":"bufferapp","description":"A tool to forecast MRR.","archived":false,"fork":false,"pushed_at":"2018-09-06T09:22:56.000Z","size":112,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-26T05:13:51.076Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"R","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/bufferapp.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-02-05T17:56:51.000Z","updated_at":"2018-09-06T09:22:57.000Z","dependencies_parsed_at":"2023-04-19T11:16:30.693Z","dependency_job_id":null,"html_url":"https://github.com/bufferapp/mrr-forecaster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bufferapp/mrr-forecaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bufferapp%2Fmrr-forecaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bufferapp%2Fmrr-forecaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bufferapp%2Fmrr-forecaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bufferapp%2Fmrr-forecaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bufferapp","download_url":"https://codeload.github.com/bufferapp/mrr-forecaster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bufferapp%2Fmrr-forecaster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270109680,"owners_count":24528876,"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-08-12T02:00:09.011Z","response_time":80,"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-11-08T15:17:04.164Z","updated_at":"2025-08-12T18:11:38.878Z","avatar_url":"https://github.com/bufferapp.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Revenue Forecaster\n\nThe purpose of this application is to predict what monthly recurring revenue (MRR) will be in the future.\n\n## Methodology\n\nThe forecaster works by pulling revenue data in from [this view in Looker](https://looker.buffer.com/looks/4468). The revenue data is aggregated by day and time series object is created.\n\nAfter the time series object has been created, the forecaster fits an exponential smoothing state space model to the data.\n\n```{r}\n# fit exponential smoothing model\netsfit \u003c- ets(ts)\n```\n\nThe forecast is created from the ETS model with the generic `forecast()` function from Rob J Hyndman's `forecast` package.\n\n![](images/mrr_forecast.png)\n\nThe application then writes the model results to Redshift with the `write_to_redshift()` function in the `buffer` package.\n\n## How it Works\n\nTo run the application locally, make sure that you have Looker, Redshift, and AWS credentials in your `.env` file. Then you can run the following command.\n\n```\nmake run\n```\n\n## Deployment\n\nThis project is configured to run as a Kubernetes cron job running on our Apollo Cluster. Pushing to the master branch on GitHub will deploy to production, using Cloud Build.\n\nIf you need to deploy manually, make sure you have `gcloud` installed and your authenticated for the `buffer-data` project. Then you can just run `make deploy`.\n\nLet Julian know if you have any thoughts or questions! Feel free to create issues and submit pull requests. :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbufferapp%2Fmrr-forecaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbufferapp%2Fmrr-forecaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbufferapp%2Fmrr-forecaster/lists"}