{"repo": "abdulmohsen-almutlaq/claimpilot", "files": {"configs/models.yaml": {"300fa4efec4218230e413e8074dbe74eaf6e763b": {"t": 1785746328.376295, "n": 3106, "h": "707873872f623c0e", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n # Soft budget: crossing it downgrades remaining calls to the fallback model.\n # Hard limit (budget x multiplier): LLM calls stop and the case goes to a human.\n token_budget_per_case: 25000\n token_budget_hard_multiplier: 2\n\nguardrails:\n # Redact emails/phones/SSNs/card numbers before claim text reaches the\n # embedding backend (and thus the vector store).\n pii_redaction: true\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings for RAG: one backend only — a Hugging Face sentence-transformer run\n# locally via ONNX Runtime (open-source fastembed: no torch, no GPU, no API key).\n# 384-dim, symmetric (no query prefix), multilingual: Arabic (and 50+ other\n# language) queries retrieve the English clause corpus cross-lingually.\n# NOTE: the pgvector column is vector(384); switching to a model with a different\n# dimension requires a new migration, and any model switch requires re-ingesting\n# the corpus (make seed) since stored vectors must come from the same model.\nembeddings:\n model: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n dim: 384\n\nretrieval:\n # 6 of the ~8 clauses per category: an eval miss showed top_k 5 dropping the\n # commercial-use exclusion for a delivery-damage claim, producing a reject with\n # the wrong citation.\n top_k: 6\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v3 # v3: Arabic/bilingual documents — canonical enum/date/digit output\n draft_decision: v3 # v3: reasoning written in the claim's language\n qa_review: v2 # v2: cross-language review (Arabic draft over English evidence is valid)\n"}, "9904916bd84e76106f6ae71df68cf08904d8256e": {"t": 1785761852.8527708, "n": 3527, "h": "cd83ab2ebf9b03aa", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n # Soft budget: crossing it downgrades remaining calls to the fallback model.\n # Hard limit (budget x multiplier): LLM calls stop and the case goes to a human.\n token_budget_per_case: 25000\n token_budget_hard_multiplier: 2\n\nguardrails:\n # Redact emails/phones/SSNs/card numbers before claim text reaches the\n # embedding backend (and thus the vector store).\n pii_redaction: true\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings backend for RAG. DeepSeek has no embeddings API, so this is configured\n# independently of the chat provider above.\n# fastembed — Hugging Face sentence-transformer run locally via ONNX Runtime\n# (open-source fastembed): real semantic vectors, no torch, no API key.\n# hashing — deterministic local signed n-gram hashing: free, offline, reproducible;\n# tests pin this so CI never downloads a model.\n# openai / local — any OpenAI-compatible /embeddings endpoint.\n# NOTE: the pgvector column is vector(384); switching to a model with a different\n# dimension requires a new migration, and any model switch requires re-ingesting\n# the corpus (make seed) since stored vectors must come from the same model.\nembeddings:\n provider: fastembed # fastembed | hashing | openai | local\n base_url: null\n # 384-dim, symmetric (no query prefix), multilingual: Arabic (and 50+ other\n # language) queries retrieve the English clause corpus cross-lingually.\n model: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2\n dim: 384\n\nretrieval:\n # 6 of the ~8 clauses per category: an eval miss showed top_k 5 dropping the\n # commercial-use exclusion for a delivery-damage claim, producing a reject with\n # the wrong citation.\n top_k: 6\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v3 # v3: Arabic/bilingual documents — canonical enum/date/digit output\n draft_decision: v3 # v3: reasoning written in the claim's language\n qa_review: v2 # v2: cross-language review (Arabic draft over English evidence is valid)\n"}, "96986f6969037a9d573bcabf771bcf2417eb4cef": {"t": 1785761856.3137798, "n": 3361, "h": "a954e82744670c07", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n # Soft budget: crossing it downgrades remaining calls to the fallback model.\n # Hard limit (budget x multiplier): LLM calls stop and the case goes to a human.\n token_budget_per_case: 25000\n token_budget_hard_multiplier: 2\n\nguardrails:\n # Redact emails/phones/SSNs/card numbers before claim text reaches the\n # embedding backend (and thus the vector store).\n pii_redaction: true\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings backend for RAG. DeepSeek has no embeddings API, so this is configured\n# independently of the chat provider above.\n# fastembed — Hugging Face sentence-transformer run locally via ONNX Runtime\n# (open-source fastembed): real semantic vectors, no torch, no API key.\n# hashing — deterministic local signed n-gram hashing: free, offline, reproducible;\n# tests pin this so CI never downloads a model.\n# openai / local — any OpenAI-compatible /embeddings endpoint.\n# NOTE: the pgvector column is vector(384); switching to a model with a different\n# dimension requires a new migration, and any model switch requires re-ingesting\n# the corpus (make seed) since stored vectors must come from the same model.\nembeddings:\n provider: fastembed # fastembed | hashing | openai | local\n base_url: null\n model: sentence-transformers/all-MiniLM-L6-v2 # 384-dim, symmetric (no query prefix)\n dim: 384\n\nretrieval:\n # 6 of the ~8 clauses per category: an eval miss showed top_k 5 dropping the\n # commercial-use exclusion for a delivery-damage claim, producing a reject with\n # the wrong citation.\n top_k: 6\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v2 # v2: category constrained to auto|home|health (eval miss: \"auto insurance\")\n draft_decision: v2 # v2: stated facts taken as true; needs_info only for absent/contradictory facts\n qa_review: v1\n"}, "7fb664fed66279afe927e60547daffccda3b38ce": {"t": 1785761868.6621711, "n": 3018, "h": "5e759d32154fd901", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n # Soft budget: crossing it downgrades remaining calls to the fallback model.\n # Hard limit (budget x multiplier): LLM calls stop and the case goes to a human.\n token_budget_per_case: 25000\n token_budget_hard_multiplier: 2\n\nguardrails:\n # Redact emails/phones/SSNs/card numbers before claim text reaches the\n # embedding backend (and thus the vector store).\n pii_redaction: true\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings backend for RAG. DeepSeek has no embeddings API, so this is configured\n# independently of the chat provider above.\n# fastembed — Hugging Face sentence-transformer run locally via ONNX Runtime\n# (open-source fastembed): real semantic vectors, no torch, no API key.\n# hashing — deterministic local signed n-gram hashing: free, offline, reproducible;\n# tests pin this so CI never downloads a model.\n# openai / local — any OpenAI-compatible /embeddings endpoint.\n# NOTE: the pgvector column is vector(384); switching to a model with a different\n# dimension requires a new migration, and any model switch requires re-ingesting\n# the corpus (make seed) since stored vectors must come from the same model.\nembeddings:\n provider: fastembed # fastembed | hashing | openai | local\n base_url: null\n model: sentence-transformers/all-MiniLM-L6-v2 # 384-dim, symmetric (no query prefix)\n dim: 384\n\nretrieval:\n top_k: 5\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v1\n draft_decision: v1\n qa_review: v1\n"}, "67739bf1229b81caa6404d4da4a9a58e4ff27645": {"t": 1785761871.0976465, "n": 2725, "h": "63c7af5541197b6a", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n # Soft budget: crossing it downgrades remaining calls to the fallback model.\n # Hard limit (budget x multiplier): LLM calls stop and the case goes to a human.\n token_budget_per_case: 25000\n token_budget_hard_multiplier: 2\n\nguardrails:\n # Redact emails/phones/SSNs/card numbers before claim text reaches the\n # embedding backend (and thus the vector store).\n pii_redaction: true\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings backend for RAG. DeepSeek has no embeddings API, so this is configured\n# independently of the chat provider above.\n# hashing — deterministic local signed n-gram hashing: free, offline, reproducible\n# in CI; good enough for clause-level lexical retrieval on a small corpus.\n# openai / local — any OpenAI-compatible /embeddings endpoint for dense semantic\n# vectors. NOTE: the pgvector column is vector(384); switching to a model\n# with a different dimension requires a new migration.\nembeddings:\n provider: hashing # hashing | openai | local\n base_url: null\n model: null\n dim: 384\n\nretrieval:\n top_k: 5\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v1\n draft_decision: v1\n qa_review: v1\n"}, "f32404e518d5d8cb63904f05c6e4d9b0ec921520": {"t": 1785761875.2521367, "n": 2370, "h": "d9317ecb8451c556", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: deepseek # anthropic | openai | deepseek | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n deepseek:\n # OpenAI-compatible API; supports function calling (used for structured output).\n base_url: https://api.deepseek.com/v1\n model: deepseek-chat\n fallback_model: deepseek-chat\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n token_budget_per_case: 25000\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Embeddings backend for RAG. DeepSeek has no embeddings API, so this is configured\n# independently of the chat provider above.\n# hashing — deterministic local signed n-gram hashing: free, offline, reproducible\n# in CI; good enough for clause-level lexical retrieval on a small corpus.\n# openai / local — any OpenAI-compatible /embeddings endpoint for dense semantic\n# vectors. NOTE: the pgvector column is vector(384); switching to a model\n# with a different dimension requires a new migration.\nembeddings:\n provider: hashing # hashing | openai | local\n base_url: null\n model: null\n dim: 384\n\nretrieval:\n top_k: 5\n min_similarity: 0.05 # results below this cosine similarity are discarded\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v1\n draft_decision: v1\n qa_review: v1\n"}, "48fa88173cdaee9c5d385187eaeea8f780f8f354": {"t": 1785761881.156197, "n": 1424, "h": "8d28160f5f37da81", "c": "# Model selection, token budgets, and non-secret endpoint config for every LLM-calling\n# node in the pipeline. API keys are secrets and stay in .env — never put them here.\n# Swap `provider` (or a node's `provider` override) to move the whole app to a\n# different backend, including a local OpenAI-compatible server, with no code changes.\n\nprovider: anthropic # anthropic | openai | local\n\nproviders:\n anthropic:\n base_url: https://api.anthropic.com\n model: claude-sonnet-4-6\n fallback_model: claude-haiku-4-5-20251001\n\n openai:\n base_url: https://api.openai.com/v1\n model: gpt-4o-mini\n fallback_model: gpt-4o-mini\n\n local:\n # Any OpenAI-compatible server: Ollama (http://localhost:11434/v1), vLLM, LM Studio.\n base_url: http://localhost:11434/v1\n model: llama3.1\n fallback_model: llama3.1\n\ndefaults:\n temperature: 0.2\n timeout_seconds: 30\n max_retries: 3\n token_budget_per_case: 25000\n\n# Per-node overrides. Anything omitted falls back to `defaults` / the active provider.\nnodes:\n intake:\n temperature: 0.0\n draft:\n temperature: 0.2\n qa:\n temperature: 0.0\n use_fallback_model: true # cheap model for the QA/judge pass, per spec 5.9\n\n# Active prompt version per node. Bump here (after adding a new prompts/*.vN.md file)\n# to roll out a prompt change; the version is logged on every LLM call and audit row.\nprompts:\n intake_extract: v1\n draft_decision: v1\n qa_review: v1\n"}}}}