> ## Documentation Index
> Fetch the complete documentation index at: https://docs.highailabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Cost Tracking

> Comprehensive cost analysis for all external APIs, AI models, compute, and storage across the High IQ / TIWIH platform — with per-unit math, scale projections, and vendor pricing links.

## Overview

This page tracks the cost of every external service that powers the High IQ platform. The biggest cost center is the **Strain Research Pipeline** (Trigger.dev v2) — a 7-stage AI pipeline that researches, enriches, and generates images for cannabis strains. The **Strain Music Pipeline** adds AI-generated songs per strain. Other platform costs (auth, hosting, database) are documented at the bottom.

<Note>
  **Self-serve model (March 2026):** The pipeline no longer runs in batch. When a user visits a strain page with no research, they tap a button to trigger on-demand research via direct mode. Results appear in \~5-10 minutes. This means **all strain research runs at direct-mode pricing**.
</Note>

<Info>
  **Data snapshot (July 3, 2026):** **2,525 strains researched**, **2,750 in the unprocessed queue**, and **\~25,000 unmatched competitor strains tracked** (Leafly/AllBud sitemaps). Pipeline throughput has been **≈0 strains/week recently** — a restart decision is pending. At direct-mode pricing ($0.57/strain), the theoretical cost to process the current queue is **~$1,568\*\* for research + **\~$239** for music = **~$1,807 total**.
</Info>

***

## Strain Research Pipeline (Trigger.dev v2)

The pipeline chains 7 stages, each with its own external API calls. Here's exactly what happens per strain and what it costs.

### Pipeline Architecture

