Skip to content

Business Manager

Cluster: Uncategorised | Type: component | MCP Tools: 132

Overview

GTM operations component for the G6 vibe-coder launch. It tracks launch phases, customer funnel state, design partners, marketing campaigns, revenue events, onboarding progress, triggers, workflows, and learning loops through a SQLite-backed store and an MCP tool surface.

When to use:

  • Running the Phase 0-2 launch checklist as an operational tracker
  • Monitoring guide downloads, trials, conversions, churn risk, and onboarding progress
  • Tracking design partner applications, partner health, and weekly milestones
  • Recording lightweight campaign, content, revenue, and target-comparison data
  • Coordinating founder-approved GTM actions through graduated autonomy tiers

MVP operations caveat

This component is functional for MVP launch operations and has passing component and BDD coverage, but it is not a fully automated production GTM system. Launch milestones and business goals still need to be seeded or entered by an operator; email, social, and webhook actions default to no-op/logging unless real provider adapters and credentials are configured; and funnel/revenue analytics are intentionally lightweight. Use it as a founder operating console for early launch execution, not as a source of audited finance, CRM, or marketing-attribution truth.

Capabilities

  • Launch tracking: phase status, milestone lifecycle, blockers, exit criteria, and phase-advance recommendations
  • Customer funnel: event recording, current-stage counts, active trials, churn-risk signals, and conversion forecasting
  • Design partners: partner registration, health filtering, milestone recording, and partner-status lookups
  • Marketing: campaign creation, content calendar, metrics, CTR, CPC, and CPA reporting
  • Revenue: MRR/ARR dashboard, subscription lifecycle events, financial projection, and target comparison
  • Onboarding: domain-specific templates and next-step tracking for non-technical users
  • Autonomy controls: tier-gated operations for read-only reports, draft creation, recorded events, and external side effects
  • Capability discovery: runtime backend state, credential presence only, cost-gate limits, store schema, QA gates, coordinator boundaries, and degradation codes
  • Finance/tax honesty: accounting and tax views are machine-labelled advisory-only, unaudited, and qualified-draft

Quick Start

from mvp.business_manager import BusinessManagerBlock, BusinessManagerInput

block = BusinessManagerBlock()
result = block.infer(BusinessManagerInput(op="get_launch_status"))

For persistent local state, pass a SQLite path when creating the block:

block = BusinessManagerBlock(db_path="business_manager.db")

Public API

BusinessManagerBlock(AIBlock[BusinessManagerInput, BusinessManagerOutput, dict])

Field Type Default
name str 'business_manager'
state dict field(default_factory=dict)
db_path str ':memory:'
current_tier AutonomyTier AutonomyTier.T3
resource_bounds ResourceBounds field(default_factory=ResourceBounds)
usage ResourceUsage field(default_factory=ResourceUsage)
llm object None
governor object None

Methods:

infer(data: BusinessManagerInput) -> Result[BusinessManagerOutput]

LaunchPhase(str, Enum)

AutonomyTier(str, Enum)

FunnelStage(str, Enum)

MilestoneStatus(str, Enum)

PartnerHealth(str, Enum)

CampaignStatus(str, Enum)

ContentStatus(str, Enum)

RevenueEventType(str, Enum)

SDLCPhase(str, Enum)

CodingAgentType(str, Enum)

CodingSessionStatus(str, Enum)

BusinessManagerInput(BaseModel)

Field Type Default
op str required
task str ''
context dict[str, Any] Field(default_factory=dict)
parameters dict[str, Any] Field(default_factory=dict)
entity_id str ''
query str ''
production_mode bool False
approval_artifact_id str ''
reviewer_id str ''

BusinessManagerOutput(BaseModel)

Field Type Default
op str ''
result dict[str, Any] Field(default_factory=dict)
records list[dict[str, Any]] Field(default_factory=list)
message str ''
count int 0
found bool False
metadata dict[str, Any] Field(default_factory=dict)
degraded bool False
degradation_reason str \| None None

BusinessManagerStore

SQLite-backed persistence for business manager state.

Constructor:

Parameter Type Default
db_path str ':memory:'

Methods:

close() -> None

create_milestone(phase: str, title: str, description: str = '') -> str

get_milestone(milestone_id: str) -> dict | None

list_milestones(phase: str = '', status: str = '', limit: int = 50) -> list[dict]

update_milestone(milestone_id: str, **kwargs: object) -> bool

advance_milestone(milestone_id: str) -> dict | None

record_funnel_event(user_email: str, stage: str, previous_stage: str = '', metadata: dict | None = None) -> str

get_funnel_metrics(limit: int = 50) -> dict

