Integration Triage Policy

Purpose

Decide when to add external integrations (APIs, MCP servers, new tools) vs when to improve what exists.

Default stance

No new integration without observed pain point. “This sounds useful” is not a pain point.

Triage rules

Rule 1: Pain point type → integration category

Observed pain pointConsider integrations in categoryDo NOT consider
Мусорные источники / weak recall in researchSearch providers (Tavily, Exa, Firecrawl)Financial data, orchestration
Абсурдные финансовые выводы / hallucinated benchmarksFinancial data (FMP, public APIs)Search, orchestration
Pipeline медленноFirst: profiling, parallelization, token budget. Only then: provider swapAny provider swap without profiling first
Unstable UX / crashes / broken renderingNone — fix existing codeAll integrations
Missing capability (e.g., нет email/calendar)Orchestration (Composio, specific MCP)Search, data

Rule 2: Risk assessment before adding

Before merging integration into current sprint, classify:

LOW RISK (can be in bugfix sprint):

  • Drop-in replacement of existing interface
  • No new code paths
  • No changes to orchestration, schemas, cost tracking
  • No new error types
  • Feature-flagged with easy rollback

MEDIUM RISK (separate sprint):

  • New client-side tool or handler
  • Changes to prompts, role configs
  • New cost/observability fields
  • Requires A/B evaluation vs existing
  • Touches 3-5 components

HIGH RISK (plan carefully, possibly ADR):

  • New orchestration path or fallback chain
  • Schema changes that Judge/downstream consumers depend on
  • Multiple integration points
  • Requires architectural discussion

Rule 3: Evidence before experimentation

Before spending effort on integration evaluation:

  1. Collect 3-5 real observations of the pain point (FEEDBACK_LOG.md, failed runs, user comments)
  2. Formulate hypothesis — “We expect X integration to improve Y by Z%”
  3. Set success metric — how will we know it worked
  4. Budget the A/B test — time + cost

Without this, integrations become “tried it, kinda works, kinda doesn’t, moved on” — wasted effort.

Rule 4: Bugfix sprint rule

During any sprint whose primary goal is stabilization (bugfix, reliability, UX fix):

  • Only LOW RISK integrations permitted
  • All MEDIUM/HIGH RISK deferred to next capability sprint
  • Violation: adding MEDIUM RISK “because it seems small” is how bugfix sprints derail

Known candidates (as of 2026-04-16)

CandidateTriggered byRiskStatus
Tavily”слабые источники” feedbackMEDIUM (client-side tool + new path)Deferred, awaits Rule 3 evidence
ExaSemantic search для сложных queriesMEDIUMDeferred
FMP”absurd ROI” feedbackMEDIUM-HIGH (FM schema impact)Deferred, high value if finance pain point confirms
FirecrawlDeep scraping specific sitesLOW if used narrowlyDeferred, probably overkill
SimilarWebReal traffic dataCost-blocked ($149+/mo)Not now
SEMrushKeyword/ads dataCost-blocked ($130+/mo)Not now
Composio250+ integrations unifiedHIGH (major orchestration change)Not now — premature for current scale

Decision log for integration candidates

Each candidate consideration должен закончиться одним из:

  1. Approved → сразу в implementation sprint
  2. Deferred → добавляется в candidates table выше с trigger condition
  3. Rejected → записывается в Decision-Log с reason

Never “maybe later without specifics”.

Review cycle

Этот policy пересматривается:

  • После каждого 5-го capability sprint
  • Если candidates table становится длиннее 10
  • Если появляются новые categories of pain points

Cross-references:

  • Pain point evidence: reports/streamlit_runs/FEEDBACK_LOG.md (in synth-brain repo)
  • Risk taxonomy examples: Week 4.7 pre-check on Tavily (showed MEDIUM RISK classification)
  • Related: EscalationPolicy, DecisionRights