<Steps>
  <Step title="Stage 01: Search (Exa)">
    Neural search for web articles about the strain. Returns 25 results with extracted text snippets.

    | Detail              | Value                            |
    | ------------------- | -------------------------------- |
    | API                 | Exa (`search()`)                 |
    | Calls per strain    | **1**                            |
    | Results requested   | 25                               |
    | Search type         | `auto` (hybrid neural + keyword) |
    | Max chars/result    | 5,000                            |
    | Trigger.dev machine | small-1x                         |
  </Step>

  <Step title="Stage 02: Filter (Local)">
    Filters search results to URLs that actually mention the strain name. Uses 11 pattern variants (slugs, no-spaces, accent-normalized, spelling variants). **No external API calls.**

    | Detail         | Value                         |
    | -------------- | ----------------------------- |
    | API            | None (local pattern matching) |
    | Typical output | 5-15 relevant URLs            |
  </Step>

  <Step title="Stage 03: Scrape (Firecrawl)">
    Batch-scrapes all filtered URLs to extract markdown content.

    | Detail              | Value                                |
    | ------------------- | ------------------------------------ |
    | API                 | Firecrawl (`asyncBatchScrapeUrls()`) |
    | Calls per strain    | **1 batch call**                     |
    | URLs per batch      | 5-15 (avg \~10)                      |
    | Credits consumed    | **1 credit per URL** (\~10/strain)   |
    | Format              | Markdown only, main content          |
    | Trigger.dev machine | medium-2x                            |
  </Step>

  <Step title="Stage 04: Extract (Gemini)">
    Structured data extraction from each scraped article — terpenes, effects, aromas, lineage, awards, cannabinoids.

    | Detail                | Value                                |
    | --------------------- | ------------------------------------ |
    | API                   | Google Gemini                        |
    | Model                 | `gemini-3.1-flash-lite`              |
    | Calls per strain      | **\~10** (one per article, parallel) |
    | Input tokens/article  | \~12,500 (50k char limit)            |
    | Output tokens/article | \~2,000 (structured JSON)            |
    | Total tokens/strain   | \~125k input + \~20k output          |
    | Trigger.dev machine   | medium-2x (concurrency: 40)          |
  </Step>

  <Step title="Stage 05: Process (Claude AI)">
    Three-pass FactFinder + Copywriter + Image Prompt generation. This is the most expensive stage.

    **5 API calls per strain:**

    | Pass               | Model                       | Max Tokens | Purpose                                         |
    | ------------------ | --------------------------- | ---------- | ----------------------------------------------- |
    | FactFinder Core    | `claude-haiku-4-5-20251001` | 4,096      | Strain type, lineage, cannabinoids              |
    | FactFinder Profile | `claude-haiku-4-5-20251001` | 4,096      | Terpenes, effects, aromas                       |
    | FactFinder Meta    | `claude-haiku-4-5-20251001` | 4,096      | Medical uses, awards, conflicts                 |
    | Copywriter         | `claude-sonnet-4-6`         | 8,192      | Marketing descriptions, Professor High insights |
    | Image Prompts      | `claude-sonnet-4-6`         | 4,096      | Hero + mascot image generation prompts          |

    The 3 FactFinder passes run in **parallel** (`Promise.all()`). Copywriter and Image Prompts run sequentially with 6-second checkpointed waits between them.

    | Detail              | Value                       |
    | ------------------- | --------------------------- |
    | Total Haiku tokens  | \~30k input + \~9k output   |
    | Total Sonnet tokens | \~20k input + \~9k output   |
    | Trigger.dev machine | medium-2x (concurrency: 15) |
  </Step>

  <Step title="Stage 06: Imaging (Gemini)">
    Generates 2 AI images per strain at 2K resolution (2048×2048px).

    | Detail              | Value                                                    |
    | ------------------- | -------------------------------------------------------- |
    | API                 | Google Gemini                                            |
    | Model               | `gemini-3.1-flash-image-preview`                         |
    | Images per strain   | **2** (hero + mascot)                                    |
    | Resolution          | **2K** (2048×2048px, 1680 output tokens/image)           |
    | Storage             | Supabase (`strain-images/` and `mascot-images/` buckets) |
    | Trigger.dev machine | large-1x (4 vCPU, 8GB RAM for base64)                    |
  </Step>

  <Step title="Stage 07: Save (Supabase)">
    Atomic dual-table write via `upsert_strain_dual_table` RPC. Writes to both `strains_master` (JSONB) and `strains_v2` (columns) in a single transaction.

    | Detail | Value                     |
    | ------ | ------------------------- |
    | API    | Supabase RPC              |
    | Cost   | Included in Supabase plan |
  </Step>
</Steps>

***

### Per-Strain Cost: Direct Mode (Self-Serve)

<Warning>
  **This is the production pricing model.** Since we switched to self-serve (on-demand per user visit), all strains are processed in direct mode.
</Warning>

| Stage            | Service                               | Units                 | Cost                  |
| ---------------- | ------------------------------------- | --------------------- | --------------------- |
| 01 Search        | Exa (1 search, 25 results)            | 1 API call            | **\$0.007**           |
| 02 Filter        | Local pattern matching                | —                     | \$0.000               |
| 03 Scrape        | Firecrawl (\~10 URLs)                 | \~10 credits          | **\$0.010**           |
| 04 Extract       | Gemini 3.1 Flash Lite (\~10 articles) | \~125k in + \~20k out | **\$0.061**           |
| 05 FactFinder    | Claude Haiku 4.5 (×3 passes)          | \~30k in + \~9k out   | **\$0.075**           |
| 05 Copywriter    | Claude Sonnet 4.6                     | \~15k in + \~6k out   | **\$0.135**           |
| 05 Image Prompts | Claude Sonnet 4.6                     | \~5k in + \~3k out    | **\$0.060**           |
| 06 Imaging       | Gemini 3.1 Flash Image (2 × 2K)       | 2 images              | **\$0.202**           |
| 07 Save          | Supabase RPC                          | —                     | \$0.000               |
| Compute          | Trigger.dev (8 runs, \~105s active)   | —                     | **\$0.021**           |
| **Total**        |                                       |                       | **\~\$0.57 / strain** |

