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.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
Stage 01: Search (Exa)
| 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 |
Stage 02: Filter (Local)
| Detail | Value |
|---|---|
| API | None (local pattern matching) |
| Typical output | 5-15 relevant URLs |
Stage 03: Scrape (Firecrawl)
| 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 |
Stage 04: Extract (Gemini)
| Detail | Value |
|---|---|
| API | Google Gemini |
| Model | gemini-3.1-flash-lite-preview |
| 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) |
Stage 05: Process (Claude AI)
| 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 |
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) |
Stage 06: Imaging (Gemini)
| 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) |
Per-Strain Cost: Direct Mode (Self-Serve)
| 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)
| 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).Stage 01: Analyze
Stage 02: Build Prompt (Gemini)
| Detail | Value |
|---|---|
| Model | gemini-3.1-flash-lite-preview |
| Tokens | ~2k input + ~2k output |
Stage 03: Generate (Lyria 3 Pro)
| Detail | Value |
|---|---|
| Model | lyria-3-pro-preview |
| Price | $0.08 per song (fixed) |
| Output | MP3 audio (~4MB) + lyrics text |
| Concurrency | 3 (rate-limited) |
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.087 music).Research Only ($0.57/strain)
| Strains | Cost |
|---|---|
| 10 | $5.71 |
| 50 | $28.55 |
| 100 | $57.10 |
| 500 | $285.50 |
| 1,000 | $571 |
| 5,000 | $2,855 |
| 10,000 | $5,710 |
| 19,000 | $10,849 |
Research + Music ($0.66/strain)
| Strains | Cost |
|---|---|
| 10 | $6.58 |
| 50 | $32.90 |
| 100 | $65.80 |
| 500 | $329 |
| 1,000 | $658 |
| 5,000 | $3,290 |
| 10,000 | $6,580 |
| 19,000 | $12,502 |
Batch Mode (Reference — Bulk Backfill)
If batch mode were used for a large backfill operation (0.087 music).| Strains | Research Only | Research + Music |
|---|---|---|
| 1,000 | $333 | $420 |
| 5,000 | $1,665 | $2,100 |
| 10,000 | $3,330 | $4,200 |
| 19,000 | $6,327 | $7,980 |
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
Firecrawl Credit Budget
Firecrawl Credit Budget
- 100,000 credits/month included in Standard plan
- At ~10 URLs/strain: supports ~10,000 strains/month
- Extra credits if needed: 1.90 per 1,000 credits**
- At self-serve pace (25/day): ~750 strains/month — well within included credits
Trigger.dev Compute Budget
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 × 15.75/month** — well within budget
- Beyond included: billed at per-second machine rates
Exa Search Budget
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
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 | Haiku 4.5, Sonnet 4.6 |
| Google Gemini | ai.google.dev/pricing | 3.1 Flash Lite, 3.1 Flash Image |
| Google Lyria 3 | ai.google.dev/pricing (bottom of page) | Lyria 3 Pro ($0.08/song) |
Search & Scraping
| Vendor | Pricing Page | What We Use |
|---|---|---|
| Exa | exa.ai/pricing | Search endpoint ($7/1k) |
| Firecrawl | firecrawl.dev/pricing | Scrape (1 credit/page) |
Infrastructure
| Vendor | Pricing Page | What We Use |
|---|---|---|
| Trigger.dev | trigger.dev/pricing | Pro plan, compute + invocations |
| Vercel | vercel.com/pricing | Pro plan, 3 projects |
| Supabase | supabase.com/pricing | Pro plan, DB + Storage |
| Convex | convex.dev/pricing | Pro plan, user data |
| Clerk | 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 |
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 |
Cost Math: Worked Example
Here’s the full math for one strain researched in direct mode, showing exactly how each number is calculated.Stage 01: Exa Search — $0.007
Stage 01: Exa Search — $0.007
- 1 search call
- Exa pricing: $7 per 1,000 searches
- Cost: 1 / 1,000 × 0.007**
Stage 03: Firecrawl Scrape — $0.010
Stage 03: Firecrawl Scrape — $0.010
- ~10 URLs scraped (1 credit each)
- Standard plan: 100k credits for 0.00099/credit
- Cost: 10 × 0.010**
Stage 04: Gemini Extraction — $0.061
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.03125
- Output: 20,000 / 1,000,000 × 0.03000
- Total: ~$0.061
Stage 05: Claude FactFinder (3 passes) — $0.075
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 × 0.030
- Output: 9,000 / 1,000,000 × 0.045
- Total: $0.075
Stage 05: Claude Copywriter — $0.135
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 × 0.045
- Output: 6,000 / 1,000,000 × 0.090
- Total: $0.135
Stage 05: Claude Image Prompts — $0.060
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 × 0.015
- Output: 3,000 / 1,000,000 × 0.045
- Total: $0.060
Stage 06: Gemini Imaging (2 × 2K) — $0.202
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 × 0.1008
- Text input prompts (~4k tokens): 4,000 / 1,000,000 × 0.002
- Total: 2 × 0.002 = ~$0.202
Trigger.dev Compute — $0.021
Trigger.dev Compute — $0.021
- 8 task runs (orchestrator + 7 stages)
- Run invocations: 8 × 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
Music: Lyria 3 Pro — $0.087
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
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 |
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 |
Version History
| Date | Change |
|---|---|
| March 29, 2026 | Initial cost analysis — all models verified from code, pricing from vendor docs |
