Skip to main content

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)

ModelBedrock Model IDUse CasesReasoningRegion
Claude Sonnet 4.6eu.anthropic.claude-sonnet-4-6Agent chat (default) — extended thinking enabledYeseu-north-1
Claude Sonnet 4.5eu.anthropic.claude-sonnet-4-5-20250929-v1:0Job parsing, baseline extractionYeseu-north-1
Claude Haiku 4.5eu.anthropic.claude-haiku-4-5-20251001-v1:0Meeting insights, text rewrite, OCR, scoring, CV extraction (quality steps)Noeu-north-1
Qwen3-32Bqwen.qwen3-32b-v1:0CV extraction (fast steps) — contact, metadataNoeu-north-1
Amazon Nova Proamazon.nova-pro-v1:0(available candidate model, evaluated for quality steps)Noeu-north-1
Amazon Nova Liteamazon.nova-lite-v1:0(deprecated for agent chat — replaced by Sonnet 4.6)Noeu-north-1
Bedrock Model ID Format

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 accuracy
  • BEDROCK_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.

boto3/botocore floor

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)

ModelModel IDDimensionsRegion
Amazon Titan Embed v2amazon.titan-embed-text-v2:01024eu-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)

ServiceAPIUse CaseRegion
AWS RekognitionDetectFacesFace detection from CV photoseu-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

ServiceAPIUse CaseRegion
AWS TranscribeStartStreamTranscriptionReal-time speech-to-text during meetingseu-west-1
Amazon Nova Sonic 2.0amazon.nova-2-sonic-v1:0Bidirectional voice conversationseu-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

ModelInput (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
Reasoning tokens

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

OperationTypical TokensApproximate Credit Cost
CV Extraction (Sonnet 4.5)~2K input, ~4K output1-2 credits
Job Parsing (Sonnet 4.5)~1K input, ~2K output1 credit
Meeting Insight (Haiku 4.5)~5K input, ~2K output1 credit
Agent Chat Turn (Sonnet 4.6, no thinking)~1K input, ~500 output1 credit
Agent Chat Turn (Sonnet 4.6, with thinking)~1K input, ~500 reply + ~500 thinking1-2 credits
Document Embedding (Titan)~500 input1 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 AIOperationLog table
  • 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

RegionServicesRationale
eu-north-1 (Stockholm)Bedrock (all models), S3, RDSPrimary region, closest to infrastructure
eu-west-1 (Ireland)Rekognition, TranscribeThese 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).