#### Cost by Provider

| Provider           | Cost/Strain | Share |
| ------------------ | ----------- | ----- |
| Anthropic (Claude) | \$0.270     | 47%   |
| Google (Gemini)    | \$0.263     | 46%   |
| Trigger.dev        | \$0.021     | 4%    |
| Firecrawl          | \$0.010     | 2%    |
| Exa                | \$0.007     | 1%    |

#### Cost by Stage

| Stage                     | Cost/Strain | Share |
| ------------------------- | ----------- | ----- |
| 06 Imaging (Gemini)       | \$0.202     | 35%   |
| 05 Copywriter (Sonnet)    | \$0.135     | 24%   |
| 05 FactFinder (Haiku ×3)  | \$0.075     | 13%   |
| 04 Extract (Gemini)       | \$0.061     | 11%   |
| 05 Image Prompts (Sonnet) | \$0.060     | 11%   |
| Compute (Trigger.dev)     | \$0.021     | 4%    |
| 03 Scrape (Firecrawl)     | \$0.010     | 2%    |
| 01 Search (Exa)           | \$0.007     | 1%    |

***

### Per-Strain Cost: Batch Mode (Reference)

<Note>
  Batch mode is no longer the primary processing model but remains available for bulk backfills or special operations. Batch discounts apply to **Stage 05** (Anthropic Batch API, 50% off) and **Stage 06** (Gemini Batch API, 50% off). Other stages are unchanged.
</Note>

| Stage                     | Direct      | Batch       | Savings |
| ------------------------- | ----------- | ----------- | ------- |
| 01 Search (Exa)           | \$0.007     | \$0.007     | —       |
| 02 Filter (Local)         | \$0.000     | \$0.000     | —       |
| 03 Scrape (Firecrawl)     | \$0.010     | \$0.010     | —       |
| 04 Extract (Gemini)       | \$0.061     | \$0.061     | —       |
| 05 FactFinder (Haiku ×3)  | \$0.075     | **\$0.038** | 50%     |
| 05 Copywriter (Sonnet)    | \$0.135     | **\$0.068** | 50%     |
| 05 Image Prompts (Sonnet) | \$0.060     | **\$0.030** | 50%     |
| 06 Imaging (Gemini 2×2K)  | \$0.202     | **\$0.101** | 50%     |
| 07 Save (Supabase)        | \$0.000     | \$0.000     | —       |
| Compute (Trigger.dev)     | \$0.021     | \$0.018     | \~14%   |
| **Total**                 | **\$0.571** | **\$0.333** | **42%** |

***

## Strain Music Pipeline

Auto-fires after research completes. Generates a unique AI song per strain using Google Lyria 3 Pro. Always runs in direct mode (no Lyria batch API exists).

<Steps>
  <Step title="Stage 01: Analyze">
    Fetches strain data and downloads hero/mascot images for multimodal input. **No AI call.**
  </Step>

  <Step title="Stage 02: Build Prompt (Gemini)">
    AI generates a creative, strain-specific Lyria 3 prompt from the strain's terpene profile, effects, aromas, and Professor High insight.

    | Detail | Value                    |
    | ------ | ------------------------ |
    | Model  | `gemini-3.1-flash-lite`  |
    | Tokens | \~2k input + \~2k output |
  </Step>

  <Step title="Stage 03: Generate (Lyria 3 Pro)">
    Generates a full 3-minute song with lyrics. Takes the text prompt + hero image + mascot image as multimodal input.

    | Detail      | Value                           |
    | ----------- | ------------------------------- |
    | Model       | `lyria-3-pro-preview`           |
    | Price       | **\$0.08 per song** (fixed)     |
    | Output      | MP3 audio (\~4MB) + lyrics text |
    | Concurrency | 3 (rate-limited)                |
  </Step>

  <Step title="Stage 04: Upload">
    Uploads MP3 to Supabase Storage (`strain-music` bucket) and updates `strains_v2` with audio metadata. **No AI call.**
  </Step>
