# How Auto-Triad Selection Works in the Council of High Intelligence CLI

> Discover how auto-triad selection works in the Council of High Intelligence CLI without a domain. Learn how the CLI parses problem statements to choose the best triad based on keyword matching and domain weights.

- Repository: [nyk/council-of-high-intelligence](https://github.com/0xNyk/council-of-high-intelligence)
- Tags: deep-dive
- Published: 2026-06-30

---

**When no domain is specified, the Council of High Intelligence CLI automatically selects a triad by parsing the problem statement, matching keywords to domain-specific triads, and choosing the highest-scoring panel based on keyword frequency and domain-weight seat priority.**

The Council of High Intelligence is an open-source deliberation framework that simulates expert panels to solve complex problems through structured debate. When users invoke the `council` CLI without providing a `--triad` flag, the system activates **auto-triad selection** to intelligently match the query to the most appropriate expert panel. This automatic matching algorithm is fully defined in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) (line 173) and ensures every problem receives domain-relevant expertise without manual configuration.

## The Auto-Triad Selection Algorithm

The auto-triad selection process follows a deterministic five-step sequence implemented in the coordinator logic. According to the source code in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) at line 173, the algorithm serves as step 0 of the execution sequence, activating immediately when the CLI receives a problem statement without an explicit domain flag.

### Step 1: Parse the Problem Statement

The coordinator extracts the natural-language problem text provided after the command invocation. This raw text serves as the input corpus for domain classification and triad matching.

### Step 2: Match Keywords to Triad Domains

Each triad maintains a set of domain-specific keywords defined in the agent configuration files under `agents/`. For example, the **product** triad associates with terms like *feature*, *market*, and *customer*, while the **design** triad maps to *ux*, *interface*, and *usability*. The coordinator scans the problem text against these keyword sets, which are declared in individual agent files such as [`council-torvalds.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/council-torvalds.md) and [`council-watts.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/council-watts.md).

### Step 3: Score Candidate Triads

A scoring function counts keyword occurrences for each triad domain. The triad accumulating the highest match count becomes the primary candidate for selection.

### Step 4: Resolve Ties Using Domain-Weight Seat

When multiple triads achieve identical scores, the algorithm applies a tie-breaker based on the **domain-weight seat**—the specific panel member whose expertise most directly aligns with the detected problem domain. According to [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) (lines 175-176), the triad containing the member with the highest domain relevance for the matched keywords wins the tie.

### Step 5: Announce the Selection

Before deliberation begins, the coordinator outputs a diagnostic statement identifying the chosen triad and the matching keywords. For example, when detecting *launch* and *API*, the system prints: `Auto-Triad Selection: selected product triad (Torvalds + Machiavelli + Watts) because the problem mentions launch and API`.

## Fallback Behavior When No Keywords Match

If the problem statement contains no recognizable domain keywords, the coordinator defaults to the **architecture** triad—the first triad listed in the configuration table. This fallback ensures the council always convenes a valid panel even for ambiguous or generic queries. The system explicitly logs this decision, announcing that the selection occurred due to a lack of explicit keyword matches.

## CLI Examples: Auto-Selection in Action

Explicit triad selection bypasses the algorithm entirely:

```bash
council --triad design "Our onboarding flow has 8 steps and 40% drop-off."

```

The **design** triad (Rams + Torvalds + Watts) is used directly without keyword analysis.

Auto-selection with successful keyword matching:

```bash
council "We need to decide whether to launch the new API in Europe or Asia first."

```

The coordinator parses this input, identifies *launch* and *API* as product-domain keywords, and automatically selects the **product** triad (Torvalds + Machiavelli + Watts).

Auto-selection triggering the fallback:

```bash
council "What is the best way to organize our internal documentation?"

```

No domain keywords are detected, so the system defaults to the **architecture** triad and announces the fallback selection.

## Source Code Implementation

The auto-triad selection logic is centralized in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) at line 173, which formally defines the execution sequence for step 0 of the council workflow. Concrete demonstrations of this behavior appear in [`demos/session-pack.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/demos/session-pack.md) (Demo G, lines 121-135), providing recorded examples of live auto-selection. The keyword-to-domain mappings originate in individual agent files under `agents/`, where each persona declares their triad memberships and associated expertise domains. Additional usage examples that trigger automatic selection appear in [`README.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/README.md) (lines 874-879).

## Summary

- **Auto-triad selection** activates automatically when the `--triad` flag is omitted from the CLI invocation.
- The algorithm scores candidate triads based on domain-keyword frequency matches within the problem statement.
- Ties are broken by prioritizing the triad containing the highest **domain-weight seat** relevance.
- If no keywords match, the system falls back to the **architecture** triad as the default panel.
- Selection logic is defined in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) (line 173) and demonstrated in [`demos/session-pack.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/demos/session-pack.md).

## Frequently Asked Questions

### How does the Council of High Intelligence CLI choose a triad when I don't specify a domain?

The coordinator parses your problem statement and counts matches against domain-specific keywords associated with each triad. The triad with the highest keyword count is selected automatically. If multiple triads achieve identical scores, the system prefers the one whose members have the strongest domain-weight seat for the detected keywords, as implemented in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) lines 175-176.

### What happens if my problem description doesn't contain any domain keywords?

When no keywords match the predefined sets in the agent files, the coordinator defaults to the **architecture** triad, which serves as the universal fallback panel. This ensures the council always convenes a valid panel of experts to deliberate, even for vague or general inquiries that lack domain-specific terminology.

### Can I override the auto-selected triad after the CLI has made its choice?

No, once the coordinator announces the auto-selected triad at the start of the session, the panel composition is fixed for that deliberation cycle. To use a specific triad, you must provide the `--triad <domain>` flag in your initial command invocation, as documented in the CLI examples in [`README.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/README.md).

### Where is the auto-triad selection logic defined in the source code?

The selection algorithm is formally specified in [`SKILL.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/SKILL.md) at line 173, which outlines the execution sequence for step 0 of the coordinator workflow. The keyword mappings used for matching are distributed across the agent definition files in the `agents/` directory, such as [`council-torvalds.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/council-torvalds.md) and [`council-watts.md`](https://github.com/0xNyk/council-of-high-intelligence/blob/main/council-watts.md), where each agent declares their triad affiliations.