AI Functions & Model Options¶
"AI" in Askalot is not one model doing everything. It is a set of distinct functions, each chosen for a specific job, each with its own requirement and its own degree of choice. Some are platform-fixed because a per-user choice would break correctness. Others are yours to select, because they spend your budget and touch your data.
This page is the complete map: what each function does, what it needs to work, what you can change, and what happens when something is missing.
At a glance¶
| Function | What it does | Runs on | Your choice? |
|---|---|---|---|
| Embedding | Turns text into vectors for semantic search and clustering | Askalot's own inference server (BGE-M3) | No — platform-fixed |
| Layout detection | Finds headings, paragraphs, tables and reading order in a PDF | Askalot's own GPU (Docling) | No — infrastructure |
| OCR | Reads text out of scanned pages and images | Not enabled yet | Planned |
| Knowledge-graph extraction | Pulls entities and relations out of your documents | Claude (your Direct LLM slot) | Yes |
| Re-ranking | Re-scores retrieved passages for relevance | Askalot's own inference server (BGE reranker) | On/off per query |
| Query keyword extraction | Works out what to look for in the knowledge graph | Claude (your Direct LLM slot) | Yes |
| Open-end coding | Proposes the dimensions open-ended answers vary on, and names the fallback's groups | Claude (your Direct LLM slot), or keyword statistics when no slot is set | Yes — provider and model |
| Reasoning (the agents) | Designer, Manager, Analyst, Respondent | Claude (your Reasoning slot) | Yes |
| Document summaries | The index of what your uploaded documents cover | Claude (your Reasoning slot, cheap tier) | Follows Reasoning |
| Respondent simulation | Answers surveys as a persona (llm mode) |
Claude Haiku, via your Reasoning provider | Provider only |
Everything marked "Claude" runs through your own Anthropic API key, Claude subscription, or AWS Bedrock account — see Choosing your models.
Retrieval functions¶
These four turn an uploaded document into something an agent can search. They run in sequence: parse the page, split it into chunks, vectorize the chunks, build a knowledge graph over them.
Embedding — platform-fixed¶
What it does. Converts every document chunk and every search query into a 1024-dimensional vector, so "how do I calculate a design effect" can find a passage that never uses those words.
| Model | BGE-M3 (multilingual, 8K context) |
| Where it runs | Askalot's own GPU inference server — your text is not sent to a third party for this step |
| Requirement | The inference server must be reachable. It sleeps when idle and wakes on first use (a few extra seconds). |
| Options | None. The slot exists in Profile Settings but is fixed and read-only. |
Why you cannot change the embedding model
Search only works if your documents were indexed with the same model the query uses. Two different models produce vectors that are not comparable — switching would not degrade search, it would silently return nothing useful from everything indexed before the switch. So the choice is made once, at the platform level, and kept.
This also keeps your documents' vectors on Askalot's own hardware rather than on a third-party embedding API.
Layout detection — platform infrastructure¶
What it does. Before text can be chunked it has to be read correctly: headings identified, columns un-interleaved, tables recovered as tables rather than as scrambled runs of numbers.
| Model | Docling layout analysis + TableFormer (table structure recovery) |
| Where it runs | Askalot's own GPU |
| Requirement | Applies to PDFs. Plain text, Markdown and CSV skip this step entirely. |
| Options | None — it is infrastructure, not a model preference |
Why this is not a setting
CPU and GPU produce byte-identical output here — the GPU is roughly four times faster, and that is the only difference. Parsed documents are also cached and shared, so a document one person uploads is not re-parsed for the next person. A per-user preference would be quietly ignored whenever someone else's parse populated the cache first, which is worse than having no setting at all.
OCR — planned¶
What it does (when it lands). Reads text out of scanned pages, photographed documents, and images embedded in a PDF.
| Status | Not enabled. OCR is switched off in the current document pipeline. |
| What this means today | A PDF with a real text layer indexes normally. A scanned PDF — pages that are images of text — yields little or no text, so the document indexes as effectively empty rather than failing with an error. |
| How to work around it | Run the scan through OCR yourself before uploading, or upload a text-layer version. |
| Planned options | Whether OCR runs at all, and the language hint, are the two knobs under consideration. No dates yet. |
Check scanned uploads
If you upload a scan and the Designer cannot find anything in it, this is almost certainly why — not a retrieval failure. Open the document's indexing status: a scanned page set produces a very small chunk count.
Re-ranking — on/off per query¶
What it does. After the graph and vector search return candidate passages, a cross-encoder re-reads each candidate against your actual question and re-scores it. It is more accurate than vector similarity because it looks at the query and the passage together rather than comparing two independent summaries of them.
| Model | BGE-reranker-v2-m3 (cross-encoder) |
| Where it runs | Askalot's own GPU inference server |
| Default | Off |
| Options | On or off, per query |
Why it defaults to off
Quality is not free here. Scoring 40 full-length candidates costs about 8 seconds per query — real quality, real latency. For most retrieval the graph + vector ranking is already good enough, so the extra wait is not worth paying on every question. Turn it on when precision matters more than speed.
Generative functions¶
These call a Claude model. They spend your credits and send the relevant text to whichever provider you selected, so each one is tied to a slot you control.
Knowledge-graph extraction — your Direct LLM slot¶
What it does. Reads each chunk of your document and pulls out entities and the relations between them, building the graph that makes retrieval conceptual rather than merely keyword-based. This is the most token-hungry AI step in the platform — a long PDF is many chunks, and each one is a model call.
| Runs on | Claude, via your Direct LLM slot (Anthropic API or AWS Bedrock) |
| Requirement | A configured Direct LLM slot with a working credential |
| Options | Provider and model |
| If unconfigured | Indexing fails with a clear error telling you to finish setup |
Why extraction is billed to you
Extraction is the single largest AI cost in document indexing. Attributing it to the person who uploaded the document is what makes that cost visible and attributable, instead of pooling it invisibly into platform overhead. The same principle runs through every generative function on this page: the account you chose is the account that pays, and you can always see which one that is.
Query keyword extraction — your Direct LLM slot¶
What it does. When you ask a question, a fast, cheap model call works out which entities and concepts to look for in the knowledge graph before retrieval runs.
| Runs on | Claude, via your Direct LLM slot |
| Requirement | Same slot as extraction above |
| Options | Provider and model — a small, fast model is the right choice here |
| If unconfigured | Depends on the search: keyword lookup in your own documents keeps working (it matches on meaning alone and needs no model), while the broader knowledge-graph searches refuse with a clear error — those read your documents with a model before they can answer, so without one there is nothing to run |
Open-end coding — dimension proposal, and the fallback's labels¶
What it does. Open-ended answers are coded into labelled categorical variables (see Open-End Coding). The AI part is the proposal round: a model reads each question plus a sample of its answers and names the dimensions those answers vary on, with starter categories. Matching answers to those categories, deriving the columns, weighting and exporting all run on the platform's own embedding service and need no credential of yours.
| Runs on | Claude, via your Direct LLM slot |
| Requirement | A configured Direct LLM slot with a working credential |
| If unconfigured | Coding does not refuse. The round groups the answers themselves and proposes one dimension instead, labelled Degraded everywhere it appears so a genuine one-axis result is never mistaken for it |
| If the credential is rejected | The round fails and says so — it does not fall back to the degraded path, because a silent downgrade would be indistinguishable from a genuine result |
The degraded round names its own groups from keyword statistics — the top distinguishing words of each group, e.g. "delivery, late, refund". That runs on Askalot with no network call and no cost, which is the whole point: it is the path for a researcher who has no credential to spend. Those names are yours to change — the review screen lets you rename every dimension and every category before you keep any of them.
Why a rejected credential fails the round
The failure mode this prevents is the quiet one. If a refused credential dropped silently to the degraded path, you would get a single dimension flagged Degraded — which is exactly what a legitimately credential-less round produces — and no way to tell that a working credential would have read your question instead. An expired AWS session mid-run is exactly the case that would trigger it. So the round stops and tells you, and you re-run it after fixing the credential.
Reasoning — the four agents¶
What it does. Everything the Designer, Manager, Analyst and Respondent do: reading your research paper, planning a questionnaire, writing and validating QML, running a campaign, interpreting quality metrics.
| Runs on | Claude, via your Reasoning slot |
| Options | Anthropic API key, personal Claude subscription, or AWS Bedrock |
| Tiers | High / medium / low — each stage of work uses the tier that suits it, all on the provider you chose |
| If unconfigured | The agent stops and asks you to finish setup — it never silently switches provider |
Local models are deliberately excluded here: the agent framework requires Claude-compatible models. That is a capability constraint, not a judgement about local model quality.
Where you can read what an agent did. Every Designer, Manager and Analyst run is recorded per project, and you can read it back: the Designer's in the editor's Conversation history tab, the Manager's under Manager conversation at the bottom of the project page in Targetor, and the Analyst's under Analyst conversation on a Bundle's page in Balansor (the same trace on every Bundle of the project). Each shows your prompts, the agent's replies, its reasoning and the tools it called, newest run first. A conversation with no human activity for 12 months, or older than 2 years, is deleted.
Document summaries — follows Reasoning¶
What it does. Produces the short index of what each uploaded document covers, so the Designer knows what material exists and what to go looking for. One cheap, single-turn call per document plus one to combine them.
| Runs on | Your Reasoning slot, cheapest tier |
| Options | Follows your Reasoning choice — nothing separate to configure |
Respondent simulation — provider only¶
What it does. In llm distribution mode, answers each survey question as a
demographic persona, carrying the conversation history forward so a respondent who
said "unemployed" does not describe a workplace three questions later.
| Runs on | Claude Haiku, through your Reasoning slot's provider (yours, else your organization's). It must be Anthropic API or AWS Bedrock: a Claude subscription token cannot sign this direct call |
| Options | Provider only — the model is fixed to the fast, cheap tier because the job is high-volume and short-form |
| Alternative | The three rule-based modes (realistic, random, stratified) need no AI at all |
Choosing your models¶
Three settings, under Profile Settings → AI Models. They are independent — each covers a different way of invoking a model, and choosing one does not constrain the others.
| Slot | Covers | You can choose |
|---|---|---|
| Embedding | Semantic indexing and search | Fixed to the local model — shown but not editable |
| Direct LLM | Knowledge-graph extraction, query keyword extraction, open-end dimension proposal | Anthropic API, or AWS Bedrock |
| Reasoning | The four agents, document summaries, respondent simulation | Anthropic API, Claude subscription, or AWS Bedrock |
Direct LLM and Reasoning start Not configured: nothing is pre-selected, and each stays that way until you (or your organization) choose a provider. Choosing a provider fills in a model for each slot (the newest one, while Always use the latest model is on), which you can change.
Credentials are entered separately under Profile Settings → AI Providers.
Always use the latest model¶
The Direct LLM and Reasoning Models panels each have an Always use the latest model checkbox. It is on by default for every account. While it is on, Askalot keeps that panel's models on the newest Claude release of a fixed family, so a new model reaches your work without you re-picking anything:
| Slot | Follows |
|---|---|
| Direct LLM | Sonnet |
| Reasoning, high tier | Opus |
| Reasoning, medium tier | Sonnet |
| Reasoning, low tier | Haiku |
How a switch happens. About once an hour, Askalot looks at the models your provider lists for your account. When a newer model of a slot's family appears, it first makes one small test call to it with the same credential your work uses, and only switches the slot when that call succeeds. Your runs never depend on the lookup: they keep using the stored model, and a switch only ever replaces one working model with another.
- A refused model is not forced on you. If the test call fails, the slot keeps its current model, the panel shows why, and that model is tried again at most once a day.
- Never an older model. A slot only ever moves forward within its family. If you had put a model of another family into a slot (Opus in the medium tier, say) and then turn the box back on, the slot returns to its own family's newest model.
- Same region on AWS Bedrock. A Bedrock slot stays within the region scope of its current inference profile: a US profile moves only to US profiles, a global one only to global ones.
- Other model families are never chosen automatically. Only Opus, Sonnet and Haiku are followed.
- Every switch is in the audit trail, as a model configuration change made by the system, naming the slot and the old and new model.
What the panel shows. Under each slot of a checked panel, a line names the family and the model it runs on now, for example Opus → Claude Opus 5.5. It also says when something stops the box from updating that slot:
| The line says | Meaning |
|---|---|
| awaiting first check | The slot is set but has not been checked yet, or was just filled by a provider choice and has not been tested yet |
| … did not answer its test call; keeping the current model | A newer model exists but its test call failed (for example, the model is not available to your account) |
| without an Anthropic API key the latest model cannot be looked up | A Claude subscription cannot list models. Your tiers keep their current models |
| no credential is stored for this provider | Add one under AI Providers |
| the AWS sign-in has expired | Sign in to AWS again under AI Providers |
| set by your organization, not updated automatically | The slot comes from your organization's AI defaults (below) |
| Choose a provider | The box never picks a provider for you. Nothing runs on the slot until you choose one |
Picking a model by hand turns the box off. If you choose a specific model for any slot of a checked panel, here or through an AI assistant, that panel's box is unchecked and Askalot stops moving its models. The other panel is not affected. Tick the box again on Profile Settings to resume. Changing only the provider of a checked panel does not uncheck it: the panel is filled with the newest models that provider offers you (or Askalot's suggested models when no model list can be read), and the next check tests them.
When the box does not apply. Slots you inherit from your organization keep the organization's models. A shared account, which cannot change its own model settings, has no checkbox.
Organization AI defaults¶
In a private organization, an organization administrator can choose the Reasoning provider and a model for each of the three tiers once, for everyone. The page is Organization in Roundtable's navigation (its AI defaults section; the same page carries the organization's message to members). A member who has set nothing of their own inherits the choice, and their Profile Settings label those tiers Inherited from your organization. A member's own setting always wins. Always use the latest model does not update inherited tiers: they keep the models the administrator chose.
- The default names a provider and models. It carries no credential: each member still enters their own key, or signs in, for that provider.
- All three tiers use one provider, and are saved together.
- Clear defaults returns the organization to no default, and members without their own setting read Not configured again.
- A non-private organization has no defaults: each member sets their own model.
- A sealed organization's defaults cannot be changed while it is sealed.
No shared key, no silent fallback
Askalot never runs your AI work on a platform-owned credential. Every AI function — agent runs, direct model calls, document summaries and simulations — resolves your personal credential first, then your organization's, and stops there. The services that run your work hold no Anthropic key or Claude subscription of their own to fall back on.
If you belong to more than one organization, "your organization" is always the one you are working in when the work starts: the organization shown in your account menu, or the one an AI assistant's session is switched to. Its defaults and stored credentials apply, not those of the organization your account was first created in. A background job keeps the organization it was started in. A document uploaded to a project is read with the settings of the organization that project belongs to.
Selecting a provider is not enough: its credential must be stored for you or for your organization. If it is not, the feature tells you to set it up rather than quietly running on someone else's account, and document summaries are not generated until it is.
The same rule covers expiry. If your AWS session has lapsed, you get a re-authenticate prompt, not a silent switch to a different provider or a degraded result that looks like a real one.
Where your data goes
Embedding, layout detection and re-ranking run entirely on Askalot's own hardware — that content is not sent to a model provider. The generative functions send the relevant text to the provider you selected: Anthropic directly, or AWS Bedrock inside your own AWS account if you need IAM, VPC or data-residency control.
AI status¶
Your account menu (the button with your initial and your organization, at the right of the navigation bar) has an AI Status item. Point at it and a panel opens beside the menu listing all three slots, each naming its state in words:
| Row | What it reports |
|---|---|
| Reasoning | Whether an agent turn of yours actually worked recently |
| Direct LLM | Whether a provider and its credential are stored. Nothing records whether its calls succeed, so this row never reads working |
| Embedding + rerank | The platform's local models: loaded, asleep or waking |
| State | Meaning |
|---|---|
| working | A reasoning turn succeeded within the last day |
| unproven | Set up, with no turn in the last day to judge it by. Run any agent turn to settle it |
| configured | A provider and its credential are stored (Direct LLM) |
| ready / asleep / waking | The local models are loaded, idle, or loading. An idle stack wakes on the next call |
| expiring | An AWS credential expires within 30 minutes |
| not set up | No provider, or no credential for the chosen one. The row links to Profile Settings |
| failing | The last attempt errored |
| needs re-auth | A credential expired or was rejected. The row links to Profile Settings |
| unknown | The local models' status could not be read. This is not a failure |
The status is read again each time you open the menu.
When something is missing¶
Askalot fails loudly and specifically, by design. The table below is the map from symptom to cause.
| Symptom | Cause | Fix |
|---|---|---|
| Indexing fails with a credential error | Direct LLM slot has no working credential | Add a key under Profile Settings → AI Providers, or re-authenticate AWS |
| A knowledge-graph search refuses to run (plain keyword lookup still works) | Direct LLM slot has no configured provider or credential | Configure a provider and model under Profile Settings → AI Models → Direct LLM |
| Dimension proposal fails part-way with a credential error | Direct LLM credential rejected — an expired AWS session is the usual cause | Re-authenticate, or replace the key, then propose again. The derive that follows needs no credential of yours |
| Agent asks you to finish setup | Reasoning slot has no working credential | Choose a provider and add its credential |
| A slot stays on an older model although a newer one exists | Always use the latest model is off for that panel, the newer model failed its test call, or no model list can be read for your account (the panel line says which) | Tick the box, or fix what the panel line names. On a Claude subscription, new models are not looked up: pick them by hand, or switch the Reasoning provider to the Anthropic API |
| Indexing succeeds but the document seems empty | Scanned PDF with no text layer — OCR is not enabled yet | Upload a text-layer version, or OCR it first |
| First action after a quiet period is slow | Local inference models were asleep and are waking | Nothing — the action completes; the account menu's AI status reads waking or asleep for Embedding + rerank meanwhile |
| Retrieval feels imprecise | Re-ranking is off by default | Turn it on for that query, accepting the added latency |
Related Documentation¶
- AI-Assisted Features Overview — what the four agents do
- Open-End Coding — how open-ended answers become labelled categorical variables
- Questionnaire Generation — document indexing in context
- Claude Integration — using Askalot from Claude