diff --git a/README.md b/README.md index 19fbd7b..c0cc058 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Model catalog data as JSON files, refreshed on a schedule. https://raw.githubusercontent.com/cloudstack-llc/model-catalog/main/v1/prices.json https://raw.githubusercontent.com/cloudstack-llc/model-catalog/main/v1/ollama-models.json https://raw.githubusercontent.com/cloudstack-llc/model-catalog/main/v1/featured-models.json +https://raw.githubusercontent.com/cloudstack-llc/model-catalog/main/v1/smart-route-starters.json ``` | File | Contents | Source | Cadence | @@ -13,6 +14,7 @@ https://raw.githubusercontent.com/cloudstack-llc/model-catalog/main/v1/featured- | `v1/prices.json` | Token pricing for hosted models | [models.dev](https://models.dev) | 6 hours | | `v1/ollama-models.json` | The Ollama library: models, tags, sizes, context windows | [ollama.com](https://ollama.com/library) | 12 hours | | `v1/featured-models.json` | Curated local models worth downloading, grouped into collections | Curated; resolved against Ollama and Hugging Face | On change | +| `v1/smart-route-starters.json` | Model-neutral Smart Route starters, grouped by use | Curated | On change | # Token pricing @@ -65,6 +67,27 @@ node scripts/generate.mjs # fetch upstream and rewrite v1/prices.json No dependencies. +# Smart Route starters + +`v1/smart-route-starters.json` gives Msty Nexus a model-neutral starting point +for common routing jobs. A starter contains the route name, classifier lanes, +target guidance, and the endpoint families it expects. It never contains a +model or pool ID. Nexus asks the person adding it to choose those targets. + +Collections reference starters by ID, so one starter can appear in more than +one part of the catalog without being copied. `revision` changes when the +curated starter changes. Existing Smart Routes are independent copies and are +never changed by a catalog update. + +All displayed descriptions use first-person copy. Lane descriptions are capped +at 512 bytes because that is the classifier input limit. + +Validate a catalog edit before committing it: + +```bash +node scripts/smart-route-starters-verify.mjs +``` + Optional `REFRESH_TOKEN` secret: a fine-grained PAT with `contents: write` on this repository. GitHub disables scheduled workflows after 60 days without repository activity, and pushes made with the default `GITHUB_TOKEN` do not reset that clock. diff --git a/package.json b/package.json index 3dc0af0..a7beebe 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "license": "MIT", "scripts": { "test": "node --test scripts/*.test.mjs", - "verify": "node scripts/verify.mjs && node scripts/ollama-verify.mjs", + "verify": "node scripts/verify.mjs && node scripts/ollama-verify.mjs && node scripts/smart-route-starters-verify.mjs", "generate": "node scripts/generate.mjs", "generate:ollama": "node scripts/ollama-generate.mjs" } diff --git a/scripts/smart-route-starters-verify.mjs b/scripts/smart-route-starters-verify.mjs new file mode 100644 index 0000000..9a6e2e0 --- /dev/null +++ b/scripts/smart-route-starters-verify.mjs @@ -0,0 +1,30 @@ +// Validates the curated Smart Route starter artifact without using the network. +// +// Run: node scripts/smart-route-starters-verify.mjs [path] + +import { readFile } from "node:fs/promises"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +import { validateSmartRouteStarters } from "./smart-route-starters.mjs"; + +const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const path = resolve(repoRoot, process.argv[2] ?? "v1/smart-route-starters.json"); +const text = await readFile(path, "utf8"); +const artifact = JSON.parse(text); +const problems = validateSmartRouteStarters(artifact); + +if (`${JSON.stringify(artifact, null, 2)}\n` !== text) { + problems.push("file must use the canonical two-space JSON format"); +} + +if (problems.length > 0) { + for (const problem of problems) console.error(`invalid artifact: ${problem}`); + process.exit(1); +} + +const lanes = artifact.starters.reduce((total, starter) => total + starter.lanes.length, 0); +console.log( + `ok: ${artifact.starters.length} Smart Route starters, ${artifact.collections.length} collections, ${lanes} lanes`, +); + diff --git a/scripts/smart-route-starters.mjs b/scripts/smart-route-starters.mjs new file mode 100644 index 0000000..4d81370 --- /dev/null +++ b/scripts/smart-route-starters.mjs @@ -0,0 +1,256 @@ +const ID = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; +const ENDPOINT_FAMILIES = new Set([ + "anthropic.messages", + "openai.chat_completions", + "openai.images", + "openai.responses", +]); +const BANNED_WORDS = new Set([ + "delve", + "empower", + "facilitate", + "foster", + "harness", + "leverage", + "robust", + "streamline", + "supercharge", + "transformative", + "utilize", +]); + +function byteLength(value) { + return Buffer.byteLength(value, "utf8"); +} + +function cleanText(problems, value, label, maxBytes, firstPerson = false) { + if (typeof value !== "string" || value.trim() !== value || value === "") { + problems.push(`${label} must be a non-empty trimmed string`); + return ""; + } + if (byteLength(value) > maxBytes) { + problems.push(`${label} is longer than ${maxBytes} bytes`); + } + if (/\p{Cc}/u.test(value) || /[<>]/.test(value)) { + problems.push(`${label} contains control characters or markup`); + } + if (value.includes("—")) { + problems.push(`${label} uses an em dash`); + } + if (firstPerson && !/^I(?:\b|['’])/.test(value)) { + problems.push(`${label} must use first-person copy`); + } + const words = value.toLowerCase().match(/[a-z]+/g) ?? []; + for (const word of words) { + if (BANNED_WORDS.has(word)) { + problems.push(`${label} uses banned word ${word}`); + } + } + return value; +} + +function exactKeys(problems, value, label, allowed) { + if (value === null || typeof value !== "object" || Array.isArray(value)) { + problems.push(`${label} must be an object`); + return false; + } + for (const key of Object.keys(value)) { + if (!allowed.has(key)) { + problems.push(`${label} has unsupported field ${key}`); + } + } + return true; +} + +function validID(problems, value, label) { + if (typeof value !== "string" || !ID.test(value) || value.length > 64) { + problems.push(`${label} must be a lowercase kebab-case id up to 64 characters`); + return ""; + } + return value; +} + +function findForbiddenTargetFields(value, path, problems) { + if (Array.isArray(value)) { + value.forEach((entry, index) => + findForbiddenTargetFields(entry, `${path}[${index}]`, problems), + ); + return; + } + if (value === null || typeof value !== "object") return; + for (const [key, entry] of Object.entries(value)) { + if (/model.?id/i.test(key) || /target.?id/i.test(key)) { + problems.push(`${path}.${key} must not bind a starter to a model`); + } + findForbiddenTargetFields(entry, `${path}.${key}`, problems); + } +} + +export function validateSmartRouteStarters(artifact) { + const problems = []; + if (!exactKeys( + problems, + artifact, + "artifact", + new Set(["schema_version", "generated_at", "locale", "collections", "starters"]), + )) return problems; + + if (artifact.schema_version !== 1) { + problems.push("schema_version must be 1"); + } + if ( + typeof artifact.generated_at !== "string" || + Number.isNaN(Date.parse(artifact.generated_at)) + ) { + problems.push("generated_at must be an RFC 3339 timestamp"); + } + if (artifact.locale !== "en") { + problems.push("locale must be en for the v1 artifact"); + } + if (!Array.isArray(artifact.starters) || artifact.starters.length === 0) { + problems.push("starters must contain at least one starter"); + } + if ((artifact.starters?.length ?? 0) > 100) { + problems.push("starters must contain at most 100 starters"); + } + + const starterIDs = new Set(); + for (const [starterIndex, starter] of (artifact.starters ?? []).entries()) { + const label = `starters[${starterIndex}]`; + if (!exactKeys( + problems, + starter, + label, + new Set([ + "id", + "revision", + "name", + "summary", + "notice", + "tags", + "endpoint_families", + "lanes", + "fallback", + ]), + )) continue; + + const id = validID(problems, starter.id, `${label}.id`); + if (starterIDs.has(id)) problems.push(`${label}.id duplicates ${id}`); + if (id !== "") starterIDs.add(id); + if (!Number.isInteger(starter.revision) || starter.revision < 1) { + problems.push(`${label}.revision must be a positive integer`); + } + cleanText(problems, starter.name, `${label}.name`, 128); + cleanText(problems, starter.summary, `${label}.summary`, 256, true); + if (starter.notice !== undefined) { + cleanText(problems, starter.notice, `${label}.notice`, 256, true); + } + + if (!Array.isArray(starter.tags) || starter.tags.length === 0 || starter.tags.length > 12) { + problems.push(`${label}.tags must contain 1 to 12 tags`); + } else { + const tags = new Set(); + for (const [tagIndex, tag] of starter.tags.entries()) { + const parsed = validID(problems, tag, `${label}.tags[${tagIndex}]`); + if (tags.has(parsed)) problems.push(`${label}.tags duplicates ${parsed}`); + tags.add(parsed); + } + } + + if ( + !Array.isArray(starter.endpoint_families) || + starter.endpoint_families.length === 0 || + starter.endpoint_families.length > ENDPOINT_FAMILIES.size + ) { + problems.push(`${label}.endpoint_families must contain supported generation endpoints`); + } else { + const families = new Set(); + for (const family of starter.endpoint_families) { + if (!ENDPOINT_FAMILIES.has(family)) { + problems.push(`${label}.endpoint_families contains unsupported endpoint ${family}`); + } + if (families.has(family)) { + problems.push(`${label}.endpoint_families duplicates ${family}`); + } + families.add(family); + } + } + + if (!Array.isArray(starter.lanes) || starter.lanes.length < 2 || starter.lanes.length > 12) { + problems.push(`${label}.lanes must contain 2 to 12 lanes`); + } else { + const laneIDs = new Set(); + for (const [laneIndex, lane] of starter.lanes.entries()) { + const laneLabel = `${label}.lanes[${laneIndex}]`; + if (!exactKeys( + problems, + lane, + laneLabel, + new Set(["id", "name", "description", "target_hint"]), + )) continue; + const laneID = validID(problems, lane.id, `${laneLabel}.id`); + if (laneIDs.has(laneID)) problems.push(`${laneLabel}.id duplicates ${laneID}`); + laneIDs.add(laneID); + cleanText(problems, lane.name, `${laneLabel}.name`, 128); + cleanText(problems, lane.description, `${laneLabel}.description`, 512, true); + cleanText(problems, lane.target_hint, `${laneLabel}.target_hint`, 256, true); + } + } + + if (exactKeys(problems, starter.fallback, `${label}.fallback`, new Set(["target_hint"]))) { + cleanText( + problems, + starter.fallback.target_hint, + `${label}.fallback.target_hint`, + 256, + true, + ); + } + } + + if (!Array.isArray(artifact.collections) || artifact.collections.length === 0) { + problems.push("collections must contain at least one collection"); + } + if ((artifact.collections?.length ?? 0) > 20) { + problems.push("collections must contain at most 20 collections"); + } + const collectionIDs = new Set(); + const referenced = new Set(); + for (const [collectionIndex, collection] of (artifact.collections ?? []).entries()) { + const label = `collections[${collectionIndex}]`; + if (!exactKeys( + problems, + collection, + label, + new Set(["id", "title", "description", "starters"]), + )) continue; + const id = validID(problems, collection.id, `${label}.id`); + if (collectionIDs.has(id)) problems.push(`${label}.id duplicates ${id}`); + collectionIDs.add(id); + cleanText(problems, collection.title, `${label}.title`, 128); + cleanText(problems, collection.description, `${label}.description`, 256, true); + if (!Array.isArray(collection.starters) || collection.starters.length === 0) { + problems.push(`${label}.starters must contain at least one starter id`); + continue; + } + const localReferences = new Set(); + for (const [referenceIndex, reference] of collection.starters.entries()) { + validID(problems, reference, `${label}.starters[${referenceIndex}]`); + if (!starterIDs.has(reference)) { + problems.push(`${label}.starters references missing starter ${reference}`); + } + if (localReferences.has(reference)) { + problems.push(`${label}.starters duplicates ${reference}`); + } + localReferences.add(reference); + referenced.add(reference); + } + } + for (const id of starterIDs) { + if (!referenced.has(id)) problems.push(`starter ${id} is not in a collection`); + } + + findForbiddenTargetFields(artifact, "artifact", problems); + return problems; +} + diff --git a/scripts/smart-route-starters.test.mjs b/scripts/smart-route-starters.test.mjs new file mode 100644 index 0000000..ac45dcb --- /dev/null +++ b/scripts/smart-route-starters.test.mjs @@ -0,0 +1,85 @@ +import assert from "node:assert/strict"; +import { readFile } from "node:fs/promises"; +import test from "node:test"; + +import { validateSmartRouteStarters } from "./smart-route-starters.mjs"; + +function artifact() { + return { + schema_version: 1, + generated_at: "2026-08-23T00:00:00Z", + locale: "en", + collections: [ + { + id: "featured", + title: "Featured starters", + description: "I want a useful starting point.", + starters: ["daily-work"], + }, + ], + starters: [ + { + id: "daily-work", + revision: 1, + name: "Daily Work", + summary: "I want one route for daily work.", + tags: ["general"], + endpoint_families: ["openai.responses"], + lanes: [ + { + id: "quick-help", + name: "Quick help", + description: "I need a short answer.", + target_hint: "I want a fast target.", + }, + { + id: "deep-work", + name: "Deep work", + description: "I need a difficult problem worked through.", + target_hint: "I want a reasoning target.", + }, + ], + fallback: { target_hint: "I want a dependable target." }, + }, + ], + }; +} + +test("accepts a model-neutral first-person starter catalog", () => { + assert.deepEqual(validateSmartRouteStarters(artifact()), []); +}); + +test("the committed starter catalog is valid and model-neutral", async () => { + const committed = JSON.parse( + await readFile(new URL("../v1/smart-route-starters.json", import.meta.url), "utf8"), + ); + assert.deepEqual(validateSmartRouteStarters(committed), []); +}); + +test("rejects model bindings and unsupported endpoints", () => { + const input = artifact(); + input.starters[0].fallbackModelId = "provider/model"; + input.starters[0].endpoint_families = ["openai.embeddings"]; + const problems = validateSmartRouteStarters(input); + assert.ok(problems.some((problem) => problem.includes("unsupported field fallbackModelId"))); + assert.ok(problems.some((problem) => problem.includes("must not bind a starter to a model"))); + assert.ok(problems.some((problem) => problem.includes("unsupported endpoint"))); +}); + +test("rejects non-first-person and oversized classifier copy", () => { + const input = artifact(); + input.starters[0].summary = "Routes daily work."; + input.starters[0].lanes[0].description = `I ${"x".repeat(512)}`; + const problems = validateSmartRouteStarters(input); + assert.ok(problems.some((problem) => problem.includes("must use first-person copy"))); + assert.ok(problems.some((problem) => problem.includes("longer than 512 bytes"))); +}); + +test("rejects missing references and duplicate lane ids", () => { + const input = artifact(); + input.collections[0].starters = ["missing"]; + input.starters[0].lanes[1].id = "quick-help"; + const problems = validateSmartRouteStarters(input); + assert.ok(problems.some((problem) => problem.includes("missing starter missing"))); + assert.ok(problems.some((problem) => problem.includes("duplicates quick-help"))); +}); diff --git a/v1/smart-route-starters.json b/v1/smart-route-starters.json new file mode 100644 index 0000000..e1f85ca --- /dev/null +++ b/v1/smart-route-starters.json @@ -0,0 +1,1387 @@ +{ + "schema_version": 1, + "generated_at": "2026-08-23T19:20:39Z", + "locale": "en", + "collections": [ + { + "id": "featured", + "title": "Featured starters", + "description": "I want a useful route without starting from an empty form.", + "starters": [ + "everyday-assistant", + "writing-editing-studio", + "research-evidence-desk", + "software-delivery-copilot", + "customer-support-triage", + "product-management-hub", + "learning-tutor", + "visual-content-studio" + ] + }, + { + "id": "everyday-work", + "title": "Everyday work", + "description": "I want help with daily thinking, writing, research, and data.", + "starters": [ + "everyday-assistant", + "writing-editing-studio", + "research-evidence-desk", + "software-delivery-copilot", + "data-spreadsheet-analyst" + ] + }, + { + "id": "communication-creation", + "title": "Communication and creation", + "description": "I want to turn ideas into clear messages and useful visuals.", + "starters": [ + "meetings-follow-ups", + "marketing-campaign-studio", + "visual-content-studio", + "translation-localization-desk", + "presentation-builder" + ] + }, + { + "id": "business-operations", + "title": "Business operations", + "description": "I want help with customers, sales, products, projects, and people.", + "starters": [ + "customer-support-triage", + "sales-proposal-desk", + "product-management-hub", + "project-delivery-office", + "people-operations-assistant" + ] + }, + { + "id": "technical-specialist", + "title": "Technical and specialist work", + "description": "I want focused help with systems, security, finance, and contracts.", + "starters": [ + "it-help-desk", + "security-operations-desk", + "devops-reliability", + "finance-business-analysis", + "contract-policy-review" + ] + }, + { + "id": "learning-daily-life", + "title": "Learning and daily life", + "description": "I want help learning, teaching, planning, and running everyday work.", + "starters": [ + "learning-tutor", + "course-training-designer", + "healthcare-operations-assistant", + "ecommerce-operations", + "home-travel-life-planner" + ] + } + ], + "starters": [ + { + "id": "everyday-assistant", + "revision": 1, + "name": "Everyday Assistant", + "summary": "I want one route for everyday questions, writing, analysis, and documents.", + "tags": [ + "general", + "writing", + "analysis", + "documents" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "quick-help", + "name": "Quick help", + "description": "I need a direct answer, definition, short summary, or simple formatting.", + "target_hint": "I want a fast, low-cost target." + }, + { + "id": "deep-analysis", + "name": "Deep analysis", + "description": "I need multi-step reasoning, a careful comparison, or a difficult trade-off worked through.", + "target_hint": "I want a strong reasoning target." + }, + { + "id": "draft-rewrite", + "name": "Draft and rewrite", + "description": "I need to draft, rewrite, proofread, or change the tone of a message or document.", + "target_hint": "I want a strong writing target." + }, + { + "id": "long-documents", + "name": "Long documents", + "description": "I need to summarize, compare, or answer questions about long material.", + "target_hint": "I want a target with a long context window." + }, + { + "id": "structured-extraction", + "name": "Structured extraction", + "description": "I need to turn text into a table, checklist, fields, or valid structured data.", + "target_hint": "I want a target that follows output formats well." + } + ], + "fallback": { + "target_hint": "I want a dependable general-purpose target." + } + }, + { + "id": "writing-editing-studio", + "revision": 1, + "name": "Writing and Editing Studio", + "summary": "I want one route for editing, rewriting, long-form work, and persuasive copy.", + "tags": [ + "writing", + "editing", + "content", + "copy" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "correct-tighten", + "name": "Correct and tighten", + "description": "I need to fix grammar, clarity, repetition, or awkward wording without changing the meaning.", + "target_hint": "I want a fast writing target." + }, + { + "id": "rewrite-voice", + "name": "Rewrite voice", + "description": "I need to change the tone, reading level, audience, or format of existing writing.", + "target_hint": "I want a target that handles voice and tone well." + }, + { + "id": "long-form", + "name": "Long-form drafting", + "description": "I need to draft an article, guide, report, newsletter, or documentation from a brief.", + "target_hint": "I want a strong long-form writing target." + }, + { + "id": "persuasive-writing", + "name": "Persuasive writing", + "description": "I need a proposal, landing page, call to action, argument, or other persuasive copy.", + "target_hint": "I want a persuasive writing target." + }, + { + "id": "summarize-adapt", + "name": "Summarize and adapt", + "description": "I need to condense material or reshape it for another channel or audience.", + "target_hint": "I want a target that handles long source material well." + } + ], + "fallback": { + "target_hint": "I want a balanced writing target." + } + }, + { + "id": "research-evidence-desk", + "revision": 1, + "name": "Research and Evidence Desk", + "summary": "I want one route for orientation, evidence, criticism, methods, and source analysis.", + "tags": [ + "research", + "evidence", + "analysis", + "sources" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "quick-orientation", + "name": "Quick orientation", + "description": "I need a topic defined, its main concepts explained, or useful starting questions.", + "target_hint": "I want a fast general target." + }, + { + "id": "evidence-synthesis", + "name": "Evidence synthesis", + "description": "I need findings combined, areas of agreement identified, and uncertainty preserved.", + "target_hint": "I want a strong research target." + }, + { + "id": "critical-review", + "name": "Critical review", + "description": "I need a claim challenged, its assumptions found, or missing evidence identified.", + "target_hint": "I want a careful reasoning target." + }, + { + "id": "methods-numbers", + "name": "Methods and numbers", + "description": "I need help with research design, statistics, calculations, or interpretation.", + "target_hint": "I want a quantitative reasoning target." + }, + { + "id": "source-analysis", + "name": "Source analysis", + "description": "I need to compare long papers, reports, transcripts, or a supplied set of sources.", + "target_hint": "I want a target with a long context window." + } + ], + "fallback": { + "target_hint": "I want a dependable research target." + } + }, + { + "id": "software-delivery-copilot", + "revision": 1, + "name": "Software Delivery Copilot", + "summary": "I want one route for coding, debugging, design, review, tests, and documentation.", + "tags": [ + "code", + "debugging", + "architecture", + "testing" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "code-help", + "name": "Code help", + "description": "I need code explained, an API question answered, or a small contained change made.", + "target_hint": "I want a fast coding target." + }, + { + "id": "debugging", + "name": "Debugging", + "description": "I need to diagnose an error, stack trace, failing test, or unexpected behavior.", + "target_hint": "I want a coding target with strong reasoning." + }, + { + "id": "architecture", + "name": "Architecture", + "description": "I need to design a system, interface, migration, or change that crosses modules.", + "target_hint": "I want a deep reasoning target." + }, + { + "id": "review-security", + "name": "Review and security", + "description": "I need code reviewed for correctness, reliability, performance, or security problems.", + "target_hint": "I want a careful code review target." + }, + { + "id": "tests-docs", + "name": "Tests and documentation", + "description": "I need test cases, examples, comments, or technical documentation written.", + "target_hint": "I want a dependable coding target." + } + ], + "fallback": { + "target_hint": "I want a dependable coding target." + } + }, + { + "id": "data-spreadsheet-analyst", + "revision": 1, + "name": "Data and Spreadsheet Analyst", + "summary": "I want one route for spreadsheets, SQL, statistics, charts, and forecasts.", + "tags": [ + "data", + "spreadsheets", + "sql", + "statistics" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "spreadsheet-work", + "name": "Spreadsheet work", + "description": "I need formulas, cleanup, joins, pivots, validation, or workbook organization.", + "target_hint": "I want a target that handles structured data well." + }, + { + "id": "sql-transformation", + "name": "SQL and transformation", + "description": "I need a query, schema, data transformation, or validation rule.", + "target_hint": "I want a coding and data target." + }, + { + "id": "statistical-analysis", + "name": "Statistical analysis", + "description": "I need help with experiments, distributions, confidence, significance, or interpretation.", + "target_hint": "I want a quantitative reasoning target." + }, + { + "id": "visualization", + "name": "Visualization", + "description": "I need to choose a chart or explain patterns, anomalies, and limits in data.", + "target_hint": "I want an analytical writing target." + }, + { + "id": "forecasting", + "name": "Forecasting", + "description": "I need scenarios, projections, sensitivity analysis, or assumptions worked through.", + "target_hint": "I want a strong reasoning target." + } + ], + "fallback": { + "target_hint": "I want a dependable analytical target." + } + }, + { + "id": "meetings-follow-ups", + "revision": 1, + "name": "Meetings and Follow-ups", + "summary": "I want one route for meeting preparation, notes, actions, and follow-up messages.", + "tags": [ + "meetings", + "notes", + "actions", + "communication" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "meeting-prep", + "name": "Meeting preparation", + "description": "I need an agenda, briefing, questions, or talking points before a meeting.", + "target_hint": "I want a fast planning target." + }, + { + "id": "transcript-summary", + "name": "Transcript summary", + "description": "I need themes, decisions, disagreements, and open questions pulled from meeting notes or a transcript.", + "target_hint": "I want a target with a long context window." + }, + { + "id": "actions-owners", + "name": "Actions and owners", + "description": "I need tasks, owners, dates, dependencies, and follow-ups extracted clearly.", + "target_hint": "I want a target that follows structured formats well." + }, + { + "id": "follow-up-writing", + "name": "Follow-up writing", + "description": "I need a recap, email, announcement, or stakeholder update after a meeting.", + "target_hint": "I want a strong communication target." + }, + { + "id": "difficult-conversations", + "name": "Difficult conversations", + "description": "I need a calm message for feedback, conflict, negotiation, or a sensitive discussion.", + "target_hint": "I want a careful writing target." + } + ], + "fallback": { + "target_hint": "I want a dependable communication target." + } + }, + { + "id": "marketing-campaign-studio", + "revision": 1, + "name": "Marketing Campaign Studio", + "summary": "I want one route for campaign planning, content, social posts, email, and conversion copy.", + "tags": [ + "marketing", + "campaigns", + "content", + "copy" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "campaign-strategy", + "name": "Campaign strategy", + "description": "I need an audience, position, channel plan, offer, or campaign structure.", + "target_hint": "I want a strong marketing reasoning target." + }, + { + "id": "content-seo", + "name": "Content and SEO", + "description": "I need an article, brief, search-led outline, or educational content.", + "target_hint": "I want a long-form content target." + }, + { + "id": "social-content", + "name": "Social content", + "description": "I need platform-specific posts, threads, calendars, or variations.", + "target_hint": "I want a fast creative writing target." + }, + { + "id": "email-lifecycle", + "name": "Email lifecycle", + "description": "I need a welcome, nurture, launch, retention, or re-engagement email sequence.", + "target_hint": "I want a persuasive writing target." + }, + { + "id": "conversion-copy", + "name": "Conversion copy", + "description": "I need an ad, landing page, headline, call to action, or copy test.", + "target_hint": "I want a concise persuasive target." + } + ], + "fallback": { + "target_hint": "I want a brand-aware marketing target." + } + }, + { + "id": "visual-content-studio", + "revision": 1, + "name": "Visual Content Studio", + "summary": "I want one route for photos, illustrations, mockups, diagrams, and image edits.", + "tags": [ + "images", + "photography", + "illustration", + "design" + ], + "endpoint_families": [ + "openai.images" + ], + "lanes": [ + { + "id": "photography", + "name": "Photography", + "description": "I need a realistic person, place, product, lighting setup, or editorial scene.", + "target_hint": "I want a strong photorealistic image target." + }, + { + "id": "illustration", + "name": "Illustration", + "description": "I need editorial art, a character, poster, icon, or stylized scene.", + "target_hint": "I want a strong illustration target." + }, + { + "id": "product-mockups", + "name": "Product mockups", + "description": "I need packaging, a device screen, merchandise, or a product presentation scene.", + "target_hint": "I want an image target that handles product details well." + }, + { + "id": "diagrams-infographics", + "name": "Diagrams and infographics", + "description": "I need a visual explanation, labeled system, process, or data story.", + "target_hint": "I want an image target that handles text and layout well." + }, + { + "id": "edits-variations", + "name": "Edits and variations", + "description": "I need an image restyled, extended, cleaned up, or turned into alternatives.", + "target_hint": "I want an image target that supports editing." + } + ], + "fallback": { + "target_hint": "I want a dependable general image target." + } + }, + { + "id": "translation-localization-desk", + "revision": 1, + "name": "Translation and Localization Desk", + "summary": "I want one route for translation, product localization, transcreation, terminology, and language review.", + "tags": [ + "translation", + "localization", + "language", + "qa" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "direct-translation", + "name": "Direct translation", + "description": "I need meaning, facts, structure, and terminology preserved in another language.", + "target_hint": "I want a strong multilingual target." + }, + { + "id": "product-localization", + "name": "Product localization", + "description": "I need interface copy, help content, or product messages adapted for a locale.", + "target_hint": "I want a multilingual product-writing target." + }, + { + "id": "transcreation", + "name": "Transcreation", + "description": "I need marketing intent, emotion, and persuasion recreated for another locale.", + "target_hint": "I want a creative multilingual target." + }, + { + "id": "terminology", + "name": "Terminology work", + "description": "I need a glossary built or approved terms applied consistently.", + "target_hint": "I want a precise multilingual target." + }, + { + "id": "language-qa", + "name": "Language review", + "description": "I need mistranslations, unnatural wording, formatting, or locale problems found.", + "target_hint": "I want a careful multilingual review target." + } + ], + "fallback": { + "target_hint": "I want a dependable multilingual target." + } + }, + { + "id": "presentation-builder", + "revision": 1, + "name": "Presentation Builder", + "summary": "I want one route for presentation structure, slide copy, data stories, notes, and rehearsal.", + "tags": [ + "presentations", + "slides", + "speaking", + "story" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "narrative-outline", + "name": "Narrative and outline", + "description": "I need the audience journey, argument, or slide sequence shaped before I write slides.", + "target_hint": "I want a strong planning target." + }, + { + "id": "slide-copy", + "name": "Slide copy", + "description": "I need concise titles, supporting points, labels, or calls to action for slides.", + "target_hint": "I want a concise writing target." + }, + { + "id": "data-storytelling", + "name": "Data storytelling", + "description": "I need findings or metrics turned into a clear presentation narrative.", + "target_hint": "I want an analytical writing target." + }, + { + "id": "speaker-notes", + "name": "Speaker notes", + "description": "I need explanations, transitions, timing, or delivery cues for a presentation.", + "target_hint": "I want a natural long-form writing target." + }, + { + "id": "review-rehearsal", + "name": "Review and rehearsal", + "description": "I need a deck criticized or likely audience questions and answers prepared.", + "target_hint": "I want a critical reasoning target." + } + ], + "fallback": { + "target_hint": "I want a dependable presentation target." + } + }, + { + "id": "customer-support-triage", + "revision": 1, + "name": "Customer Support Triage", + "summary": "I want one route for quick answers, troubleshooting, billing, complaints, and escalations.", + "tags": [ + "support", + "customers", + "troubleshooting", + "service" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "quick-answers", + "name": "Quick answers", + "description": "I need a FAQ answered, product guidance, or a routine how-to response.", + "target_hint": "I want a fast, low-cost support target." + }, + { + "id": "technical-troubleshooting", + "name": "Technical troubleshooting", + "description": "I need reproduction steps, diagnostics, or recovery instructions for a technical problem.", + "target_hint": "I want a technical reasoning target." + }, + { + "id": "account-billing", + "name": "Account and billing", + "description": "I need help with a plan, invoice, access issue, refund, or account question.", + "target_hint": "I want a precise support target." + }, + { + "id": "complaints-recovery", + "name": "Complaints and recovery", + "description": "I need a calm response to frustration, a complaint, or a service failure.", + "target_hint": "I want a careful communication target." + }, + { + "id": "escalation-handoff", + "name": "Escalation handoff", + "description": "I need context, evidence, attempts, impact, and the next owner summarized for escalation.", + "target_hint": "I want a target that follows structured formats well." + } + ], + "fallback": { + "target_hint": "I want a dependable customer support target." + } + }, + { + "id": "sales-proposal-desk", + "revision": 1, + "name": "Sales and Proposal Desk", + "summary": "I want one route for account research, outreach, discovery, objections, and proposals.", + "tags": [ + "sales", + "proposals", + "outreach", + "research" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "account-research", + "name": "Account research", + "description": "I need an organization, role, need, or likely priority summarized from supplied information.", + "target_hint": "I want a strong research target." + }, + { + "id": "outreach", + "name": "Outreach", + "description": "I need a personalized email, follow-up, or connection message.", + "target_hint": "I want a concise persuasive writing target." + }, + { + "id": "discovery", + "name": "Discovery", + "description": "I need discovery questions, call preparation, pain points, or qualification help.", + "target_hint": "I want a thoughtful sales target." + }, + { + "id": "objection-handling", + "name": "Objection handling", + "description": "I need a clear response to concerns about price, timing, trust, or competitors.", + "target_hint": "I want a persuasive reasoning target." + }, + { + "id": "proposals-rfps", + "name": "Proposals and RFPs", + "description": "I need a structured response, scope, value case, or executive summary.", + "target_hint": "I want a target with a long context window." + } + ], + "fallback": { + "target_hint": "I want a dependable sales writing target." + } + }, + { + "id": "product-management-hub", + "revision": 1, + "name": "Product Management Hub", + "summary": "I want one route for feedback, product definition, priorities, experiments, and launches.", + "tags": [ + "product", + "feedback", + "planning", + "launches" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "feedback-synthesis", + "name": "Feedback synthesis", + "description": "I need requests, complaints, themes, or unmet needs grouped from supplied feedback.", + "target_hint": "I want a target with a long context window." + }, + { + "id": "product-definition", + "name": "Product definition", + "description": "I need a problem statement, requirement, user story, or acceptance criteria.", + "target_hint": "I want a precise product-writing target." + }, + { + "id": "prioritization", + "name": "Prioritization", + "description": "I need impact, cost, risk, confidence, and dependencies compared.", + "target_hint": "I want a strong reasoning target." + }, + { + "id": "metrics-experiments", + "name": "Metrics and experiments", + "description": "I need success measures, hypotheses, events, or an experiment designed.", + "target_hint": "I want an analytical reasoning target." + }, + { + "id": "launch-release", + "name": "Launch and release", + "description": "I need a rollout plan, release note, enablement material, or feedback loop.", + "target_hint": "I want a structured planning target." + } + ], + "fallback": { + "target_hint": "I want a dependable product reasoning target." + } + }, + { + "id": "project-delivery-office", + "revision": 1, + "name": "Project Delivery Office", + "summary": "I want one route for plans, status, risks, decisions, and retrospectives.", + "tags": [ + "projects", + "planning", + "risk", + "delivery" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "planning", + "name": "Planning", + "description": "I need scope, milestones, a work breakdown, estimates, or responsibilities defined.", + "target_hint": "I want a strong planning target." + }, + { + "id": "status-reporting", + "name": "Status reporting", + "description": "I need progress, changes, blockers, decisions, and next steps summarized.", + "target_hint": "I want a concise structured writing target." + }, + { + "id": "risks-dependencies", + "name": "Risks and dependencies", + "description": "I need exposure, triggers, mitigations, dependencies, and owners identified.", + "target_hint": "I want a careful reasoning target." + }, + { + "id": "decision-support", + "name": "Decision support", + "description": "I need options, trade-offs, a decision record, or a recommendation.", + "target_hint": "I want a strong reasoning target." + }, + { + "id": "retrospectives", + "name": "Retrospectives", + "description": "I need outcomes, contributing factors, lessons, and follow-up actions captured.", + "target_hint": "I want an analytical writing target." + } + ], + "fallback": { + "target_hint": "I want a dependable planning target." + } + }, + { + "id": "people-operations-assistant", + "revision": 1, + "name": "People Operations Assistant", + "summary": "I want one route for policies, hiring, interviews, onboarding, and development.", + "notice": "I’ll review decisions about people before I act on them.", + "tags": [ + "people", + "hiring", + "onboarding", + "feedback" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "policies-guidance", + "name": "Policies and guidance", + "description": "I need a supplied workplace policy or process explained clearly.", + "target_hint": "I want a careful business-writing target." + }, + { + "id": "roles-hiring", + "name": "Roles and hiring", + "description": "I need a job description, scorecard, or candidate message.", + "target_hint": "I want a clear people-writing target." + }, + { + "id": "interview-prep", + "name": "Interview preparation", + "description": "I need structured questions, evaluation criteria, or a debrief format.", + "target_hint": "I want a structured reasoning target." + }, + { + "id": "onboarding", + "name": "Onboarding", + "description": "I need an onboarding plan, checklist, training material, or manager guide.", + "target_hint": "I want a planning and writing target." + }, + { + "id": "feedback-development", + "name": "Feedback and development", + "description": "I need a review, goal, coaching note, or difficult feedback message.", + "target_hint": "I want a careful communication target." + } + ], + "fallback": { + "target_hint": "I want a careful people operations target." + } + }, + { + "id": "it-help-desk", + "revision": 1, + "name": "IT Help Desk", + "summary": "I want one route for user help, devices, networks, access, automation, and documentation.", + "tags": [ + "it", + "support", + "networks", + "automation" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "user-assistance", + "name": "User assistance", + "description": "I need application setup, a common error fixed, or clear step-by-step guidance.", + "target_hint": "I want a fast technical support target." + }, + { + "id": "device-network", + "name": "Device and network troubleshooting", + "description": "I need help with connectivity, an operating system, a device, or a peripheral.", + "target_hint": "I want a technical reasoning target." + }, + { + "id": "identity-access", + "name": "Identity and access", + "description": "I need help with accounts, permissions, authentication, or an access review.", + "target_hint": "I want a precise security-aware target." + }, + { + "id": "automation", + "name": "Automation", + "description": "I need a shell command, script, repetitive task, or administrative workflow.", + "target_hint": "I want a coding target." + }, + { + "id": "change-documentation", + "name": "Change documentation", + "description": "I need a runbook, maintenance notice, inventory, or technical handoff.", + "target_hint": "I want a clear technical writing target." + } + ], + "fallback": { + "target_hint": "I want a dependable technical support target." + } + }, + { + "id": "security-operations-desk", + "revision": 1, + "name": "Security Operations Desk", + "summary": "I want one route for alerts, threats, secure review, incidents, and compliance evidence.", + "notice": "I’ll verify security advice before I apply it.", + "tags": [ + "security", + "incidents", + "threats", + "compliance" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "alert-triage", + "name": "Alert triage", + "description": "I need logs, alerts, indicators, or suspicious behavior interpreted.", + "target_hint": "I want a fast security analysis target." + }, + { + "id": "threat-modeling", + "name": "Threat modeling", + "description": "I need assets, boundaries, attack paths, controls, or abuse cases identified.", + "target_hint": "I want a strong security reasoning target." + }, + { + "id": "secure-review", + "name": "Secure review", + "description": "I need code, configuration, permissions, or a deployment plan reviewed for security problems.", + "target_hint": "I want a careful code and configuration target." + }, + { + "id": "incident-response", + "name": "Incident response", + "description": "I need containment steps, an investigation plan, a timeline, or an incident update.", + "target_hint": "I want a strong incident reasoning target." + }, + { + "id": "compliance-evidence", + "name": "Compliance evidence", + "description": "I need supplied controls, policies, findings, or remediation work mapped and summarized.", + "target_hint": "I want a precise long-context target." + } + ], + "fallback": { + "target_hint": "I want a dependable security reasoning target." + } + }, + { + "id": "devops-reliability", + "revision": 1, + "name": "DevOps and Reliability", + "summary": "I want one route for builds, infrastructure, observability, incidents, and performance.", + "tags": [ + "devops", + "sre", + "infrastructure", + "observability" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "build-ci", + "name": "Build and CI failures", + "description": "I need a pipeline, dependency, test, build, or release failure diagnosed.", + "target_hint": "I want a coding target with strong debugging." + }, + { + "id": "infrastructure", + "name": "Infrastructure", + "description": "I need help with containers, Kubernetes, cloud resources, networking, or infrastructure as code.", + "target_hint": "I want a strong infrastructure target." + }, + { + "id": "observability", + "name": "Observability", + "description": "I need logs, metrics, traces, alerts, dashboards, or service objectives worked through.", + "target_hint": "I want an analytical operations target." + }, + { + "id": "incident-mitigation", + "name": "Incident mitigation", + "description": "I need production behavior diagnosed and safe recovery steps developed.", + "target_hint": "I want a careful operations reasoning target." + }, + { + "id": "capacity-performance", + "name": "Capacity and performance", + "description": "I need a bottleneck, scaling plan, load issue, cost problem, or resilience concern analyzed.", + "target_hint": "I want a deep technical reasoning target." + } + ], + "fallback": { + "target_hint": "I want a dependable operations target." + } + }, + { + "id": "finance-business-analysis", + "revision": 1, + "name": "Finance and Business Analysis", + "summary": "I want one route for reconciliation, budgets, forecasts, pricing, and reports.", + "notice": "I’ll review financial work before I rely on it.", + "tags": [ + "finance", + "budgets", + "forecasting", + "pricing" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "transactions-reconciliation", + "name": "Transactions and reconciliation", + "description": "I need transactions categorized, records matched, exceptions found, or controls checked.", + "target_hint": "I want a precise structured-data target." + }, + { + "id": "budget-variance", + "name": "Budget and variance", + "description": "I need a plan compared with actuals and material differences explained.", + "target_hint": "I want a quantitative analysis target." + }, + { + "id": "forecast-scenarios", + "name": "Forecast and scenarios", + "description": "I need assumptions, ranges, sensitivities, or cash needs modeled.", + "target_hint": "I want a strong quantitative reasoning target." + }, + { + "id": "pricing-economics", + "name": "Pricing and unit economics", + "description": "I need margins, acquisition cost, retention, pricing, or break-even analyzed.", + "target_hint": "I want a business reasoning target." + }, + { + "id": "management-reporting", + "name": "Management reporting", + "description": "I need a decision-ready summary, commentary, table, or financial finding.", + "target_hint": "I want a clear analytical writing target." + } + ], + "fallback": { + "target_hint": "I want a dependable quantitative reasoning target." + } + }, + { + "id": "contract-policy-review", + "revision": 1, + "name": "Contract and Policy Review", + "summary": "I want one route for summaries, clauses, comparisons, drafts, and risk checks.", + "notice": "I’ll have a qualified person review legal decisions.", + "tags": [ + "contracts", + "policies", + "review", + "risk" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "plain-summary", + "name": "Plain-language summary", + "description": "I need a supplied contract or policy explained without changing its meaning.", + "target_hint": "I want a careful long-context target." + }, + { + "id": "clause-extraction", + "name": "Clause extraction", + "description": "I need duties, dates, renewals, limits, remedies, or exceptions found.", + "target_hint": "I want a precise extraction target." + }, + { + "id": "version-comparison", + "name": "Version comparison", + "description": "I need material additions, removals, or changed obligations identified across versions.", + "target_hint": "I want a target with a long context window." + }, + { + "id": "routine-drafting", + "name": "Routine drafting", + "description": "I need a clause, policy, notice, or revision suggestion drafted from my instructions.", + "target_hint": "I want a careful drafting target." + }, + { + "id": "risk-checklist", + "name": "Risk checklist", + "description": "I need ambiguity, unusual terms, missing protections, or questions for review surfaced.", + "target_hint": "I want a critical reasoning target." + } + ], + "fallback": { + "target_hint": "I want a careful long-context target." + } + }, + { + "id": "learning-tutor", + "revision": 1, + "name": "Learning Tutor", + "summary": "I want one route for explanations, worked problems, practice, feedback, and study plans.", + "tags": [ + "learning", + "tutoring", + "practice", + "study" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "explain-concept", + "name": "Explain a concept", + "description": "I need a clear explanation matched to what I already know.", + "target_hint": "I want a clear teaching target." + }, + { + "id": "work-problem", + "name": "Work through a problem", + "description": "I need guided steps, hints, calculations, or reasoning for a problem.", + "target_hint": "I want a strong reasoning target." + }, + { + "id": "practice-quiz", + "name": "Practice and quiz", + "description": "I need questions, exercises, flashcards, or an answer check.", + "target_hint": "I want a fast interactive teaching target." + }, + { + "id": "review-work", + "name": "Review my work", + "description": "I need specific feedback, corrections, and ways to improve my work.", + "target_hint": "I want a careful review target." + }, + { + "id": "study-planning", + "name": "Study planning", + "description": "I need goals, a learning sequence, a schedule, or review intervals.", + "target_hint": "I want a dependable planning target." + } + ], + "fallback": { + "target_hint": "I want a supportive teaching target." + } + }, + { + "id": "course-training-designer", + "revision": 1, + "name": "Course and Training Designer", + "summary": "I want one route for curricula, lessons, assessments, rubrics, and learner needs.", + "tags": [ + "education", + "training", + "curriculum", + "assessment" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "curriculum-design", + "name": "Curriculum design", + "description": "I need outcomes, modules, prerequisites, or a learning progression designed.", + "target_hint": "I want a strong instructional planning target." + }, + { + "id": "lesson-creation", + "name": "Lesson creation", + "description": "I need activities, examples, explanations, or facilitator guidance for a lesson.", + "target_hint": "I want a clear teaching and writing target." + }, + { + "id": "assessments", + "name": "Assessments", + "description": "I need questions, projects, practical exercises, or answer keys.", + "target_hint": "I want a precise teaching target." + }, + { + "id": "rubrics-feedback", + "name": "Rubrics and feedback", + "description": "I need evaluation criteria or useful feedback for learners.", + "target_hint": "I want a structured review target." + }, + { + "id": "adaptation", + "name": "Adaptation", + "description": "I need material adapted for different skill levels, needs, formats, or accessibility.", + "target_hint": "I want a flexible instructional target." + } + ], + "fallback": { + "target_hint": "I want a dependable instructional design target." + } + }, + { + "id": "healthcare-operations-assistant", + "revision": 1, + "name": "Healthcare Operations Assistant", + "summary": "I want one route for patient administration, approved materials, documentation, policy, and operations.", + "notice": "I won’t use this route for diagnosis or treatment decisions.", + "tags": [ + "healthcare", + "operations", + "documentation", + "policy" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "patient-administration", + "name": "Patient administration", + "description": "I need help with scheduling, intake, reminders, or non-clinical instructions.", + "target_hint": "I want a clear administrative writing target." + }, + { + "id": "patient-materials", + "name": "Patient-friendly materials", + "description": "I need approved information rewritten in clear, accessible language.", + "target_hint": "I want a careful plain-language target." + }, + { + "id": "documentation-formatting", + "name": "Documentation formatting", + "description": "I need supplied notes organized without adding new medical claims.", + "target_hint": "I want a precise structured-writing target." + }, + { + "id": "policy-compliance", + "name": "Policy and compliance", + "description": "I need a supplied procedure, requirement, or checklist summarized.", + "target_hint": "I want a careful long-context target." + }, + { + "id": "operations-analysis", + "name": "Operations analysis", + "description": "I need staffing, workflow, wait time, handoff, or service quality analyzed.", + "target_hint": "I want an analytical reasoning target." + } + ], + "fallback": { + "target_hint": "I want a careful healthcare operations target." + } + }, + { + "id": "ecommerce-operations", + "revision": 1, + "name": "E-commerce Operations", + "summary": "I want one route for catalog data, product content, merchandising, customers, and reviews.", + "tags": [ + "ecommerce", + "catalog", + "products", + "customers" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "catalog-cleanup", + "name": "Catalog cleanup", + "description": "I need titles, attributes, categories, or structured product fields normalized.", + "target_hint": "I want a precise structured-data target." + }, + { + "id": "product-content", + "name": "Product content", + "description": "I need a product description, benefit list, comparison table, or FAQ.", + "target_hint": "I want a clear product-writing target." + }, + { + "id": "merchandising", + "name": "Merchandising", + "description": "I need collections, bundles, promotions, or a seasonal campaign planned.", + "target_hint": "I want a creative commerce target." + }, + { + "id": "customer-messages", + "name": "Customer messages", + "description": "I need a response about a product, shipment, return, or review.", + "target_hint": "I want a fast customer communication target." + }, + { + "id": "review-analysis", + "name": "Review analysis", + "description": "I need themes, defects, objections, or product opportunities extracted from reviews.", + "target_hint": "I want a target with a long context window." + } + ], + "fallback": { + "target_hint": "I want a dependable commerce writing target." + } + }, + { + "id": "home-travel-life-planner", + "revision": 1, + "name": "Home, Travel, and Life Planner", + "summary": "I want one route for trips, purchases, home routines, events, and life administration.", + "tags": [ + "travel", + "home", + "planning", + "shopping" + ], + "endpoint_families": [ + "openai.chat_completions", + "openai.responses", + "anthropic.messages" + ], + "lanes": [ + { + "id": "travel-planning", + "name": "Travel planning", + "description": "I need an itinerary, packing list, schedule, budget, or travel alternative.", + "target_hint": "I want a strong planning target." + }, + { + "id": "purchase-decisions", + "name": "Purchase decisions", + "description": "I need requirements, comparison criteria, trade-offs, or a shortlist.", + "target_hint": "I want a careful comparison target." + }, + { + "id": "home-routines", + "name": "Home routines", + "description": "I need help with meals, maintenance, organization, or a recurring home plan.", + "target_hint": "I want a fast practical planning target." + }, + { + "id": "events-occasions", + "name": "Events and occasions", + "description": "I need a timeline, invitation, menu, activity plan, or checklist for an event.", + "target_hint": "I want a creative planning target." + }, + { + "id": "life-administration", + "name": "Life administration", + "description": "I need help organizing forms, correspondence, appointments, or a complex task list.", + "target_hint": "I want a dependable structured-planning target." + } + ], + "fallback": { + "target_hint": "I want a dependable general planning target." + } + } + ] +}