This is a free, open-source initiative - NOT a full-service product!
There are numerous paid interview preparation tools charging hundreds of dollars for comprehensive features like live audio capture, automated answer generation, and more. This project is fundamentally different:
- This is a small, non-profit, community-driven project with zero financial incentive behind it
- The entire codebase is freely available for anyone to use, modify, or extend
- Want features like voice support? You're welcome to integrate tools like OpenAI's Whisper or other APIs
- New features should come through community contributions - it's unreasonable to expect a single maintainer to implement premium features for free
- The maintainer receives no portfolio benefit, monetary compensation, or recognition for this work
Before submitting feature requests or expecting personalized support, please understand this project exists purely as a community resource. If you value what's been created, the best way to show appreciation is by contributing code, documentation, or helping other users.
This project provides a powerful alternative to premium coding interview platforms. It delivers the core functionality of paid interview preparation tools but in a free, open-source package. Using your own OpenAI API key, you get access to advanced features like AI-powered problem analysis, solution generation, and debugging assistance - all running locally on your machine.
The best coding interview tools are often behind expensive paywalls, making them inaccessible to many students and job seekers. This project provides the same powerful functionality without the cost barrier, letting you:
- Use your own API key (pay only for what you use)
- Run everything locally on your machine with complete privacy
- Make customizations to suit your specific needs
- Learn from and contribute to an open-source tool
The codebase is designed to be adaptable:
- AI Models: Though currently using OpenAI's models, you can modify the code to integrate with other providers like Claude, Deepseek, Llama, or any model with an API. All integration code is in
electron/ProcessingHelper.ts
and UI settings are insrc/components/Settings/SettingsDialog.tsx
. - Languages: Add support for additional programming languages
- Features: Extend the functionality with new capabilities
- UI: Customize the interface to your preferences
All it takes is modest JavaScript/TypeScript knowledge and understanding of the API you want to integrate.
- 🎯 99% Invisibility: Undetectable window that bypasses most screen capture methods
- 📸 Smart Screenshot Capture: Capture both question text and code separately for better analysis
- 🤖 AI-Powered Analysis: Automatically extracts and analyzes coding problems using GPT-4o
- 💡 Solution Generation: Get detailed explanations and solutions with time/space complexity analysis
- 🔧 Real-time Debugging: Debug your code with AI assistance and structured feedback
- 🎨 Advanced Window Management: Freely move, resize, change opacity, and zoom the window
- 🔄 Model Selection: Choose between GPT-4o and GPT-4o-mini for different processing stages
- 🔒 Privacy-Focused: Your API key and data never leave your computer except for OpenAI API calls
The application uses unidentifiable global keyboard shortcuts that won't be detected by browsers or other applications:
- Toggle Window Visibility: [Control or Cmd + B]
- Move Window: [Control or Cmd + Arrow keys]
- Take Screenshot: [Control or Cmd + H]
- Delete Last Screenshot: [Control or Cmd + L]
- Process Screenshots: [Control or Cmd + Enter]
- Start New Problem: [Control or Cmd + R]
- Quit: [Control or Cmd + Q]
- Decrease Opacity: [Control or Cmd + []
- Increase Opacity: [Control or Cmd + ]]
- Zoom Out: [Control or Cmd + -]
- Reset Zoom: [Control or Cmd + 0]
- Zoom In: [Control or Cmd + =]
The application is invisible to:
- Zoom versions below 6.1.6 (inclusive)
- All browser-based screen recording software
- All versions of Discord
- Mac OS screenshot functionality (Command + Shift + 3/4)
Note: The application is NOT invisible to:
- Zoom versions 6.1.6 and above
- https://zoom.en.uptodown.com/mac/versions (link to downgrade Zoom if needed)
- Mac OS native screen recording (Command + Shift + 5)
- Node.js (v16 or higher)
- npm or bun package manager
- OpenAI API Key
- Screen Recording Permission for Terminal/IDE
- On macOS:
- Go to System Preferences > Security & Privacy > Privacy > Screen Recording
- Ensure that CodeInterviewAssist has screen recording permission enabled
- Restart CodeInterviewAssist after enabling permissions
- On Windows:
- No additional permissions needed
- On Linux:
- May require
xhost
access depending on your distribution
- May require
- On macOS:
- Clone the repository:
git clone https://github.com/greeneu/interview-coder-withoupaywall-opensource.git
cd interview-coder-withoupaywall-opensource
- Install dependencies:
npm install
- RECOMMENDED: Clean any previous builds:
npm run clean
- Run the appropriate script for your platform:
For Windows:
stealth-run.bat
For macOS/Linux:
# Make the script executable first
chmod +x stealth-run.sh
./stealth-run.sh
IMPORTANT: The application window will be invisible by default! Use Ctrl+B (or Cmd+B on Mac) to toggle visibility.
To create installable packages for distribution:
For macOS (DMG):
# Using npm
npm run package-mac
# Or using yarn
yarn package-mac
For Windows (Installer):
# Using npm
npm run package-win
# Or using yarn
yarn package-win
The packaged applications will be available in the release
directory.
What the scripts do:
- Create necessary directories for the application
- Clean previous builds to ensure a fresh start
- Build the application in production mode
- Launch the application in invisible mode
-
Window Manager Compatibility: Some window management tools (like Rectangle Pro on macOS) may interfere with the app's window movement. Consider disabling them temporarily.
-
API Usage: Be mindful of your OpenAI API key's rate limits and credit usage. Vision API calls are more expensive than text-only calls.
-
LLM Customization: You can easily customize the app to include LLMs like Claude, Deepseek, or Grok by modifying the API calls in
ProcessingHelper.ts
and related UI components. -
Common Issues:
- Run
npm run clean
before starting the app for a fresh build - Use Ctrl+B/Cmd+B multiple times if the window doesn't appear
- Adjust window opacity with Ctrl+[/]/Cmd+[/] if needed
- For macOS: ensure script has execute permissions (
chmod +x stealth-run.sh
)
- Run
Feature | Premium Tools (Paid) | CodeInterviewAssist (This Project) |
---|---|---|
Price | $60/month subscription | Free (only pay for your API usage) |
Solution Generation | ✅ | ✅ |
Debugging Assistance | ✅ | ✅ |
Invisibility | ✅ | ✅ |
Multi-language Support | ✅ | ✅ |
Time/Space Complexity Analysis | ✅ | ✅ |
Window Management | ✅ | ✅ |
Auth System | Required | None (Simplified) |
Payment Processing | Required | None (Use your own API key) |
Privacy | Server-processed | 100% Local Processing |
Customization | Limited | Full Source Code Access |
Model Selection | Limited | Choice Between Models |
- Electron
- React
- TypeScript
- Vite
- Tailwind CSS
- Radix UI Components
- OpenAI API
-
Initial Setup
- Launch the invisible window
- Enter your OpenAI API key in the settings
- Choose your preferred model for extraction, solution generation, and debugging
-
Capturing Problem
- Use global shortcut [Control or Cmd + H] to take screenshots of code problems
- Screenshots are automatically added to the queue of up to 2
- If needed, remove the last screenshot with [Control or Cmd + L]
-
Processing
- Press [Control or Cmd + Enter] to analyze the screenshots
- AI extracts problem requirements from the screenshots using GPT-4 Vision API
- The model generates an optimal solution based on the extracted information
- All analysis is done using your personal OpenAI API key
-
Solution & Debugging
- View the generated solutions with detailed explanations
- Use debugging feature by taking more screenshots of error messages or code
- Get structured analysis with identified issues, corrections, and optimizations
- Toggle between solutions and queue views as needed
-
Window Management
- Move window using [Control or Cmd + Arrow keys]
- Toggle visibility with [Control or Cmd + B]
- Adjust opacity with [Control or Cmd + [] and [Control or Cmd + ]]
- Window remains invisible to specified screen sharing applications
- Start a new problem using [Control or Cmd + R]
This application is built with extensibility in mind. You can easily add support for additional LLMs alongside the existing OpenAI integration:
- You can add Claude, Deepseek, Grok, or any other AI model as alternative options
- The application architecture allows for multiple LLM backends to coexist
- Users can have the freedom to choose their preferred AI provider
To add new models, simply extend the API integration in electron/ProcessingHelper.ts
and add the corresponding UI options in src/components/Settings/SettingsDialog.tsx
. The modular design makes this straightforward without disrupting existing functionality.
- OpenAI API Key: Your personal API key is stored locally and only used for API calls to OpenAI
- Model Selection: You can choose between GPT-4o and GPT-4o-mini for each stage of processing:
- Problem Extraction: Analyzes screenshots to understand the coding problem
- Solution Generation: Creates optimized solutions with explanations
- Debugging: Provides detailed analysis of errors and improvement suggestions
- Language: Select your preferred programming language for solutions
- Window Controls: Adjust opacity, position, and zoom level using keyboard shortcuts
- All settings are stored locally in your user data directory and persist between sessions
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
- You are free to use, modify, and distribute this software
- If you modify the code, you must make your changes available under the same license
- If you run a modified version on a network server, you must make the source code available to users
- We strongly encourage you to contribute improvements back to the main project
See the LICENSE-SHORT file for a summary of terms or visit GNU AGPL-3.0 for the full license text.
We welcome contributions! Please see our Contributing Guidelines for more information.
This tool is intended as a learning aid and practice assistant. While it can help you understand problems and solution approaches during interviews, consider these ethical guidelines:
- Be honest about using assistance tools if asked directly in an interview
- Use this tool to learn concepts, not just to get answers
- Recognize that understanding solutions is more valuable than simply presenting them
- In take-home assignments, make sure you thoroughly understand any solutions you submit
Remember that the purpose of technical interviews is to assess your problem-solving skills and understanding. This tool works best when used to enhance your learning, not as a substitute for it.
If you have questions or need support, please open an issue on the GitHub repository.
Remember: This is a community resource. If you find it valuable, consider contributing rather than just requesting features. The project grows through collective effort, not individual demands.