Menu

ConvoManager Documentation

ConvoManager is a robust desktop application designed specifically for exploring, viewing, and editing chat conversation datasets stored in JSONL format.

Built for high-performance navigation and manual manipulation - ideal for curating fine-tuning data for large language models, or inspecting synthetic chat outputs.


Table of Contents


Features

  • Massive File Support: Seamlessly open and navigate .jsonl files containing millions of lines without crashing or consuming excessive memory, thanks to byte-offset indexing and lazy-loading architecture.
  • Three View Modes: Flawlessly switch between visual Chat Bubbles, RAW JSONL text, and an interactive JSON Tree editor for the same conversation.
  • Dynamic Metadata Columns: Column names can be automatically extracted from embedded metadata objects or the first message's JSON content to build filterable columns.
  • Table Filtering: Instantly filter the entire dataset in Table Mode to find conversations containing specific text.
  • Conversation Search: Perform full-text searches within individual conversations in Single Conversation Mode.
  • Dual Themes: Choose between dark and light mode.
  • Automatic State Persistence: Your window position, pane sizes, column widths, last opened folder, active file, view mode, and conversation index are all automatically saved and restored between sessions.
  • Smart Indexing Cache: Large datasets are automatically indexed on first open, allowing instant navigation without loading the entire file into memory. The cache can be cleared via Settings > Clear Index Cache.

1. The File Browser (Left Pane)

The File Browser allows you to navigate your local folders and select datasets for viewing.

  • Opening Folders: Go to File > Browse Folder... (or press CTRL+O) to select the directory containing your JSONL files.
  • Recent Folders: Access your recently opened directories via the File > Recent Folders menu to quickly jump back to different data collections.
  • Selecting Files: Clicking on any .jsonl file in the File Browser instantly loads the dataset into the Right Pane, in Table View.

Supported File Formats

The application reads JSONL (JSON Lines) files line-by-line.

The standard expected format is an object containing a "messages" array and an optional "metadata" object:

{
  "metadata": {"dataset": "train", "category": "coding"},
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"},
    {"role": "assistant", "content": "Hi there!"}
  ]
}

Other natively supported formats:

  • Direct message array: [{"role": "user", "content": "Hello"}, ...]
  • Single standalone message: {"role": "user", "content": "Hello"}
đŸ“ĸ Important

JSON Content Strings: ConvoManager supports parsing message content strings that are serialized JSON.

Example:

{"role": "assistant", "content": "{\"tool_calls\": [{\"name\": \"get_weather\"}]}"}

When detected in Chat View, these are parsed and displayed as visual HTML tables instead of raw escaped strings. If the JSON is invalid, it falls back to standard text rendering.


2. The Dataset Panel (Right Pane)

The Right Pane is where you interact with your data. It switches between a high-level Table View and a detailed Single Conversation View.

2a. Table View - Working with datasets

When you select a file, ConvoManager defaults to the Table View. This shows every conversation in the loaded file, with relevant columns.

The Filter Bar

The filter bar at the top of the table allows you to filter the entire dataset in real-time. Typing text here instantly hides all rows that do not contain the matching text within the message content values (it does not search metadata or roles).

Metadata Columns

Some conversations in a dataset may contain root-level metadata objects:

  {
    "messages": [],    
    "metadata": { ... }
  }

These are useful for storing information about the conversation that is not part of the conversation content itself. For example, a dataset of customer support tickets might have metadata objects that store the customer's name, email address, and the date the ticket was created.

If your JSONL records contain such a root-level metadata object, those keys automatically become columns in the table:

Extracting columns from the 1st (JSON system) message

For some specific use cases, the first message of each conversation in a dataset may contain a system message that contains json data. In this case, it can be useful to see this data as separate columns in table view.

For this, there is a toggle in the top right corner of the Right Pane, labeled "Extract columns from 1st message JSON".

  • How it works: When enabled, the app parses the content of the first message in the very first conversation of the dataset. If it detects valid JSON, it automatically transforms those JSON keys into sortable columns on the Table View.
  • The Result: The entire table re-renders, reading that data from the first message of every other conversation and populating the new columns.

đŸ“ĸ Important

This extraction assumes every conversation in your dataset adheres to the same schema in its first message. If this is not the case, then don't use the toggle.