</Steps>

### Per-Strain Music Cost

| Component                               | Cost                   |
| --------------------------------------- | ---------------------- |
| Gemini 3.1 Flash Lite (prompt building) | \$0.001                |
| Lyria 3 Pro (full song)                 | **\$0.080**            |
| Trigger.dev (5 runs, \~80s active)      | \$0.006                |
| Supabase Storage (\~4MB)                | \~\$0.000              |
| **Total**                               | **\~\$0.087 / strain** |

***

## Combined Per-Strain Total

| Pipeline            | Direct Mode | Batch Mode  |
| ------------------- | ----------- | ----------- |
| Research (7 stages) | \$0.571     | \$0.333     |
| Music (4 stages)    | \$0.087     | \$0.087     |
| **Combined**        | **\$0.658** | **\$0.420** |

***

## Scale Projections

### Self-Serve Model (Direct Mode — Production)

All strains researched on-demand at direct-mode pricing ($0.57 research + $0.087 music).

<CardGroup cols={2}>
  <Card title="Research Only ($0.57/strain)">
    | Strains                   | Cost        |
    | ------------------------- | ----------- |
    | 10                        | \$5.71      |
    | 50                        | \$28.55     |
    | 100                       | \$57.10     |
    | 500                       | \$285.50    |
    | 1,000                     | \$571       |
    | **2,750 (current queue)** | **\$1,570** |
    | 5,000                     | \$2,855     |
    | 10,000                    | \$5,710     |
  </Card>

  <Card title="Research + Music ($0.66/strain)">
    | Strains                   | Cost        |
    | ------------------------- | ----------- |
    | 10                        | \$6.58      |
    | 50                        | \$32.90     |
    | 100                       | \$65.80     |
    | 500                       | \$329       |
    | 1,000                     | \$658       |
    | **2,750 (current queue)** | **\$1,810** |
    | 5,000                     | \$3,290     |
    | 10,000                    | \$6,580     |
  </Card>
</CardGroup>

### Batch Mode (Reference — Bulk Backfill)

If batch mode were used for a large backfill operation ($0.33 research + $0.087 music).

| Strains                   | Research Only | Research + Music |
| ------------------------- | ------------- | ---------------- |
| 1,000                     | \$333         | \$420            |
| **2,750 (current queue)** | **\$916**     | **\$1,155**      |
| 5,000                     | \$1,665       | \$2,100          |
| 10,000                    | \$3,330       | \$4,200          |

### Self-Serve Usage Estimates

Since the pipeline is now self-serve (triggered by user visits), actual costs depend on user traffic:

| Daily Researches | Monthly Cost (Research) | Monthly Cost (Research + Music) |
| ---------------- | ----------------------- | ------------------------------- |
| 5/day            | \$85.50                 | \$98.70                         |
| 10/day           | \$171                   | \$197.40                        |
| 25/day           | \$427.50                | \$493.50                        |
| 50/day           | \$855                   | \$987                           |
| 100/day          | \$1,710                 | \$1,974                         |

***

## Monthly Fixed Costs (Subscriptions)

These are paid regardless of usage volume.

| Service                    | Plan             | Monthly Cost   | What's Included                              |
| -------------------------- | ---------------- | -------------- | -------------------------------------------- |
| Trigger.dev                | Pro              | **\$50**       | \$50 compute credit (\~2,380 strains worth)  |
| Firecrawl                  | Standard         | **\$99**       | 100k scrape credits (\~10,000 strains worth) |
| Exa                        | Pay-per-use      | \$0 base       | First 1,000 searches/month free              |
| Anthropic                  | Pay-per-use      | \$0 base       | —                                            |
| Google AI (Gemini + Lyria) | Pay-per-use      | \$0 base       | —                                            |
| Supabase                   | Pro (shared)     | Already paying | Included with platform                       |
| Vercel                     | Pro (3 projects) | Already paying | API + Website + Mobile Web hosting           |
| Convex                     | Pro              | Already paying | User data, real-time sync                    |
| Clerk                      | Pro              | Already paying | Authentication                               |
| **Total fixed**            |                  | **\~\$149/mo** | (pipeline-specific)                          |