get_active_trials(limit: int = 50) -> list[dict]

list_funnel_events(user_email: str = '', stage: str = '', limit: int = 50) -> list[dict]

create_design_partner(contact_name: str, contact_email: str, domain: str = '', company_name: str = '', tools_used: str = '', what_built: str = '', what_broken: str = '') -> str

get_partner(partner_id: str) -> dict | None

list_design_partners(health: str = '', limit: int = 50) -> list[dict]

update_partner(partner_id: str, **kwargs: object) -> bool

record_partner_milestone(partner_id: str, milestone: str) -> bool

create_campaign(name: str, channel: str, budget: float = 0.0) -> str

get_campaign(campaign_id: str) -> dict | None

list_campaigns(status: str = '', channel: str = '', limit: int = 50) -> list[dict]

update_campaign(campaign_id: str, **kwargs: object) -> bool

record_campaign_metric(campaign_id: str, impressions: int = 0, clicks: int = 0, conversions: int = 0, spend: float = 0.0) -> bool

create_content_item(campaign_id: str, title: str, content_type: str = '', body: str = '', scheduled_for: str = '') -> str

get_content_item(content_id: str) -> dict | None

list_content_items(campaign_id: str = '', status: str = '', limit: int = 50) -> list[dict]

update_content_item(content_id: str, **kwargs: object) -> bool

record_revenue_event(event_type: str, account_id: str, mrr_delta: float = 0.0, plan_tier: str = '') -> str

get_revenue_dashboard() -> dict

take_revenue_snapshot() -> str

list_revenue_snapshots(limit: int = 30) -> list[dict]

record_action(action_type: str, target: str, payload: dict | None = None, status: str = 'pending', gate_id: str = '') -> str

update_action(action_id: str, status: str, response: dict | None = None) -> bool

list_action_log(status: str = '', action_type: str = '', limit: int = 50) -> list[dict]

get_action(action_id: str) -> dict | None

create_goal(objective: str, target_metric: str, target_value: float, deadline: str = '', strategy: dict | None = None) -> str

get_goal(goal_id: str) -> dict | None

list_goals(status: str = 'active', limit: int = 20) -> list[dict]

update_goal(goal_id: str, **kwargs: object) -> bool

create_trigger(name: str, condition: dict, action_template: dict, cooldown_sec: int = 86400) -> str

list_triggers(enabled_only: bool = True, limit: int = 50) -> list[dict]

mark_trigger_fired(trigger_id: str) -> bool

disable_trigger(trigger_id: str) -> bool

create_monitor(metric_name: str, threshold: float, direction: str = 'above', check_interval_sec: int = 3600) -> str

list_monitors(limit: int = 50) -> list[dict]

update_monitor(monitor_id: str, last_value: float) -> bool

create_alert(message: str, severity: str = 'info', monitor_id: str = '', trigger_id: str = '') -> str

list_alerts(unacknowledged_only: bool = True, limit: int = 50) -> list[dict]

acknowledge_alert(alert_id: str) -> bool

create_workflow(name: str, steps: list[dict], trigger_id: str = '') -> str

get_workflow(workflow_id: str) -> dict | None

list_workflows(status: str = '', limit: int = 50) -> list[dict]

update_workflow(workflow_id: str, **kwargs: object) -> bool

update_workflow_steps(workflow_id: str, steps: list[dict]) -> bool

create_learning(pattern_type: str, insight: str, evidence: list[dict] | None = None, confidence: float = 0.5) -> str

list_learnings(pattern_type: str = '', min_confidence: float = 0.0, limit: int = 20) -> list[dict]

update_learning(learning_id: str, evidence: list[dict] | None = None, confidence: float | None = None, applied_count_delta: int = 0) -> bool

count_distinct_funnel_users(stage: str) -> int

create_coding_session(agent_type: str = 'auto', task_type: str = '', prompt: str = '', context_hash: str = '', budget_profile: str = 'standard', skills: list[str] | None = None, workflow_id: str = '', phase: str = '') -> str

get_coding_session(session_id: str) -> dict | None

update_coding_session(session_id: str, **kwargs: object) -> bool

list_coding_sessions(status: str = '', workflow_id: str = '', limit: int = 50) -> list[dict]

record_context_strategy(task_type: str, strategy: str, sources: list[str], outcome_score: float, tokens_used: int) -> int

get_context_strategy_stats(task_type: str = '', limit: int = 20) -> list[dict]

record_ledger_entry(account_code: str, debit: str = '0', credit: str = '0', currency: str = 'USD', memo: str = '', source: str = '', campaign_id: str = '', posted_at: str = '') -> str

