An AI-powered cross-platform application that provides fact-checking and counter-argument analysis for selected text or screenshots. BSM runs in your system tray/menu bar and can be triggered with a global hotkey to analyze any text on your screen.
- Global Hotkey: Trigger analysis with a customizable hotkey (default: Ctrl+Shift+B)
- Text Selection: Analyzes currently selected text from any application
- Screenshot OCR: Extracts and analyzes text from screenshots using OCR
- Multiple AI Providers: Supports OpenAI, Claude, and local Ollama models
- Attitude Modes:
- Argumentative: Aggressive fact-checking focused on finding flaws
- Balanced: Objective analysis with neutral tone
- Helpful: Educational and constructive feedback
- Beautiful Dark Theme: Modern dark UI with sleek styling and readable formatting
- Markdown Results: Displays results in a resizable popup with beautifully formatted Markdown
- History Storage: Saves all analyses to a local SQLite database with search capabilities
- Cross-Platform: Works on Windows, macOS, and Linux
- Privacy-Focused: Encrypted API key storage and local-only data
- Python 3.8+
- Tesseract OCR (for screenshot text extraction)
- macOS:
brew install tesseract
- Ubuntu/Debian:
sudo apt-get install tesseract-ocr
- Windows: Download from GitHub releases
- macOS:
# Clone the repository
git clone <repository-url>
cd bsm
# Install dependencies
pip install -r requirements.txt
# Install the package
pip install -e .
-
Run BSM:
python -m bsm.main
Or if installed:
bsm
-
Configure API Keys:
- Right-click the system tray icon
- Select "Settings"
- Add your OpenAI and/or Claude API keys
- Configure your preferred LLM provider
-
Use BSM:
- Select text anywhere on your screen
- Press the global hotkey (Ctrl+Shift+B)
- View the analysis results in the popup window
BSM supports multiple AI providers:
- OpenAI: Requires API key from OpenAI
- Claude: Requires API key from Anthropic
- Ollama: Local LLM (requires Ollama to be running)
- Argumentative: Focuses on finding flaws and constructing strong counter-arguments
- Balanced: Provides objective, neutral analysis
- Helpful: Offers educational, constructive feedback
Default hotkey is Ctrl+Shift+B
(or Cmd+Shift+B
on macOS). You can customize this in the settings.
- Select text in any application (browser, document, etc.)
- Press the global hotkey
- BSM analyzes the text and shows results
- If no text is selected, BSM can analyze screenshots
- Press the global hotkey
- BSM captures the screen, extracts text via OCR, and analyzes it
- Analyze Clipboard: Analyzes text currently in clipboard
- Analyze Screenshot: Takes a screenshot and analyzes extracted text
- Settings: Opens the configuration window
- Show History: Views past analyses (coming soon)
- Quit: Exits the application
bsm/
βββ bsm/
β βββ core/
β β βββ settings.py # Settings management with encryption
β β βββ database.py # SQLite database operations
β β βββ ai_providers.py # AI provider implementations
β βββ ui/
β β βββ result_window.py # Main results display window
β β βββ settings_window.py # Settings configuration window
β βββ utils/
β β βββ hotkey_manager.py # Global hotkey management
β β βββ text_capture.py # Text selection and OCR
β βββ main.py # Main application entry point
βββ requirements.txt
βββ setup.py
βββ README.md
# Clone and enter directory
cd bsm
# Install in development mode
pip install -e .
# Run the application
python -m bsm.main
- Create a new provider class inheriting from
AIProvider
inai_providers.py
- Implement the required methods
- Register the provider in the
BSMApplication.setup_ai_providers()
method
- Check if another application is using the same hotkey
- Try changing the hotkey in settings
- On macOS, ensure BSM has accessibility permissions
- Verify Tesseract is installed and in PATH
- Check if tesseract path is correctly set for your platform
- Ensure screenshot permissions are granted
- Verify API keys are correct
- Check internet connection
- Ensure you have sufficient API credits
- API keys are encrypted locally using Fernet encryption
- Analysis history is stored locally in SQLite database
- No data is sent to third parties except chosen AI providers
- All network requests are made directly to AI provider APIs
[License information would go here]
[Contributing guidelines would go here]