Skip to content

Plugins System and Configuration

Built-in Plugins List

Plugin Function
add_category AI analyzes email and automatically adds category labels
move_to_folder AI analyzes content to determine which folder to move the email to
create_appointment AI analyzes email content to create a calendar appointment
event_table AI analyzes email content and appends event information to an Excel spreadsheet (includes Outlook open link)
write_file Save email data as a JSON file
summary_file AI generates an email summary and appends it to a CSV table

Path rule: If output_dir / output_file use relative paths, they will be relative to the current configuration file directory (the directory containing config/config.yaml). 💡 The actual configuration file is located at C:\Users\{username}\AppData\Roaming\mailslide\config\plugins\

Individual Plugin Configuration

write_file Plugin Configuration

It is recommended to edit this by selecting write_file in Configuration → Plugin Settings; you can also manually edit config/plugins/write_file.yaml:

enabled: true
output_dir: "output"           # Output directory
filename_format: "{subject}_{timestamp}"  # Filename format
include_fields:                # Fields to include
  - subject
  - sender
  - received
  - body
  - tables

include_fields: Fields are fixed and cannot be modified

event_table Plugin Configuration

It is recommended to edit this by selecting event_table in Configuration → Plugin Settings; you can also manually edit config/plugins/event_table.yaml:

enabled: true
output_file: "output/events.xlsx"   # Single Excel file, default job-level batch flush
open_command_match_sender: false    # Whether outlook_open_command should additionally match the sender

The Excel columns are fixed by the program, in the following order: email_subject, email_sender, email_received, email_entry_id, outlook_open_command, event_subject, start, end, location, body, logged_at.

  • email_entry_id: Outlook Email EntryID
  • outlook_open_command: An open-email command that can be copied and executed in PowerShell (opens the email via Outlook COM by EntryID or by searching subject/time)

outlook_open_command will search for the email using "Subject + Receive Time (default ±1 day)"; if you want to reduce false positives, you can set open_command_match_sender to true to add sender matching.

Note: If the email source cannot obtain an EntryID, the outlook_open_command field will be left blank. If you want to revert to writing item-by-item in real-time, you can set batch_flush_enabled: false in the corresponding job. When setting up scheduled execution, note that the Excel file cannot be opened, otherwise the job will fail to write the file and report an error.

summary_file Plugin Configuration

enabled: true
output_file: "output/email_summaries.csv"   # Single CSV

The CSV columns are fixed by the program, in the following order: email_subject, email_sender, email_received, summary, priority, logged_at.

Example of the LLM response format for summary_file (the create field is not needed):

{
  "action": "summary",
  "summary": "This email is primarily to confirm the contract version and signing schedule. The other party wishes for a reply by this Friday.",
  "priority": "high"
}

The priority field can be omitted; if provided, it is recommended to use high, medium, low.


Multiple Prompts per Plugin (Prompt Profiles)

The same plugin can define multiple system prompts (called "profiles"), allowing different Jobs to use different prompts to do different things.

LLM plugins with built-in support for Prompt Profiles: - add_category - move_to_folder - create_appointment - event_table - summary_file

1. Plugin Configuration (config/plugins/<name>.yaml)

# Define multiple prompt profiles
default_prompt_profile: general_v1

prompt_profiles:
  general_v1:
    version: 1
    description: "General classification"
    system_prompt: |
      You are an email classification assistant...

  invoice_v1:
    version: 1
    description: "Invoice handling"
    system_prompt: |
      You are an invoice classifier. Prioritize payment intent...

2. Job Configuration (config/config.yaml)

jobs:
  - name: "Process General Mail"
    plugins:
      - add_category

  - name: "Process Invoices"
    plugins:
      - add_category
    plugin_prompt_profiles:
      add_category: invoice_v1  # Specify using the invoice_v1 profile

Resolution Order 1. job.plugin_prompt_profiles[plugin] → The system_prompt of the corresponding profile 2. plugin.default_prompt_profile → If the job doesn't specify, use the default profile 3. plugin.system_prompt → Fallback when there are no profiles at all