AI Models
AIQLick uses a combination of AWS-managed AI services to handle text generation, embeddings, computer vision, speech processing, and voice conversations. All models are accessed through AWS SDKs with IAM-based authentication -- no external API keys are required.
Model Inventory
Language Models (AWS Bedrock)
| Model | Bedrock Model ID | Use Cases | Reasoning | Region |
|---|---|---|---|---|
| Claude Sonnet 4.6 | eu.anthropic.claude-sonnet-4-6 | Agent chat (default) — extended thinking enabled | Yes | eu-north-1 |
| Claude Sonnet 4.5 | eu.anthropic.claude-sonnet-4-5-20250929-v1:0 | Job parsing, baseline extraction | Yes | eu-north-1 |
| Claude Haiku 4.5 | eu.anthropic.claude-haiku-4-5-20251001-v1:0 | Meeting insights, text rewrite, OCR, scoring, CV extraction (quality steps) | No | eu-north-1 |
| Qwen3-32B | qwen.qwen3-32b-v1:0 | CV extraction (fast steps) — contact, metadata | No | eu-north-1 |
| Amazon Nova Pro | amazon.nova-pro-v1:0 | (available candidate model, evaluated for quality steps) | No | eu-north-1 |
| Amazon Nova Lite | amazon.nova-lite-v1:0 | (deprecated for agent chat — replaced by Sonnet 4.6) | No | eu-north-1 |
Model IDs in eu-north-1 use the cross-region inference profile format: eu.{provider}.{model}-{version_date}-v1:0. The eu. prefix routes requests through the EU inference endpoint. These IDs are configured via environment variables (BEDROCK_MODEL_ID, BEDROCK_HAIKU_MODEL_ID, BEDROCK_OCR_MODEL_ID) in the background-tasks service.
Claude Haiku 4.5 (bedrock_cv_quality_model_id) and Qwen3-32B (bedrock_cv_fast_model_id) are the default models for the optimized CV extraction pipeline. By using a hybrid routing approach:
- Simple metadata and contact steps are processed in parallel by the extremely fast Qwen3-32B (reducing start latency).
- Complex fields (experience, skills, and education) are routed in parallel to Claude Haiku 4.5, which is 100% reliable, produces clean normalized fields (retaining clean company names and skills), and runs at twice the speed of Claude Sonnet 4.6.
- Job parsing is routed to Claude Sonnet 4.5 (
BEDROCK_MODEL_ID) for high-accuracy reasoning from unstructured requirements.
Claude Haiku 4.5 is used for three distinct purposes via separate environment variables:
BEDROCK_HAIKU_MODEL_ID— Fast LLM operations like scoring and matching where speed matters more than peak accuracyBEDROCK_OCR_MODEL_ID— OCR operations during CV extraction (42% faster with better quality than Sonnet for document image processing)- Meeting insights — Hardcoded to Haiku 4.5 for ~50% faster insight generation compared to Sonnet
Claude Sonnet 4.6 is the default model for the interactive agent chat system. It was chosen as the cheapest reasoning-capable model — Haiku 4.5 and Nova Lite do not support extended thinking on Bedrock, so they cannot stream reasoningContent blocks. When the active model supports it, the agent service sets additionalModelRequestFields.thinking on the Converse Stream call (with a budget of min(2000, max(512, max_tokens // 2)) tokens) and emits the resulting reasoning deltas as ChatReasoningChunk events on the agentChat subscription. Anthropic requires temperature: 1.0 while thinking is enabled, so the service overrides the per-agent temperature for that one call.
A model-capability check (_model_supports_thinking in conversation_service.py) pattern-matches on the Bedrock model ID so newer Sonnet/Opus revisions auto-enroll. Haiku, Nova, and Titan IDs short-circuit to False — sending the thinking field to those models returns a Bedrock ValidationException.
The botocore SDK before 1.40 silently strips reasoningContent deltas from the Converse Stream response with a tagged union response with member unknown to client: reasoningContent log line. The background-tasks requirements.txt pins boto3>=1.40.0 and botocore>=1.40.0 for this reason. If reasoning ever stops flowing, check the deployed boto3 version first.
Embedding Model (AWS Bedrock)
| Model | Model ID | Dimensions | Region |
|---|---|---|---|
| Amazon Titan Embed v2 | amazon.titan-embed-text-v2:0 | 1024 | eu-north-1 |
Used exclusively for the RAG pipeline. Documents uploaded to AI agents are chunked, embedded with Titan Embed v2, and stored in PostgreSQL via the pgvector extension. Query-time embeddings use the same model to ensure consistent vector space representation.
Computer Vision (AWS Rekognition)
| Service | API | Use Case | Region |
|---|---|---|---|
| AWS Rekognition | DetectFaces | Face detection from CV photos | eu-west-1 |
When a CV document contains a photo, Rekognition detects face bounding boxes so the system can crop and store a clean profile image. Runs in eu-west-1 because Rekognition is not available in eu-north-1.
Speech Services
| Service | API | Use Case | Region |
|---|---|---|---|
| AWS Transcribe | StartStreamTranscription | Real-time speech-to-text during meetings | eu-west-1 |
| Amazon Nova Sonic 2.0 | amazon.nova-2-sonic-v1:0 | Bidirectional voice conversations | eu-north-1 |
AWS Transcribe handles real-time meeting transcription. Audio is routed from Jitsi via the Jigasi transcription gateway over WebSocket to the background-tasks service, which streams it to Transcribe and writes the resulting text segments to the database.
Amazon Nova Sonic 2.0 powers the voice agent feature, enabling spoken conversations with AI agents. It supports 10 languages and processes bidirectional audio streams (PCM 16kHz 16-bit mono) over WebSocket.
Credit Pricing
AI operations are billed using the platform's credit system. Pricing is calculated from actual token consumption using the rates configured in the CreditCostConfig database table.
Token Rates
| Model | Input (per 1K tokens) | Output (per 1K tokens) |
|---|---|---|
| Claude Sonnet 4.6 | $0.003 | $0.015 |
| Claude Sonnet 4.5 | $0.003 | $0.015 |
| Claude Haiku 4.5 | $0.0008 | $0.004 |
| Amazon Nova Lite | $0.00006 | $0.00024 |
| Titan Embed v2 | $0.00002 | $0.000 |
Extended-thinking tokens are billed by Anthropic as output tokens at the model's standard output rate. The Bedrock usage.outputTokens counter that the agent service consumes already includes thinking tokens, so no special billing handling is required — a long-thinking turn just looks like a bigger output.
Credit Conversion
The platform uses a simple credit-to-dollar mapping:
- 1 credit = $1 of token consumption
- Minimum charge: 1 credit per operation (even if actual cost is below $1)
This means lightweight operations like a short agent chat message (which may cost fractions of a cent in tokens) still consume 1 credit. More expensive operations like full CV extraction with Claude Sonnet 4.5 will consume credits proportional to their actual token usage.
Cost Examples
| Operation | Typical Tokens | Approximate Credit Cost |
|---|---|---|
| CV Extraction (Sonnet 4.5) | ~2K input, ~4K output | 1-2 credits |
| Job Parsing (Sonnet 4.5) | ~1K input, ~2K output | 1 credit |
| Meeting Insight (Haiku 4.5) | ~5K input, ~2K output | 1 credit |
| Agent Chat Turn (Sonnet 4.6, no thinking) | ~1K input, ~500 output | 1 credit |
| Agent Chat Turn (Sonnet 4.6, with thinking) | ~1K input, ~500 reply + ~500 thinking | 1-2 credits |
| Document Embedding (Titan) | ~500 input | 1 credit |
Administrative Controls
Credit pricing is fully configurable by platform administrators through the CreditCostConfig API:
- Per-model input and output token rates can be updated at any time
- Changes take effect immediately without redeployment
- Historical operations retain their original pricing in the
AIOperationLogtable - Token usage is tracked per-operation with full audit trail (model, input tokens, output tokens, computed cost)
This allows the platform to adjust pricing as AWS model costs change or as new models are added, without requiring code changes or service restarts.
Region Strategy
| Region | Services | Rationale |
|---|---|---|
| eu-north-1 (Stockholm) | Bedrock (all models), S3, RDS | Primary region, closest to infrastructure |
| eu-west-1 (Ireland) | Rekognition, Transcribe | These services are not available in eu-north-1 |
Cross-region calls to eu-west-1 add minor latency (~20-40ms) but are acceptable for the use cases involved (face detection is not latency-sensitive, and Transcribe streaming handles its own buffering).