The GUI Runner provides a user-friendly graphical interface for the Job Prospect Automation system, allowing users to execute CLI commands without needing to use the command line. It's built using Python's tkinter library for maximum compatibility across Windows, macOS, and Linux platforms.
- Tab-based Navigation: Easy access to different functionality areas
- Dashboard: Quick overview of system status and recent campaigns
- Real-time Output: View command output as it runs
- Configuration Management: Easy setup of environment and config files
- Automatic Configuration Detection: Automatically finds config.yaml and profile files
- Environment Variable Management: Set and manage environment variables within the GUI
- System status overview
- Quick access buttons to other tabs
- Recent campaign history (planned enhancement)
- Run company discovery with customizable parameters:
- Dry run mode
- Limit (number of companies to process)
- Batch size
- Campaign name (optional)
- Sender profile selection
- Execute complete campaigns with email generation:
- Dry run mode
- Auto setup dashboard
- Limit (number of companies to process)
- Campaign name
- Sender profile selection
- Generate emails option
- Send emails option
- Process a specific company:
- Dry run mode
- Company name (required)
- Domain (optional)
- Sender profile selection
- Create personalized emails for prospects:
- Dry run mode
- Two generation methods:
- Specific Prospect IDs (comma-separated)
- Recent Prospects (with limit parameter)
- Email template selection
- Sender profile selection
- Validate profile option
- Interactive profile option
- Send immediately option
- Configuration management:
- Environment file selection (.env)
- Config file selection (config.yaml)
- Default sender profile selection
- Configuration validation
- File editing capabilities
- Environment variable management:
- Add, edit, and delete environment variables
- Apply variables to current session
- Save variables to .env file
- Automatic configuration file detection:
- Checks for config.yaml at startup
- Discovers sender profiles automatically
- Prompts user to create or browse for files if none found
# Using the run script
python run_gui.py
# On Windows
run_gui.bat
# On Linux/macOS
./run_gui.sh- Select a Command Tab: Choose the functionality you want to use
- Configure Options: Set the parameters for your command
- Run Command: Click the appropriate "Run" button
- View Output: Watch the command execution in the output area
- Cancel if Needed: Use the Cancel button to stop long-running operations
To use the new generate-emails-recent functionality:
- Navigate to the "Generate Emails" tab
- Select the "Recent Prospects" radio button
- Enter the number of recent prospects to generate emails for (default: 10)
- Select an email template if desired
- Click "Generate Emails"
To manage environment variables:
- Navigate to the "Settings" tab
- Scroll down to the "Environment Variables" section
- Add new variables by clicking "Add Environment Variable"
- Edit existing variables directly in the input fields
- Delete variables using the "X" button
- Apply variables to the current session with "Apply Environment Variables"
- Save variables to the .env file with "Save Settings"
The GUI automatically detects configuration files at startup:
- Looks for
config.yamlin common locations - Discovers sender profiles in standard directories
- Prompts user to create or browse for files if none found
- Sets the most recently modified profile as default
The GUI uses several data models to manage configuration:
Base configuration class for all commands:
dry_run: Boolean flag for dry run modeconfig_file: Path to configuration fileenv_file: Path to environment filesender_profile: Path to sender profile file
Configuration for the discover command:
- Inherits from CommandConfiguration
limit: Number of companies to process (default: 10)batch_size: Batch size for processing (default: 5)campaign_name: Optional campaign name
Configuration for the run-campaign command:
- Inherits from CommandConfiguration
limit: Number of companies to process (default: 10)campaign_name: Campaign namegenerate_emails: Flag to generate emails (default: True)send_emails: Flag to send emails (default: False)auto_setup: Auto-setup dashboard (default: False)
- Credential Protection: API keys are never displayed in the UI
- File Access: Secure handling of configuration files through system dialogs
- Process Isolation: Commands are executed in separate processes
- Input Validation: User inputs are validated before command execution
- Required Field Validation: Required fields are clearly marked and validated before command execution
- Environment Variable Security: Environment variables are managed securely within the application
- Advanced Scheduling: Cron-like scheduling for campaigns
- Template Management: UI for creating and editing email templates
- Analytics Dashboard: Graphical representation of campaign metrics
- Multi-User Support: Shared configurations and campaign history
- Plugin Architecture: Extensibility for custom commands
- Preset Management: Save and load command configurations
- Enhanced Dashboard: Real-time campaign monitoring and statistics
- Configuration Backup/Restore: Backup and restore configuration files
- API Key Validation: Validate API keys before allowing command execution
- Profile Preview: Preview sender profiles before using them
- "Module not found" errors: Ensure you're running from the project root directory
- File not found errors: Check that configuration files exist and are accessible
- Permission errors: Ensure you have read/write permissions for configuration files
- GUI not responding: Long-running operations may temporarily block the interface
- Environment variables not applied: Make sure to click "Apply Environment Variables" after making changes
For issues not covered in this documentation:
- Check the main README.md and documentation in the
docs/directory - Run the CLI with
--helpflag for command-specific help - Use the dry-run mode to test commands without making API calls
- Enable verbose logging in the CLI for detailed output
If you're not seeing output in the GUI:
- Ensure you're using the latest version of gui_runner.py
- Check that each tab has its own output area
- Verify that commands are completing successfully
- Try using the Cancel button to see if the output routing is working correctly
If you're having trouble with configuration files:
- Check that config.yaml contains all required API keys
- Verify that the sender profile file is in a supported format (Markdown, JSON, YAML)
- Ensure file permissions allow reading and writing
- Use the "Validate Configuration" button to check for issues