Documentation

Costs

Estimable orchestration cost and the unknowns that dominate it.

Two categories, kept strictly separate: known orchestration cost (text/reasoning agents, which can be estimated now) and unknown generation cost (video, image, voice), which must be measured with real provider quotes before any budget promise.

1. Planning estimates — text/reasoning per long-form video

From app/agents/registry.py. These are planning assumptions in USD, not provider quotes.

Stage Agent Est.
Strategy / orchestration 00 Director 0.35
Topic discovery 01 Research 0.25
Biblical research 02 Biblical research 0.45
Hermeneutics + attestations 03 Hermeneutics 0.55
Script 04 Scriptwriting 0.40
Storyboard 05 Production 0.30
Voice 06 Voice 1.20 (assumption)
Thumbnails 07 Thumbnail 0.60 (assumption)
SEO 08 SEO 0.15
Shorts (amortised) 09 Shorts 0.20
Analytics 11 Analytics 0.10
Subtotal ≈ 4.55

2. Unknowns that dominate the real number

Item Status Why it matters
Video generation (Runway or equivalent) not quoted Typically the largest line item per minute of footage
Image generation volume not quoted 30–60 stills per 8–10 min video
TTS licence and character volume not quoted Price per 1k characters × ~1,500 words
Music/SFX licensing not quoted Per-track or subscription
Bible translation licence not quoted Required before publication is possible at all
YouTube quota extension free but approval-gated Blocks the 4 + 20/month cadence if denied
Storage/egress small Renders and masters add up over a year

Do not present a "cost per video" figure to the operator until each row above has a real quote and at least one end-to-end render has been measured.

3. Guard behaviour

The authorized ceiling is zero. authorized_external_ai_spend_usd defaults to 0.00, and mandatory_monthly_subscriptions_usd is 0.00. This is an authorization boundary, not a claim that services are free: a request that can produce an invoice is refused until the owner authorizes that expenditure. The refusal reason distinguishes a zero ceiling from a per-request approval requirement, because those are different asks.

What runs without asking: manual import, local inference, and already-acquired licensed assets. What never runs without approval: anything whose cost_class is PAID. What is refused outright: a provider that does not declare its cost class at all, because an unknown cost is treated as a possible charge.

  • Ordering rule: never spend on expensive assets until research and script pass validation. A failed script must cost cents, not dollars.
  • Caching: storyboard prompts and thumbnails are content-addressed; identical inputs reuse assets.
  • Model tiering: cheap models for classification/formatting, reasoning models only where exegesis or strategy requires it.
  • Local work is not reported as free. local_compute_estimate() prices electricity per run; hardware amortisation belongs in a separate depreciation line, because it is capital, not compute.

4. Reporting

provider_usage is append-only: provider, operation, units, unit type, cost per call, project. A failed paid request that still billed is recorded too, which is the line that usually goes missing. Weekly report includes: spend vs authorized ceiling, cost per published minute, cost per 1,000 views (only when views exist), and the marginal cost of the next video at current settings.

GET /api/v1/providers/budget returns the ceiling, month-to-date spend, and the remaining balance, with local compute shown separately from billable spend.

Source

Rendered from docs/COSTS.md at build time. Return to the documentation index.