Skip to content

Synthesis Runs

Synthesis runs analyze signals and execution history to propose pipeline configuration improvements. An LLM examines feedback patterns and suggests changes that address identified issues.

  • Synthesis Run - An LLM-driven analysis that proposes configuration changes
  • Signals - Input feedback (comments, ratings, evaluations) that inform the synthesis
  • Diagnosis - Analysis of patterns and issues found in signals
  • Changes - Proposed modifications to pipeline configuration
  • Apply/Reject - Human decision on whether to implement proposed changes
pending → generating → generated → approved
↘ rejected
pending → failed
StatusDescription
pendingJob queued, waiting to start
generatingLLM analysis in progress
generatedProposal ready for review
approvedChanges applied to pipeline
rejectedProposal declined
failedGeneration error

Initiate synthesis

Terminal window
curl -X POST https://api.catalyzed.ai/pipelines/EMbMEFLyUWEgvnhMWXVVa/synthesize \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"handlerType": "apg_v1"
}'

The response returns 202 Accepted since synthesis runs asynchronously:

{
"synthesisRunId": "SynR8I6rHBms3W4Qfa2-FN",
"pipelineId": "EMbMEFLyUWEgvnhMWXVVa",
"teamId": "ZkoDMyjZZsXo4VAO_nJLk",
"status": "pending",
"handlerType": "apg_v1",
"configurationBeforeId": "CfgABC123...",
"configurationAfterId": null,
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "usr_abc123"
}
TypeDescription
apg_v1Analyze-Plan-Generate multi-step pipeline (DIAGNOSE → PLAN → AUTHOR → APPLY)

Get synthesis run details

Terminal window
curl https://api.catalyzed.ai/synthesis-runs/SynR8I6rHBms3W4Qfa2-FN \
-H "Authorization: Bearer $API_TOKEN"

Completed synthesis response:

{
"synthesisRunId": "SynR8I6rHBms3W4Qfa2-FN",
"pipelineId": "EMbMEFLyUWEgvnhMWXVVa",
"teamId": "ZkoDMyjZZsXo4VAO_nJLk",
"status": "generated",
"handlerType": "apg_v1",
"configurationBeforeId": "CfgABC123...",
"configurationAfterId": "CfgDEF456...",
"diagnosis": {
"summary": "Users report summaries are missing key financial metrics and lack consistent formatting.",
"findings": [
{
"id": "1",
"type": "pain_point",
"description": "Summaries frequently omit revenue growth percentages",
"signalIds": ["SigXYZ1...", "SigXYZ2..."],
"severity": "high"
},
{
"id": "2",
"type": "opportunity",
"description": "Users prefer bullet-point format for key metrics",
"signalIds": ["SigXYZ3..."],
"severity": "medium"
}
]
},
"changes": [
{
"id": "1",
"type": "modify",
"section": "configuration",
"category": "dataInputs",
"slotId": "system_prompt",
"description": "Updated system prompt to emphasize financial metrics",
"rationale": "Addresses finding #1 - ensures revenue percentages are included",
"findingRefs": ["1"]
},
{
"id": "2",
"type": "add",
"section": "configuration",
"category": "dataInputs",
"slotId": "output_format",
"description": "Added output format instruction for bullet points",
"rationale": "Addresses finding #2 - standardizes output format",
"findingRefs": ["2"]
}
],
"structuredWarnings": [
{
"type": "assumption",
"message": "Assumed all documents contain financial metrics",
"changeRefs": ["1"]
}
],
"confidence": "high",
"signalIds": ["SigXYZ1...", "SigXYZ2...", "SigXYZ3..."],
"startedAt": "2024-01-15T10:30:02Z",
"completedAt": "2024-01-15T10:35:00Z",
"createdAt": "2024-01-15T10:30:00Z",
"createdBy": "usr_abc123"
}
async function waitForSynthesis(synthesisRunId: string) {
while (true) {
const response = await fetch(
`https://api.catalyzed.ai/synthesis-runs/${synthesisRunId}`,
{ headers: { Authorization: `Bearer ${apiToken}` } }
);
const run = await response.json();
if (run.status === "generated") {
console.log(`Diagnosis: ${run.diagnosis.summary}`);
console.log(`Changes proposed: ${run.changes.length}`);
return run;
}
if (run.status === "failed") {
throw new Error(run.errorMessage);
}
if (["approved", "rejected"].includes(run.status)) {
return run; // Already decided
}
await new Promise(r => setTimeout(r, 2000)); // Poll every 2 seconds
}
}

