Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ Scylla Public

Scylla is an intelligent automation tool designed to streamline the job application process on various recruitment platforms.

License

0x0501/Scylla

Repository files navigation

Scylla

Scylla is an intelligent automation tool designed to streamline the job application process on various recruitment platforms. It automates browsing job listings, evaluating job authenticity using a Large Language Model (LLM), and initiating communication with HR for legitimate opportunities. The system is built with a modular architecture, allowing for easy extension to new job platforms.

Supported Platforms

The following table lists the job recruitment platforms currently supported by Scylla:

Platform Status
BOSS直聘
智联招聘 WIP
51 Job (前程无忧) WIP

Getting Started

Prerequisites

  • Python >= 3.12: Ensure you have a compatible Python version installed.

  • uv (recommended) or pip: For dependency management.

  • Playwright Browsers: Playwright requires browser binaries. Install them after installing the Python package:

    playwright install

Installation

  1. Clone the repository:

    git clone https://github.com/0x0501/Scylla.git
    cd scylla
  2. Install dependencies: Using uv (recommended for speed and efficiency):

    uv sync

    Or using pip (if uv is not preferred or available):

    pip install -r requirements.txt # You might need to generate this from pyproject.toml

Configuration

Create a .env file in the root directory of the project with the following environment variables:

OPENAI_API_KEY="your_openai_api_key_here"
OPENAI_BASE_URL="https://api.openai.com/v1" # Or your custom LLM endpoint
LLM_MODEL_NAME="o1" # Or your preferred LLM model name
  • OPENAI_API_KEY: Your API key for accessing the OpenAI API or a compatible LLM service.
  • OPENAI_BASE_URL: The base URL for your LLM API. Defaults to OpenAI's API.
  • LLM_MODEL_NAME: The specific LLM model to be used for job authenticity evaluation.

Usage

To run the automation for a specific platform (e.g., "boss"):

python main.py

By default, main.py is configured to run the "boss" platform in non-headless mode (browser UI visible). You will be prompted to log in via QR code if no existing session is found.

Command Line Arguments (Future Extension)

Currently, the platform and headless mode are hardcoded in main.py. Future versions could introduce command-line arguments for dynamic selection:

# Example of how it might be run with arguments in the future
# python main.py --platform boss --headless

Extending Scylla

To add support for a new job recruitment platform:

  1. Create a new Python file (e.g., my_new_platform.py) in the platforms/ directory.

  2. In my_new_platform.py, create a class that inherits from core.base_platform.BasePlatform.

  3. Implement all abstract methods defined in BasePlatform: login, is_logged_in, logout, configure_network_interception, run, and chat_with_hr.

  4. Register your new platform in main.py (or a dedicated configuration file if implemented):

    from core.manager import PlatformManager
    PlatformManager.register_platform("my_new_platform_name", "platforms.my_new_platform")

Architecture

Scylla's architecture is designed for modularity and extensibility:

graph TD
    A[main.py] --> B(PlatformManager)
    B --> C{Platform Specific Logic}
    C --> D[platforms/boss.py]
    A --> E(BrowserManager)
    E --> F[Playwright Browser]
    C --> G(BasePlatform)
    G --> H[LLM Evaluation]
    G --> I[Job Recording to CSV]
    H --> J[OpenAI API]
    G --> K[Network Interception]
    K --> F
    D --> G
Loading

  • main.py: The entry point of the application, responsible for initializing the PlatformManager and BrowserManager, and orchestrating the automation flow for a selected platform.
  • core/: Contains core functionalities and abstract classes:
    • base_platform.py: Defines the BasePlatform abstract class, which all platform-specific implementations must inherit from. It includes common methods for login, logout, network interception, job evaluation (evaluate using LLM), and job recording (record to CSV).
    • browser.py: Manages Playwright browser instances, contexts, and pages, including configuration and anti-bot measures.
    • manager.py: Handles the dynamic loading and management of different platform implementations.
    • base_job_meta_description.py and base_record.py: Data models for job metadata and recorded job details.
    • utils.py: Utility functions (not explicitly reviewed but assumed for common tasks).
  • platforms/: Houses concrete implementations for each job recruitment platform (e.g., boss.py for Zhipin.com). These classes extend BasePlatform and implement platform-specific interactions.
  • cookies/: Directory for storing browser session cookies to maintain login states.
  • logs/: Directory for storing records.csv, which logs all processed job information.

Contributing

Contributions are welcome! Please feel free to submit issues, pull requests, or suggest improvements.

License

This project is licensed under the MIT License.

About

Scylla is an intelligent automation tool designed to streamline the job application process on various recruitment platforms.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages