{"id":18263681,"url":"https://github.com/samgozman/fin-thread","last_synced_at":"2025-04-04T20:31:12.665Z","repository":{"id":218344666,"uuid":"718727810","full_name":"samgozman/fin-thread","owner":"samgozman","description":"🤖 Automatic financial news feed powered by AI.","archived":false,"fork":false,"pushed_at":"2024-08-03T13:19:31.000Z","size":481,"stargazers_count":20,"open_issues_count":28,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T16:55:13.797Z","etag":null,"topics":["ai","bot","financial","golang","llms","mistral","news","openai","telegram"],"latest_commit_sha":null,"homepage":"https://t.me/finthread","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samgozman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"samgozman"}},"created_at":"2023-11-14T17:17:53.000Z","updated_at":"2025-02-20T21:44:05.000Z","dependencies_parsed_at":"2024-03-14T07:28:41.818Z","dependency_job_id":"9438b073-f953-4624-a37d-8c876167dc8e","html_url":"https://github.com/samgozman/fin-thread","commit_stats":null,"previous_names":["samgozman/fin-thread"],"tags_count":153,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samgozman%2Ffin-thread","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samgozman%2Ffin-thread/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samgozman%2Ffin-thread/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samgozman%2Ffin-thread/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samgozman","download_url":"https://codeload.github.com/samgozman/fin-thread/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247246328,"owners_count":20907776,"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":["ai","bot","financial","golang","llms","mistral","news","openai","telegram"],"created_at":"2024-11-05T11:12:13.759Z","updated_at":"2025-04-04T20:31:11.901Z","avatar_url":"https://github.com/samgozman.png","language":"Go","funding_links":["https://github.com/sponsors/samgozman"],"categories":[],"sub_categories":[],"readme":"# FinThread - News telegram bot powered by AI\n\n![Go](https://img.shields.io/badge/Go-%2300ADD8.svg?logo=go\u0026logoColor=white)\n[![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?logo=telegram\u0026logoColor=white)](https://t.me/finthread)\n[![Go Doc](https://godoc.org/github.com/?status.svg)](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/)\n[![codecov](https://codecov.io/gh/samgozman/fin-thread/graph/badge.svg?token=G8YV1UZC03)](https://codecov.io/gh/samgozman/fin-thread)\n\nWelcome to **FinThread**! FinThread is designed to aggregate financial news from a plethora of sources,\nanalyze the content using the cutting edge in AI technology, and deliver concise and relevant news\ndirectly to your fingertips through [Telegram](https://t.me/finthread) public channel.\n\n![finthread](https://github.com/samgozman/fin-thread/assets/3392560/0d5ac8bf-8720-4116-a369-3f7b8e05cb24)\n\n## Features\n\n- **News Aggregator**: Fetches financial news articles from a wide range of sources, ensuring comprehensive news feed.\n- **AI-Powered Filtering**: Uses advanced AI models such as Mistral and OpenAI's GPT to filter out unreliable and\n  irrelevant news content, focusing on quality and accuracy.\n- **Stock Detection**: Identifies stocks that are likely to be affected by the news stories to provide context and\n  relevance.\n- **AI news Rewriter**: Enhances readability and clarity by rewriting news articles, making them simpler to understand\n  while retaining their essential information.\n- **Telegram Publishing**: Automatically publishes the refined news to a dedicated Telegram channel for ease of access\n  and real-time updates.\n- **Economic Calendar Parsing**: Monitors and reports on economic events throughout the week, delivering important\n  financial calendar updates.\n- **Real-Time Event Tracking**: Stays alert to changes in economic events to provide the channel with the most\n  up-to-date information.\n- **Summarise Latest News**: Summarises the latest news articles to provide a quick overview of the most important\n  events.\n\n## Project Goals\n\nFinThread is not just a bot.\nIt's an ambitious project aiming to achieve 100% autonomous management of a news channel,\nmaking all necessary decisions independent of human intervention.\n\n## Usage Guide\n\nHere is a quick guide on how to use FinThread if you want to run it yourself.\n\n### Project Structure\n\nThe project is split into several entities:\n\n- **[Journalist](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/journalist/)**: Journalists are\n  responsible for fetching news from various sources.\n  One journalist can have multiple Providers (like RSS feeds).\n  Ideally, each journalist should be responsible for his own specific domain (like cryptocurrencies, stocks, etc.).\n- **[Composer](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/composer/)**: Composers are\n  responsible for composing the news and filtering out irrelevant content using LLMs.\n- **[Publisher](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/publisher/)**: Publishers are\n  responsible for publishing the news to a specific channel.\n- **[Archivist](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/archivist/)**: Archivists are\n  responsible for saving the news in a database and retrieving it when needed.\n- **[Scavenger](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/scavenger/)**: Scavengers are\n  responsible for fetching economic calendar events and other sources that need a custom\n  implementation.\n- **[Job](https://samgozman.github.io/fin-thread/github.com/samgozman/fin-thread/jobs/)**: Is a set of schedule-based\n  tasks that are executed periodically.\n  Jobs combine all the above entities to achieve a specific goal.\n\n### Configuration\n\nConfiguration is a bit scattered across the project because it's an early stages.\nSome things can be configured via ENV, some hardcoded, and some will require you to edit the code directly.\nI hope to improve this in the future.\n\nEnvironment variables are defined in `.env` file. You can copy `.env_example` and fill in the values.\n\nSome things, like flagging words, are hardcoded in the code. You can find them in `config.go` file.\n\nFor now, Journalists are defined in the code directly.\nThe same applies to their settings.\nIn this demo, I've used two journalists that fetch news from RSS feeds.\nProviders for them are defined in `MARKET_JOURNALISTS` and `BROAD_JOURNALISTS` envs in JSON format.\n\n### Running\n\nYou can use `docker compose` to run the project locally.\n\n```bash\ndocker compose up\n```\n\nor by running _Makefile_ command:\n\n```bash\nmake run\n```\n\n---\n\n_FinThread is an open-source pet project (proof of concept) and not affiliated with any financial institutions.\nThe news provided is for informational purposes only and not intended for trading, selling or investing advice._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamgozman%2Ffin-thread","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamgozman%2Ffin-thread","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamgozman%2Ffin-thread/lists"}