Once status is generated, review the proposed changes and apply them:

Apply synthesis

Terminal window
curl -X POST https://api.catalyzed.ai/synthesis-runs/SynR8I6rHBms3W4Qfa2-FN/apply \
-H "Authorization: Bearer $API_TOKEN"

When applied:

  • Status changes to approved
  • configurationAfterId becomes the pipeline’s new activeConfigurationId
  • appliedAt and appliedBy are recorded

If the proposed changes are not appropriate, reject them:

Reject synthesis

Terminal window
curl -X POST https://api.catalyzed.ai/synthesis-runs/SynR8I6rHBms3W4Qfa2-FN/reject \
-H "Authorization: Bearer $API_TOKEN"

List synthesis runs

Terminal window
curl "https://api.catalyzed.ai/synthesis-runs?pipelineIds=EMbMEFLyUWEgvnhMWXVVa" \
-H "Authorization: Bearer $API_TOKEN"
ParameterTypeDescription
synthesisRunIdsstringComma-separated list of IDs
pipelineIdsstringComma-separated pipeline IDs
teamIdsstringComma-separated team IDs
statusesstringComma-separated: pending, generating, generated, approved, rejected, failed
handlerTypesstringComma-separated handler types
createdBystringFilter by creator
createdAfterdateFilter by creation date
createdBeforedateFilter by creation date
pagenumberPage number (1-indexed)
pageSizenumberResults per page (1-100)
orderBystringcreatedAt, appliedAt, status
orderDirectionstringasc or desc

Delete synthesis run

Terminal window
curl -X DELETE https://api.catalyzed.ai/synthesis-runs/SynR8I6rHBms3W4Qfa2-FN \
-H "Authorization: Bearer $API_TOKEN"

The diagnosis field contains the LLM’s analysis:

FieldTypeDescription
summarystring1-2 sentence overview of findings
findingsarrayIndividual issues identified
TypeDescription
pain_pointUser-reported problem
error_patternRecurring error or failure
opportunityPotential improvement
positiveWhat’s working well
SeverityDescription
highCritical issue affecting many users
mediumModerate impact or frequency
lowMinor issue or edge case

The changes array describes proposed modifications:

FieldTypeDescription
idstringChange identifier
typestringadd, modify, or remove
sectionstringinputsSchema, outputsSchema, or configuration
categorystringfiles, datasets, or dataInputs
slotIdstringID of the slot being changed
descriptionstringHuman-readable description
rationalestringWhy this change addresses issues
findingRefsarrayFinding IDs this addresses

The structuredWarnings array contains caveats:

FieldTypeDescription
typestringbreaking_change, assumption, tradeoff, needs_review
messagestringWarning description
changeRefsarrayRelated change IDs
FieldTypeDescription
synthesisRunIdstringUnique identifier
pipelineIdstringPipeline being improved
teamIdstringTeam that owns this synthesis
statusstringCurrent status
handlerTypestringSynthesis handler used
configurationBeforeIdstringOriginal configuration
configurationAfterIdstringProposed configuration (when generated)
diagnosisobjectAnalysis of signals
changesarrayProposed modifications
structuredWarningsarrayCaveats and warnings
confidencestringlow, medium, or high
signalIdsarraySignals analyzed
errorMessagestringError details (if failed)
startedAttimestampWhen generation started
completedAttimestampWhen generation finished
appliedAttimestampWhen approved and applied
appliedBystringUser who approved
createdAttimestampWhen synthesis was created
createdBystringUser who initiated
  1. Accumulate signals first - Gather enough feedback before running synthesis
  2. Review changes carefully - Understand the rationale before applying
  3. Check warnings - Pay attention to assumptions and tradeoffs
  4. Test after applying - Run evaluations to verify improvements
  5. Iterate - Synthesis is iterative; collect more signals and run again