list_ledger_entries(account_code: str = '', period_start: str = '', period_end: str = '', campaign_id: str = '', limit: int = 500) -> list[dict]

add_asset(name: str, acquisition_cost: str, currency: str = 'USD', category: str = '') -> str

list_assets(category: str = '', limit: int = 200) -> list[dict]

record_equity_movement(kind: str, amount: str, currency: str = 'USD', period: str = '', memo: str = '') -> str

list_equity_movements(kind: str = '', period: str = '', limit: int = 200) -> list[dict]

upsert_social_account(platform: str, account_id: str, display_name: str = '', adapter_kind: str = 'ayrshare', oauth_state: str = 'unauthorized') -> str

list_social_accounts(platform: str = '') -> list[dict]

create_social_post(account_row_id: str, content_id: str = '', scheduled_for: str = '', idempotency_key: str = '', status: str = 'draft') -> str

update_social_post(post_id: str, **kwargs: object) -> bool

get_social_post_by_idempotency(idempotency_key: str) -> dict | None

list_social_posts(account_row_id: str = '', status: str = '', limit: int = 100) -> list[dict]

record_social_metric(post_id: str, impressions: int = 0, engagements: int = 0, clicks: int = 0, conversions: int = 0) -> str

list_social_metrics(post_id: str = '', limit: int = 100) -> list[dict]

record_webhook_event(provider: str, signature_verified: bool, payload: dict, idempotency_key: str = '', status: str = 'received', error: str = '') -> str

mark_webhook_processed(event_id: str, status: str = 'processed', error: str = '') -> bool

get_webhook_by_idempotency(provider: str, idempotency_key: str) -> dict | None

list_webhook_events(provider: str = '', status: str = '', limit: int = 50) -> list[dict]

store_oauth_token(platform: str, account_id: str, vault_handle: str, expires_at: str = '', scopes: str = '') -> str

get_oauth_token(platform: str, account_id: str) -> dict | None

record_qa_report(content_id: str, passed: bool, gate_results: dict, advisories: list) -> str

get_qa_reports(content_id: str = '', limit: int = 50) -> list[dict]

create_autonomous_campaign(brand_kit_id: str, autonomy_tier: str, plan: dict) -> str

update_autonomous_campaign(campaign_id: str, status: str) -> bool

append_autonomous_step(campaign_id: str, step_index: int, step_type: str, status: str = 'pending', detail: dict | None = None, cost_advisory: dict | None = None) -> str

complete_autonomous_step(step_id: str, status: str, detail: dict | None = None) -> bool

list_autonomous_steps(campaign_id: str, limit: int = 200) -> list[dict]

BusinessManagerMCPBlock(AIBlock[MCPBusinessManagerInput, MCPBusinessManagerOutput, dict])

Field Type Default
name str 'business_manager_mcp'
state dict field(default_factory=dict)
db_path str ':memory:'
resource_bounds ResourceBounds field(default_factory=ResourceBounds)
usage ResourceUsage field(default_factory=ResourceUsage)
llm object None
governor object None

Methods:

infer(data: MCPBusinessManagerInput) -> Result[MCPBusinessManagerOutput]

MCPBusinessManagerInput(BaseModel)

Field Type Default
op _OP_LITERAL required
task str ''
context dict[str, Any] Field(default_factory=dict)
parameters dict[str, Any] Field(default_factory=dict)
entity_id str ''
query str ''
production_mode bool False
approval_artifact_id str ''
reviewer_id str ''

MCPBusinessManagerOutput(BaseModel)

Field Type Default
op str ''
result dict[str, Any] Field(default_factory=dict)
records list[dict[str, Any]] Field(default_factory=list)
message str ''
count int 0
found bool False
metadata dict[str, Any] Field(default_factory=dict)
degraded bool False
degradation_reason str \| None None

MCP Tools