2b. Single Conversation View - Viewing and Editing Conversations

Double-click any row in the Table View to enter Single Conversation Mode.

Within Single Conversation Mode, three distinct editing sub-modes are available via the top tabs: Chat, RAW, and JSON. When editing the contents of a conversation in any of these modes, the conversation also updates automatically in the other two modes.

The top navigation bar provides tools to move through the file:

  • Back to Table View: Click the "Back to Table View" button to return to the Table View.
  • Previous / Next: Step through conversations one by one.
  • Jump to index: Type a record number (e.g., 500) into the box and press Enter to jump straight to that conversation in the file.

  • Local Search (Find): Use the 'Find' box to highlight matches only within the currently open conversation. Matches are highlighted in yellow across all view modes (Chat, RAW, and JSON).

View Mode: Chat

The default mode for human-readable review, rendering messages as colored bubbles.

  • Metadata Panel

    If a conversation has root-level metadata, a Metadata Panel appears at the top of the view:

    If you want to edit the metadata:

    1. Click the Edit button (âœī¸) in the Metadata Panel.
    2. The panel expands to show a JSON Tree Editor.
    3. Make your changes and click Save. The panel automatically collapses after saving to disk.

  • Smart JSON Content Parsing: If the text content of any message is valid JSON, ConvoManager parses it and builds a structured, multi-colored HTML table instead of showing a wall of unreadable text.

  • Collapsible System Messages: System instructions are rendered distinctively and are collapsible via a toggle arrow, allowing you to hide massive system directives to focus on the dialogue.

  • Inline Message Editing: Hover your mouse over any chat bubble and a quick-action menu appears.

  • Editing text bubbles:

    1. Hover your mouse over any message bubble.
    2. Click the Edit button (âœī¸) that appears.
    3. Type your changes and click Save (or press CTRL+ENTER).

  • Editing JSON content (Inline): If the message is a JSON object, the hover menu offers an Edit icon (âœī¸) that launches a visual JSON tree editor directly inside the chat bubble.

    1. Hover over a JSON-parsed message and click on the Edit icon (âœī¸).
    2. A visual tree editor will open directly inside the bubble.
    3. Click values to edit, or use arrows to expand/collapse structures.

  • Inserting and Appending Messages:

    • To Insert: Hover over any message turn (either a system message, or a combination of user/assistant message). An Insertion Line will appear with buttons to + Add Turn or + Add System.

    • To Append to the Top: Scroll to the very top of the chat view to find the initial insertion line.

View Mode: RAW

Displays the exact, raw JSONL string for the current conversation on disk. Provides a direct text view for visual inspection and precise syntactical adjustments.

  • When to use: Use this for quick text-based structural fixes or visual inspection of raw strings.
  • Editing: You can type directly into the editor. A Save button, and a Revert button will appear when you make changes:

â„šī¸ Note

The app validates your JSON syntax in real-time before saving to prevent file corruption.

View Mode: JSON (Structural Editor)

An industrial-grade tree editor for manipulating the entire JSON tree structure of the conversation object (including root properties, message arrays, and metadata definitions) as a collapsible, color-coded structure for deep structural editing.

Right-click any key or value to open the structural context menu:

  • Edit Key / Edit Value: Rename fields or change individual values directly.
  • Insert Before / After: Add a new entry at the same level as the selected item.
  • Convert To: Instantly switch a value's type (e.g., change a String to an Object or Array).
  • Duplicate / Remove: Efficiently clone or delete entire sections of the conversation.
  • Transform: Apply powerful JMESPath queries to filter or reshape the data.
  • Extract: Focus the editor on a specific nested object or array.
  • Sort / Reverse: Reorder keys in an object or items in a list.

Advanced Features:

  • Undo / Redo: Every action can be reversed with standard shortcuts (CTRL+Z).
  • Drag & Drop: You can drag keys or items to move them within the structure.

3. Settings & Maintenance

  • Clearing the indexing cache: If you experience issues or just want to free up space, you can clear the app's internal maps via Settings > Clear Index Cache. The app will re-index your files the next time you open them.
  • Theme Management: Toggle between Dark and Light mode via the Settings menu to match your environment.