# Required: Anthropic API key for extraction ANTHROPIC_API_KEY=sk-ant-... # Optional: model to use. Defaults to claude-opus-4-8 for accuracy on legal docs. # Switch to claude-sonnet-4-6 for cheaper/faster runs. ANTHROPIC_MODEL=claude-opus-4-8 # --- Access gate (registration + email verification) --- # Signs the session cookie. Set this to a long random string. # Generate one with: openssl rand -base64 48 # If unset the app falls back to ANTHROPIC_API_KEY, which works but means # rotating the API key logs everyone out. SESSION_SECRET= # Free documents per verified email before the paid tier. Defaults to 2. FREE_DOCUMENT_LIMIT=2 # Optional break-glass basic auth so the owner is never locked out. # If SITE_PASSWORD is set, Basic auth with SITE_USER (default "admin") bypasses the gate. SITE_USER=admin SITE_PASSWORD= # --- Required for the access gate and lead capture --- # Upstash Redis stores verification codes, leads, and per-user document counts. UPSTASH_REDIS_REST_URL= UPSTASH_REDIS_REST_TOKEN= # Resend delivers the 6-digit access codes and the daily digest. RESEND_API_KEY=re_... # Sender for access codes. Falls back to LOGIN_DIGEST_FROM, then to the Resend sandbox sender. ACCESS_EMAIL_FROM="Side Letter Extractor " # --- Daily digest email (new registrations + sign-in activity) --- LOGIN_DIGEST_TO=you@example.com LOGIN_DIGEST_FROM="Side Letter Extractor " # Vercel sets this on cron requests if you set it in Project Settings. CRON_SECRET= # --- Payments (Stripe) --- # Secret key from the Stripe dashboard (Developers -> API keys). STRIPE_SECRET_KEY=sk_live_... # Signing secret for the webhook endpoint /api/stripe/webhook # (Developers -> Webhooks -> add endpoint, event: checkout.session.completed). STRIPE_WEBHOOK_SECRET=whsec_... # Set to 1 only after activating Stripe Tax in the dashboard; enables # automatic tax calculation on Checkout. STRIPE_AUTOMATIC_TAX=0