Operation Source
get_launch_status business_manager_mcp
advance_milestone business_manager_mcp
get_phase_checklist business_manager_mcp
propose_phase_advance business_manager_mcp
get_exit_criteria business_manager_mcp
record_blocker business_manager_mcp
record_funnel_event business_manager_mcp
get_funnel_metrics business_manager_mcp
get_active_trials business_manager_mcp
get_churn_risk business_manager_mcp
create_outreach business_manager_mcp
get_funnel_forecast business_manager_mcp
create_design_partner business_manager_mcp
get_partner_status business_manager_mcp
record_partner_milestone business_manager_mcp
list_design_partners business_manager_mcp
get_partner_health business_manager_mcp
create_campaign business_manager_mcp
create_content_item business_manager_mcp
get_content_calendar business_manager_mcp
record_campaign_metric business_manager_mcp
get_campaign_performance business_manager_mcp
record_revenue_event business_manager_mcp
get_revenue_dashboard business_manager_mcp
get_financial_projection business_manager_mcp
compare_to_target business_manager_mcp
start_onboarding business_manager_mcp
get_onboarding_status business_manager_mcp
complete_onboarding_step business_manager_mcp
get_domain_templates business_manager_mcp
analyze_situation business_manager_mcp
recommend_actions business_manager_mcp
evaluate_decision business_manager_mcp
explain_recommendation business_manager_mcp
generate_content business_manager_mcp
personalize_outreach business_manager_mcp
generate_campaign_plan business_manager_mcp
refine_content business_manager_mcp
set_business_goal business_manager_mcp
decompose_goal business_manager_mcp
assess_progress business_manager_mcp
replan business_manager_mcp
create_trigger business_manager_mcp
list_triggers business_manager_mcp
create_monitor business_manager_mcp
get_alerts business_manager_mcp
create_workflow business_manager_mcp
execute_workflow business_manager_mcp
evaluate_triggers business_manager_mcp
evaluate_monitors business_manager_mcp
execute_outreach business_manager_mcp
publish_content business_manager_mcp
trigger_webhook business_manager_mcp
schedule_action business_manager_mcp
analyze_outcomes business_manager_mcp
get_learnings business_manager_mcp
update_strategy business_manager_mcp
compare_approaches business_manager_mcp
create_coding_session business_manager_mcp
execute_coding_session business_manager_mcp
get_coding_session business_manager_mcp
list_coding_sessions business_manager_mcp
cancel_coding_session business_manager_mcp
resume_coding_session business_manager_mcp
create_sdlc_workflow business_manager_mcp
execute_sdlc_phase business_manager_mcp
advance_sdlc_workflow business_manager_mcp
get_sdlc_status business_manager_mcp
diagnose_sdlc_failure business_manager_mcp
apply_sdlc_learning business_manager_mcp
get_budget_profile business_manager_mcp
estimate_session_cost business_manager_mcp
get_context_strategy_stats business_manager_mcp
compress_output business_manager_mcp
get_tool_manifest business_manager_mcp
get_tool_summary business_manager_mcp
get_tool_detail business_manager_mcp
get_tools_for_phase business_manager_mcp
capabilities business_manager_mcp
list_backends business_manager_mcp
describe_backend business_manager_mcp
list_configured_social_adapters business_manager_mcp
describe_social_adapter business_manager_mcp
list_content_backends business_manager_mcp
describe_content_backend business_manager_mcp
list_webhook_providers business_manager_mcp
describe_webhook_provider business_manager_mcp
list_cost_gate_limits business_manager_mcp
get_daily_paid_backend_spend business_manager_mcp
list_store_tables business_manager_mcp
describe_store_schema business_manager_mcp
list_qa_gates business_manager_mcp
describe_autonomy_policy business_manager_mcp
list_patterns business_manager_mcp
content.brief_from_goal business_manager_mcp
content.generate_text business_manager_mcp
content.generate_image business_manager_mcp
content.generate_video business_manager_mcp
content.generate_voiceover business_manager_mcp
content.generate_music business_manager_mcp
content.assemble_post business_manager_mcp
content.run_qa business_manager_mcp
social.list_accounts business_manager_mcp
social.connect_account business_manager_mcp
social.publish_now business_manager_mcp
social.schedule_post business_manager_mcp
social.cancel_scheduled business_manager_mcp
social.get_post_analytics business_manager_mcp
social.suggest_best_time business_manager_mcp
monetisation.recommend_pricing business_manager_mcp
monetisation.detect_funnel_bottleneck business_manager_mcp
monetisation.attribute_revenue business_manager_mcp
monetisation.recommend_promo business_manager_mcp
monetisation.compute_ltv_cac business_manager_mcp
accounting.record_cash_in business_manager_mcp
accounting.record_cash_out business_manager_mcp
accounting.add_asset business_manager_mcp
accounting.record_equity_movement business_manager_mcp
accounting.get_pnl_cash business_manager_mcp
accounting.get_balance_sheet_cash business_manager_mcp
accounting.get_projections business_manager_mcp
accounting.get_roi_by_campaign business_manager_mcp
tax.estimate_payable business_manager_mcp
tax.get_summary business_manager_mcp
tax.set_jurisdiction business_manager_mcp
autonomous.plan_campaign business_manager_mcp
autonomous.run_campaign business_manager_mcp
autonomous.measure_campaign business_manager_mcp
autonomous.iterate_campaign business_manager_mcp
webhooks.list_recent business_manager_mcp
webhooks.replay business_manager_mcp
webhooks.get_processing_status business_manager_mcp