{"id":22779822,"url":"https://github.com/jamster3000/joan-smart-assistant","last_synced_at":"2025-07-01T12:36:36.372Z","repository":{"id":203606907,"uuid":"708734242","full_name":"Jamster3000/Joan-smart-assistant","owner":"Jamster3000","description":"A smart assistant built purly in python. Uses different machine learning models to keep up speed and efficiency  for lower resourced devices.","archived":false,"fork":false,"pushed_at":"2024-12-26T10:49:33.000Z","size":2834,"stargazers_count":1,"open_issues_count":40,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-30T08:13:26.109Z","etag":null,"topics":["machine-learning","python","python-3","smart-assistant"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jamster3000.png","metadata":{"files":{"readme":"README.md","changelog":"news.py","contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-10-23T09:28:30.000Z","updated_at":"2024-12-26T10:49:36.000Z","dependencies_parsed_at":"2024-05-03T15:08:47.232Z","dependency_job_id":"bc001b8d-d2f5-4bf3-8b10-f023b101f4af","html_url":"https://github.com/Jamster3000/Joan-smart-assistant","commit_stats":null,"previous_names":["jamster3000/joan-smart-assistant"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jamster3000%2FJoan-smart-assistant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jamster3000%2FJoan-smart-assistant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jamster3000%2FJoan-smart-assistant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jamster3000%2FJoan-smart-assistant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jamster3000","download_url":"https://codeload.github.com/Jamster3000/Joan-smart-assistant/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251666361,"owners_count":21624298,"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":["machine-learning","python","python-3","smart-assistant"],"created_at":"2024-12-11T20:09:55.542Z","updated_at":"2025-04-30T08:13:30.105Z","avatar_url":"https://github.com/Jamster3000.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"(Still working on)\n\n# Joan 🤖 - Your smart assistant\n\nWelcome to **Joan**, a lightweight and resource-efficient smart assistant designed to run seamlessly on low-resource systems like Raspberry Pi. **Joan** leverages machine learning (scikit-learn) for speed and control, making it a user-friendly alternative to traditional chatbot frameworks. Unlike typical AI frameworks, **Joan** prioritizes transparency and simplicity for easy understanding.\n\n## Features 🚀\n- **Game Time:** Play blackjack, rock-paper-scissors, or a number guessing game.\n- Ask it to open a specific video on `Youtube`\n- **Entertainment:** **Joan** can tell jokes, riddles, trivia questions, and even gives facts and advice (Do not follow)\n- **open Websites:** Open's random [XKCD](https://xkcd.com/) With a random image; akinator and the wiki game.\n- **Wikihow:** Can search for wikihow articles and either read them to you or show you the webpage.\n- **news:** Can give the latest news articles\n- **Passcode:** A Passcode can be set up. This can be used to confirm you asked for certain commands, such as a factory reset (e.g. \"factory reset [passcode]\")\n- **recipes:** Has built in dataset of recipes allowing you to ask for a specific one.\n- **Factory rest:** This will remove any data that it has collected from the user, but it still remembers what it has learned from **wolfram Alpha**\n- **weather:** Can ask for the current weather, what the weather will be like tomorrow or on a specific day.\n- **Time/date:** Can tell the time, full date, the day, the month, and the year.\n- **Security:** **Joan** can scan a website to determine whether it's safe, proceed with caution, or dangerous. you must have the website open or copy the URL of the website for this to work.\n\n\u003e [!NOTE]\n\u003e In addition to all these features, there are also ***Easter Eggs*** if you can find them 🥚\n\n## API's and Services 🌐\n**Joan** integrates seamlessly with various APIs:\n\n- **Wolfram  Alpha** - Used to respond to anything that **Joan** can't or doesn't have a response for. **Joan** saves the answer allowing it to do \"Live Learning\".\n- **Accuweather** - Used to get weather data from a location (The user doesn't need to give **Joan** their location, It just knows).\n- **omdbapi** - (Open Movie Database) API for getting data about movies, although Wolfram Alpha also knows information about movies.\n- **spaceflightnewsapi** - Gets news about space flights and events in relation to it.\n- **currentsapi** - Gets general news which also contains keywords to each article allowing the user to filter news sources.\n- **genderize** - This is used to determine what gener the user is, this seems to work pretty well.\n- **totalvirus** - this is used to scan a website, whether that be the website that is open or a link that was last copied.\n- **ipapi** - This is used to get the user's IP data, which includes their current location.\n\n\u003e [!WARNING]\n\u003e While in the development phase the API keys are visible in the code and can be used easily. Many of these API's have limited usage every `week/month`.\n\n## Prerequisites 🛠️\n\nEnsure the following libraries are installed:\n\n- Pandas\n- Scikit-learn\n- pywikihow\n- joblib\n- youtube-search-python\n- nltk\n- inflect\n- fuzzywuzzy\n- requests\n- pyperclip\n- pyautogui\n- word2number\n- ipinfo\n- elevenlabs\n- huggingface_hub\n\n`pip3 install pandas, scikit-learn pywikihow joblib youtube-search-python nltk inflect fuzzywuzzy requests pyperclip pyautogui word2number ipinfo elevenlabs huggingface_hub`\n\n\u003e [!NOTE]\n\u003e Since this is being developed to run on devices such as a raspberry pi, the modules and libraries above should all install and work as expected, even on 32-bit system.\n\n\n## How To Use 🚀\nRun **Joan.py**, and within 3 to 5 seconds, you're ready to explore the capabilities.\n\n## **Response** Tags 🏷️\n\u003csub\u003eEach tag is surrounded by \"\u003c\" and \"\u003e\"\u003c/sub\u003e\n\n- user-name - can include the user's name\n- date - Includes the date whether that is current date or some other date\n- emotion - a type of emotion\n- F-food - The users favourite food\n- game-name - Name of the game (used for user peference when game has multiple names).\n- riddle-answe - the answer to the riddle\n- correct-answer - The correct answer to a trivia question\n- list-games - a list of games that can be played with **joan**\n- unsafe-scans - the amount of scans that returned as a dangerous website\n- food - food\n- sure-name - the surename of the user\n\n\n## Data Files 📂:\n- datasets/ET.csv - Entity tag, this is the main file for recognizing what the user has inputted.\n- datasets/ER.csv - Emotion recognition, used to detect the user's emotins based on their input.\n- Expected content.txt - This includes what sort of input is expected next.\n- last time used.txt - The last time **Joan** was used, which is used within the code.\n- responses.csv - A long list in each row containing different variations of outputs.\n- user data.json - all the user's data for **Joan** to remember.\n\n![GitHub issues](https://img.shields.io/github/issues/jamster3000/Joan-smart-assistant)\n![Last Commit](https://img.shields.io/github/last-commit/jamster3000/Joan-smart-assistant)\n![GitHub Stars](https://img.shields.io/github/stars/jamster3000/Joan-smart-assistant?style=social)![Code Size](https://img.shields.io/github/languages/code-size/jamster3000/Joan-smart-assistant)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamster3000%2Fjoan-smart-assistant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamster3000%2Fjoan-smart-assistant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamster3000%2Fjoan-smart-assistant/lists"}