### Credit Budgeting

<AccordionGroup>
  <Accordion title="Firecrawl Credit Budget">
    * **100,000 credits/month** included in Standard plan
    * At \~10 URLs/strain: supports **\~10,000 strains/month**
    * Extra credits if needed: $57/30,000 = **$1.90 per 1,000 credits\*\*
    * At self-serve pace (25/day): \~750 strains/month — well within included credits
  </Accordion>

  <Accordion title="Trigger.dev Compute Budget">
    * **\$50 included usage/month** on Pro plan
    * At \$0.021/strain compute: covers **\~2,380 strains/month**
    * At self-serve pace (25/day): \~750 strains/month × $0.021 = **$15.75/month\*\* — well within budget
    * Beyond included: billed at per-second machine rates
  </Accordion>

  <Accordion title="Exa Search Budget">
    * First **1,000 searches/month free** on paid plans
    * Beyond free tier: **\$7 per 1,000 searches**
    * At self-serve pace (25/day): \~750/month — covered by free tier
  </Accordion>
</AccordionGroup>

***

## Vendor Pricing Reference

Direct links to current pricing documentation for every external service used.

### AI Models

| Vendor             | Pricing Page                                                                            | Models We Use                   |
| ------------------ | --------------------------------------------------------------------------------------- | ------------------------------- |
| Anthropic (Claude) | [anthropic.com/pricing](https://docs.anthropic.com/en/docs/about-claude/pricing)        | Haiku 4.5, Sonnet 4.6           |
| Google Gemini      | [ai.google.dev/pricing](https://ai.google.dev/gemini-api/docs/pricing)                  | 3.1 Flash Lite, 3.1 Flash Image |
| Google Lyria 3     | [ai.google.dev/pricing](https://ai.google.dev/gemini-api/docs/pricing) (bottom of page) | Lyria 3 Pro (\$0.08/song)       |

### Search & Scraping

| Vendor    | Pricing Page                                               | What We Use              |
| --------- | ---------------------------------------------------------- | ------------------------ |
| Exa       | [exa.ai/pricing](https://exa.ai/pricing)                   | Search endpoint (\$7/1k) |
| Firecrawl | [firecrawl.dev/pricing](https://www.firecrawl.dev/pricing) | Scrape (1 credit/page)   |

### Infrastructure

| Vendor      | Pricing Page                                         | What We Use                     |
| ----------- | ---------------------------------------------------- | ------------------------------- |
| Trigger.dev | [trigger.dev/pricing](https://trigger.dev/pricing)   | Pro plan, compute + invocations |
| Vercel      | [vercel.com/pricing](https://vercel.com/pricing)     | Pro plan, 3 projects            |
| Supabase    | [supabase.com/pricing](https://supabase.com/pricing) | Pro plan, DB + Storage          |
| Convex      | [convex.dev/pricing](https://convex.dev/pricing)     | Pro plan, user data             |
| Clerk       | [clerk.com/pricing](https://clerk.com/pricing)       | Pro plan, auth                  |

***

## Unit Pricing Tables

Detailed per-token / per-unit pricing for the specific models and tiers we use.

### Anthropic Claude (Direct vs Batch)

| Model                                   | Input (Direct) | Output (Direct) | Input (Batch) | Output (Batch) |
| --------------------------------------- | -------------- | --------------- | ------------- | -------------- |
| Haiku 4.5 (`claude-haiku-4-5-20251001`) | \$1.00/MTok    | \$5.00/MTok     | \$0.50/MTok   | \$2.50/MTok    |
| Sonnet 4.6 (`claude-sonnet-4-6`)        | \$3.00/MTok    | \$15.00/MTok    | \$1.50/MTok   | \$7.50/MTok    |

<Tip>**MTok** = million tokens. Batch API gives a flat 50% discount on both input and output.</Tip>

### Google Gemini (Standard vs Batch)

| Model                          | Input (Std) | Output (Std) | Input (Batch) | Output (Batch) |
| ------------------------------ | ----------- | ------------ | ------------- | -------------- |
| 3.1 Flash Lite (text)          | \$0.25/MTok | \$1.50/MTok  | \$0.125/MTok  | \$0.75/MTok    |
| 3.1 Flash Image (text input)   | \$0.50/MTok | \$3.00/MTok  | \$0.25/MTok   | \$1.50/MTok    |
| 3.1 Flash Image (per 2K image) | —           | **\$0.101**  | —             | **\$0.050**    |

### Trigger.dev Compute (Pro Plan)

| Machine   | vCPU | RAM     | Cost/sec    | Cost/hour |
| --------- | ---- | ------- | ----------- | --------- |
| micro     | 0.25 | 0.25 GB | \$0.0000169 | \$0.061   |
| small-1x  | 0.5  | 0.5 GB  | \$0.0000338 | \$0.122   |
| medium-2x | 2    | 4 GB    | \$0.0001700 | \$0.612   |
| large-1x  | 4    | 8 GB    | \$0.0003400 | \$1.224   |

Run invocation: \*\*$0.000025/run** ($0.25 per 10,000 runs). Waits longer than 5 seconds are checkpointed and **free** (no compute charges).

***

## Cost Math: Worked Example

Here's the full math for one strain researched in direct mode, showing exactly how each number is calculated.

<Accordion title="Stage 01: Exa Search — $0.007">
  * 1 search call
  * Exa pricing: \$7 per 1,000 searches
  * Cost: 1 / 1,000 × $7 = **$0.007\*\*
</Accordion>

<Accordion title="Stage 03: Firecrawl Scrape — $0.010">
  * \~10 URLs scraped (1 credit each)
  * Standard plan: 100k credits for $99 = $0.00099/credit
  * Cost: 10 × $0.00099 = **~$0.010\*\*
</Accordion>

<Accordion title="Stage 04: Gemini Extraction — $0.061">
  * \~10 articles × 12,500 input tokens = 125,000 input tokens
  * \~10 articles × 2,000 output tokens = 20,000 output tokens
  * Input: 125,000 / 1,000,000 × $0.25 = $0.03125
  * Output: 20,000 / 1,000,000 × $1.50 = $0.03000
  * **Total: \~\$0.061**
</Accordion>

<Accordion title="Stage 05: Claude FactFinder (3 passes) — $0.075">
  * 3 passes × \~10k input tokens = 30,000 input tokens (Haiku 4.5)
  * 3 passes × \~3k output tokens = 9,000 output tokens
  * Input: 30,000 / 1,000,000 × $1.00 = $0.030
  * Output: 9,000 / 1,000,000 × $5.00 = $0.045
  * **Total: \$0.075**
</Accordion>

<Accordion title="Stage 05: Claude Copywriter — $0.135">
  * \~15,000 input tokens (Sonnet 4.6)
  * \~6,000 output tokens (max 8,192)
  * Input: 15,000 / 1,000,000 × $3.00 = $0.045
  * Output: 6,000 / 1,000,000 × $15.00 = $0.090
  * **Total: \$0.135**
</Accordion>

<Accordion title="Stage 05: Claude Image Prompts — $0.060">
  * \~5,000 input tokens (Sonnet 4.6)
  * \~3,000 output tokens (max 4,096)
  * Input: 5,000 / 1,000,000 × $3.00 = $0.015
  * Output: 3,000 / 1,000,000 × $15.00 = $0.045
  * **Total: \$0.060**
</Accordion>

<Accordion title="Stage 06: Gemini Imaging (2 × 2K) — $0.202">
  * 2 images at 2K resolution (2048×2048px)
  * Each 2K image = 1,680 output tokens
  * Per image: 1,680 / 1,000,000 × $60.00 = $0.1008
  * Text input prompts (\~4k tokens): 4,000 / 1,000,000 × $0.50 = $0.002
  * **Total: 2 × $0.101 + $0.002 = \~\$0.202**
</Accordion>

<Accordion title="Trigger.dev Compute — $0.021">
  * 8 task runs (orchestrator + 7 stages)
  * Run invocations: 8 × $0.000025 = $0.0002
  * Compute (checkpointed waits are free):
    * Orchestrator: \~3s × small-1x = \$0.0001
    * Stage 01: \~8s × small-1x = \$0.0003
    * Stage 02: \~3s × micro = \$0.0001
    * Stage 03: \~8s × medium-2x = \$0.0014
    * Stage 04: \~30s × medium-2x = \$0.0051
    * Stage 05: \~20s × medium-2x = \$0.0034
    * Stage 06: \~30s × large-1x = \$0.0102
    * Stage 07: \~3s × small-1x = \$0.0001
  * **Total: \~\$0.021**
</Accordion>

<Accordion title="Music: Lyria 3 Pro — $0.087">
  * Gemini prompt builder: \~2k in + \~2k out at Flash Lite pricing = \~\$0.001
  * Lyria 3 Pro: fixed **\$0.080** per full song
  * Trigger.dev compute (5 runs, \~80s): \~\$0.006
  * **Total: \~\$0.087**
</Accordion>

***

## Potential Cost Optimizations

Ranked by impact, for future consideration:

| Optimization                          | Savings/Strain | Impact     | Trade-off                         |
| ------------------------------------- | -------------- | ---------- | --------------------------------- |
| Switch to 1K images (1024px)          | \~\$0.068      | 12%        | Lower image quality               |
| Use Haiku for Image Prompts           | \~\$0.040      | 7%         | Potentially less creative prompts |
| Use Gemini Batch for extraction       | \~\$0.030      | 5%         | Adds latency (bad for self-serve) |
| Reduce search to 15 results           | \~\$0.020      | 4%         | Fewer source articles             |
| Use Lyria 3 Clip (30s) instead of Pro | \~\$0.040      | Music: 46% | Short clips instead of full songs |

<Warning>
  Most batch-mode optimizations **don't apply** to the self-serve model since users expect results in 5-10 minutes. The Anthropic Batch API takes hours and is incompatible with on-demand research.
</Warning>

***

## Other Platform Costs

Services that are already paid and shared across the platform (not per-strain).

| Service    | Plan             | Monthly | Purpose                          |
| ---------- | ---------------- | ------- | -------------------------------- |
| Vercel     | Pro (3 projects) | \~\$60  | API, Website, Mobile Web hosting |
| Supabase   | Pro              | \~\$25  | PostgreSQL, Storage, Auth        |
| Convex     | Pro              | \~\$25  | Real-time user data sync         |
| Clerk      | Pro              | \~\$25  | Authentication                   |
| Mintlify   | Starter          | \~\$0   | Documentation site               |
| Sentry     | Team             | \~\$26  | Error monitoring                 |
| EAS (Expo) | Production       | \~\$99  | iOS builds and submissions       |

<Note>
  These are approximate monthly costs. Actual amounts may vary based on usage tiers and billing cycles. Check each vendor dashboard for current billing.
</Note>

***

## Version History

| Date           | Change                                                                                                                                                                                                                                                     |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| March 29, 2026 | Initial cost analysis — all models verified from code, pricing from vendor docs                                                                                                                                                                            |
| July 3, 2026   | Data snapshot corrected: 2,525 strains researched, 2,750 in unprocessed queue, \~25,000 unmatched competitor strains tracked; pipeline throughput ≈0/week recently (restart decision pending). Backlog cost projections updated to the current queue size. |
