# coreai-homepage — Full content

---

This document concatenates every public marketing page and article in English.

---

# The AI platform that doesn't just answer, but acts

coreAI answers your users from your own content and acts in your systems – knowledge base, chat, search and agentic AI in one GDPR-safe platform, ready in hours.

- Answers precisely from your own content – no guessing
- Agentic AI that completes tasks, not just answers
- Hands over seamlessly to a colleague when needed
- Set up in hours – no lock-in
- Answers 24/7 in every language

[Book a free coreAI demo](https://coreai.no/en/order)

[Try coreAI now](#!/ctw)

## Organisations across every industry use coreAI

Organisations across every industry use coreAI.

- Nortura
- Apotekforeningen
- Norges Bondelag
- Universitetet i Sørøst-Norge
- Telemark fylkeskommune
- Proff Norge
- Norsk Pensjon
- Transportøkonomisk institutt
- Torp Sandefjord Lufthavn
- Snap Drive
- Eiendom Norge
- Varanger Kraft
- IKM Gruppen
- Bankenes sikringsfond
- Unicare Helsepartner
- Spenst Norge
- Volvo Car Stor-Oslo
- Øglænd System
- Brynje of Norway
- Isola Solar
- Norske Reindriftsamers Landsforbund
- Norsk Sau og Geit
- Norges Farmaceutiske Forening
- Norges Bygdeungdomslag
- Sandefjord Bredbånd
- Tyrilistiftelsen
- Landsforeningen uventet barnedød
- Rusfeltets hovedorganisasjon
- Studentsamskipnaden i Volda
- Hovedorganisasjonen KA
- Stiftelsen NORSAR
- Norwegian Energy Partners
- Landbrukets Klimaselskap
- Kunnskapssenter for Lengre Arbeidsliv
- Fritzøe Engros
- Gokstad Akademiet
- Pindena
- Deltagruppen
- Stansefabrikken Home
- Maritim Opplæring
- Virinco
- Gurusoft
- Release
- Hallingcast
- Mikon
- Vegamot
- Comet Growth
- Ultimate Nordic
- Novitell
- Kopano

## Our AI platform

coreAI brings together everything you need to give visitors precise answers from your own content — knowledge base, chat, search, shopping list, handover to customer service, agentic AI and API in one platform.

## From answers to action

coreAI does more than answer – it fetches real-time data and completes tasks for the customer, from the first question to the finished action.

- Fetches fresh data from your business systems in real time
- Performs concrete tasks on the customer's behalf
- Hands over to a colleague when a case needs a human
- Frees your team from repetitive work

_Integration and automation_

## Automate business-critical processes

coreAI connects to your business systems via API and MCP and performs tasks in them – fetches real-time data, creates, changes and cancels – so heavy processes run on their own, with a human involved only when needed.

- Connects to ERP and business systems via API and MCP
- Fetches fresh data in real time and acts in the system
- Creates, changes and cancels on the user's behalf
- Case handling, booking and orders without manual intermediaries

[See how coreAI integrates](https://coreai.no/en/articles/business-process-automation)

## Benefits of coreAI

coreAI gives you full control over data and answers in one platform – you decide which sources it uses, how it answers, and where the data is stored.

- coreAI fetches only from your own sources – not from unknown places
- Gather websites, files, free text and APIs in one platform
- GDPR-safe operation on European infrastructure
- Answers customers in twelve languages – [read about language support](https://coreai.no/en/articles/language-support)
- Choose your own language model, and track usage and impact with built-in statistics

[Read more about coreAI](https://coreai.no/en/solutions)

_For employees and members_

## Even better answers behind login

Behind login the answers get even better: coreAI fetches from internal sources you otherwise can't reach, and shows only what you're meant to see based on your role – as an employee, member or customer.

- Role-based answers from intranet and internal documents
- Login against your own system with token validation
- The agent acts only within the user's permissions
- The same assistant for customers outside and employees inside

[Read more about coreAI behind login](https://coreai.no/en/articles/answers-behind-login)

## What does coreAI cost

coreAI starts at NOK 950/month. No setup fee, no lock-in, 20% off with an annual subscription.

- Free to try – test coreAI before you decide
- The price scales with the volume of content in the knowledge base
- Generous usage included in the monthly price
- Scale up or down as your needs change

[Try it free today!](https://coreai.no/en/order)

## Get started in hours

You're up and running in hours: place an order, build your knowledge base, and paste the code snippet on your website.

- Order and get a login to the coreAI portal
- Build your knowledge base from your own sources
- Paste the code snippet on your website – and you're up and running

[See the full setup](https://coreai.no/en/solutions)

## What our customers say about coreAI

Different challenges, the same solution. See how three of our customers use coreAI to streamline their day-to-day in their own way.

## Ready to see coreAI on your own content?

Book a free demo, and we'll show coreAI on your own content and answer whatever you're wondering about.

[Book a free demo](https://coreai.no/en/order)

[Talk to us](https://coreai.no/en/contact)

## Latest from coreAI

Stay up to date on product launches, new features and insight on how businesses create value with AI search.

[See all articles](https://coreai.no/en/articles)

## Become a partner today

Earn recurring revenue from selling coreAI.

- Give your customers an AI search that actually works
- Run AI projects together with your customer
- You get access to your own API for pulling data from sources
- Earn commission on the standard package
- Kickback paid out quarterly on recurring revenue
- Get coreAI for your own website at 50% off

[Become a partner](https://coreai.no/en/partners)

## Solutions

### Knowledge base

Import content from websites, documents, and product catalogues – CoreAI structures everything automatically into a searchable knowledge base with vectors, relations, and metadata, so the AI always answers from your own sources.

### Chat

An AI chatbot that actually understands your customers and answers correctly – without hallucinations – because it pulls answers only from your knowledge base, with source citations in every reply.

### AI search

Combine keyword search and AI-driven semantic search in one solution, so users find what they're looking for even when they don't know the exact words – with AI-generated summaries directly in the search results.

### Shopping list

Turn the chatbot into a sales channel – when customers ask about products, CoreAI shows an interactive shopping list with images, prices, and an add-to-cart button, shortening the path from question to purchase.

### Handover to customer service

Seamless handover from AI to human – when the chatbot can't resolve a request, your team takes over the conversation in real time, with full chat history and AI-generated reply suggestions.

### Agentic AI

AI that doesn't just answer, but acts – the assistant plans the task, picks the right tools along the way, and carries out concrete actions in your systems, within the access controls you already have.

### Personalisation

Logged-in users get answers based on their own orders, cases and agreements – coreAI adapts to who is asking, within the access the account already has.

### Security

Requests are processed on European infrastructure under Zero Data Retention, logins are validated against your system, and answers are fetched only within each user's own access. GDPR-friendly without new security logic.

### API and integrations

coreAI is an open platform with a REST API for data import, open endpoints for chat and search, and MCP for live data and actions – all against the same knowledge base.

## Articles
- [Language support in CoreAI](https://coreai.no/en/articles/language-support) — 2026-07-01 — CoreAI is multilingual on two levels: customers can ask and get answers in twelve languages even if the knowledge base only exists in one, and administrators work in a panel in Norwegian Bokmål, Nynorsk, English or German. You avoid translating and maintaining the content in several versions – and language is no longer a barrier.
- [Even better answers behind login](https://coreai.no/en/articles/answers-behind-login) — 2026-06-26 — Behind login, CoreAI fetches from internal sources you otherwise can't reach, and shows only what each individual user is actually meant to see – as an employee, member or customer. Same interface, but deeper, more precise and more personal answers.
- [Automating business-critical processes – AI as part of the system](https://coreai.no/en/articles/business-process-automation) — 2026-06-25 — CoreAI automates business-critical processes by plugging directly into the systems you already use – with an API, MCP, ready-made integrations and an automation engine that keeps the knowledge base up to date around the clock, not as yet another standalone tool.

---

_Solutions_

# AI that understands your customers

coreAI is one AI platform that turns your content into an intelligent and measurable channel toward your customers.

## How does coreAI work?

coreAI connects your own content and your business systems into one AI platform that answers precisely – and that can perform tasks on the user's behalf.

- Ingest your own sources – websites, documents, product data and APIs
- Pick the AI service yourself – e.g. ChatGPT
- coreAI answers based solely on the content you have selected
- Agentic AI fetches real-time data and performs tasks in your systems
- Hands over to a colleague when a case needs a human
- Adjust answers and actions with your own instructions
- Paste a small code snippet – coreAI works on any website and in any language
- coreAI uses licensed AI services that do not train on your data

[Learn more about how coreAI works](https://coreai.no/en/contact)

## How to get started

You're up and running in hours: sign up, choose the sources coreAI should use, and paste one code snippet on your website.

- Sign up and get access to the coreAI portal where you build your knowledge base
- Choose the sources coreAI should answer from – and connect business systems for real-time data and actions
- Paste a small code snippet on your website, and coreAI Chat or coreAI search appears for your customers
- Adjust instructions and track usage and statistics in the portal

[Try it free today!](https://coreai.no/en/order)

## Solutions

### Knowledge base

Import content from websites, documents, and product catalogues – CoreAI structures everything automatically into a searchable knowledge base with vectors, relations, and metadata, so the AI always answers from your own sources.

### Chat

An AI chatbot that actually understands your customers and answers correctly – without hallucinations – because it pulls answers only from your knowledge base, with source citations in every reply.

### AI search

Combine keyword search and AI-driven semantic search in one solution, so users find what they're looking for even when they don't know the exact words – with AI-generated summaries directly in the search results.

### Shopping list

Turn the chatbot into a sales channel – when customers ask about products, CoreAI shows an interactive shopping list with images, prices, and an add-to-cart button, shortening the path from question to purchase.

### Handover to customer service

Seamless handover from AI to human – when the chatbot can't resolve a request, your team takes over the conversation in real time, with full chat history and AI-generated reply suggestions.

### Agentic AI

AI that doesn't just answer, but acts – the assistant plans the task, picks the right tools along the way, and carries out concrete actions in your systems, within the access controls you already have.

### Personalisation

Logged-in users get answers based on their own orders, cases and agreements – coreAI adapts to who is asking, within the access the account already has.

### Security

Requests are processed on European infrastructure under Zero Data Retention, logins are validated against your system, and answers are fetched only within each user's own access. GDPR-friendly without new security logic.

### API and integrations

coreAI is an open platform with a REST API for data import, open endpoints for chat and search, and MCP for live data and actions – all against the same knowledge base.

_Questions and answers_

## Frequently asked questions

Questions and answers

### Where does coreAI get its answers from?

Only from your own content (websites, documents, product data) imported into your knowledge base.

### Can coreAI do more than answer?

Yes. With agentic AI, coreAI plans the task, fetches real-time data from your business systems, and performs concrete actions – within the permissions you have already set.

### What does coreAI cost?

coreAI starts at NOK 760/month, with no setup fee or lock-in. The price depends on the volume of content, and you get 20% off with an annual subscription.

### How long does it take to get started?

A simple setup is live in hours. Larger projects with lots of content and integrations typically take 2–4 weeks.

### What happens when the AI doesn't know the answer?

The conversation is handed off seamlessly to one of your customer service agents with full chat history.

### Is the solution GDPR-compliant?

Yes, all data is stored within the EU and data is not used for training language models.

### Can I integrate coreAI into my own systems?

Yes. Via the REST API and MCP you connect coreAI to your own systems – for tailored chat and search, real-time data, and concrete actions across your platforms.

### How easy is it to install coreAI on a website?

One line of JavaScript on your site is all it takes. You'll find the snippet in the assistant under the Code tab, and the widget appears automatically once it's in place.

### Can coreAI be used behind a login or on an intranet?

Yes. The widget can be restricted to signed-in users via token validation against an endpoint on your site, and content behind a login is ingested through the API instead of the crawler.

### How are products, contacts and events imported from the website?

Automatically from Schema.org-structured content on your site — products, people and events are picked up without extra work. If the structure is missing, the AI classifies the content for you.

## Ready to talk to us?

We'd be happy to show you how coreAI can lift the customer experience on your site.

[Get in touch](https://coreai.no/en/contact)

---

_Become a partner today_

# Build your business as a coreAI partner

Become part of the future of technology by offering coreAI to your customers. As a coreAI partner you help businesses deliver fast, accurate answers and improve customer experience – all with the market's leading AI platform.

## Why become a partner?

Increase engagement and improve user experience with our tailored AI solutions – become our partner today!

As a partner, you can leverage our expertise in AI chat technology to strengthen your business. Our solutions help you streamline customer service, increase sales with personalised product recommendations, and improve accessibility for a broader audience. Together we create a smarter, more efficient platform that both you and your customers will benefit from.

## Reasons to become a partner

A coreAI partnership unlocks several valuable benefits – from recurring revenue and discounts on your own use, to the ability to strengthen your customer offering with powerful AI technology.

### Give your customers an edge

Offer innovative solutions that make your customers more efficient and satisfied.

### Recurring commission

Earn money over time with our profitable commission programme.

### Sell AI services to your customers

Expand your offering by integrating powerful AI solutions into your portfolio.

### Build on the API

Build your own solutions using our flexible and powerful API.

### Get coreAI at half price

As a partner you get exclusive access to coreAI with significant discounts.

## How to become a partner?

Want to take your business to the next level? Become our partner and gain access to innovative AI solutions that create value for you and your customers.

Becoming a partner is easy! Get in touch via the form on our website, and we'll guide you through the process. Together we'll find the best AI solutions for your business, tailored to your needs and goals. Let's start the partnership today!

## Typical partners include:

coreAI is a fit for companies that deliver technology, integrations or advisory services to other businesses.

### ERP vendors

ERP vendors

### ICT companies

ICT companies

### Web agencies

Web agencies

### PIM vendors

PIM vendors

### Integrators

Integrators

### Advisors / consultancies

Advisors / consultancies

---

_For developers_

# Fill a coreAI assistant with your own data via the API

coreAI gives developers an API for filling an assistant with their own data and using the same data in chat and search. It fits products, CMSs, PIMs, ERPs and domain systems that need to make their content available inside a coreAI assistant.

[Talk to us about API integration](https://coreai.no/en/contact)

[Read the technical API article](https://coreai.no/en/articles/api-data-integration)

## Fill the assistant with data from your system

The API integration uses stable external IDs and upsert calls to keep the knowledge base in sync with your system. When an object is created or changed on your side, you send the updated entity to coreAI.

The production environment lives at `https://portal.coreai.no/api/v2`, and the staging environment lives at `https://stage.coreai.no/api/v2`. Calls use a Bearer token, `assistantId` points to the assistant that should answer, and `contentImporterId` points to the API source where the data is stored.

Upsert via `POST /assistants/{assistantId}/sources/{contentImporterId}` replaces the entire entity. `PATCH` can be used for smaller changes, `DELETE` removes entities that should no longer return answers, and `GET` lets the integration fetch one or more entities by external ID.

- `POST` creates or replaces products, documents, content and other entities
- `PATCH` updates only the fields that have actually changed
- `DELETE` removes the entity and the relationship links around it
- `GET` retrieves entities back using external IDs

## Let the assistant use MCP tools

MCP import in coreAI discovers tools on an external MCP server. The tools become available to the assistant when a conversation starts, and the assistant picks the relevant tool to answer the user. If the user is signed in, answers can be scoped to that user's own cases in a line-of-business system.

[How MCP import works](https://coreai.no/en/articles/mcp-import)

## Connect AI agents to the knowledge base through MCP

coreAI can expose the knowledge base as an MCP server, so external AI agents can query assistant content through a standardized protocol. Teams can use the same curated sources in custom agent tools, IDEs and internal workflows.

[How the MCP server works](https://coreai.no/en/articles/mcp-server)

## Send structured entities, not just text

coreAI can index several data types so the assistant understands the difference between product data, documentation, events, educations, job postings and contacts. That gives more precise answers than a flat text import.

[See the entity types in detail](https://coreai.no/en/articles/entity-types)

## Use the data in a widget, custom chat or search

Once the data is inside the assistant, users can meet it through the coreAI widget, a custom chat interface or pure knowledge-base search. You choose how much of the experience you want to build yourself.

[Read the full API integration guide](https://coreai.no/en/articles/api-data-integration)

## Protect the assistant with your own login

Set a `callbackUrl` on the assistant, and coreAI calls your own URL with the user's token when the widget loads. The token is approved once per page load, and the login stays with you.

[How to protect the assistant](https://coreai.no/en/articles/assistant-protection)

## Build synchronization that is ready for production

The best coreAI integration lets the source system own the truth and uses the API to keep the assistant updated. Users get fresh answers, and the development team avoids manual imports.

Start with stable IDs, clear data types and fields that can be used for filtering. Then choose whether end users should meet the assistant in the coreAI widget, in a custom chat interface or as search inside your product.

[Plan the API integration with us](https://coreai.no/en/contact)

---

# Pricing

Try free for 7 days – get started today! coreAI has no setup fee and no lock-in.

## Start free trial

Each package includes AI usage tailored to the package – additional usage can be purchased as needed

[Start free trial](https://coreai.no/en/order)

[Need a larger solution or have custom requirements? Get in touch with us.](https://coreai.no/en/contact)

## Pricing

### Small

Small coreAI for small sites with one assistant and 100 MB of content.

**950,- /mnd · 760,- /år**

- AI chat
- up to 1 assistant
- up to 100 MB database
- AI search for the website

### Standard

Standard coreAI for most sites with three assistants and 500 MB of content.

**2.950,- /mnd · 2.360,- /år**

- AI chat
- up to 3 assistants
- up to 500 MB database
- API and Google Product Feed
- Shopping list integrated with the webshop
- Handover to customer service
- AI search for the website
- MCP client and server

### Large

Large coreAI for bigger sites with five assistants and 1000 MB of content.

**4.950,- /mnd · 3.960,- /år**

- AI chat
- up to 5 assistants
- up to 1000 MB database
- API and Google Product Feed
- Shopping list integrated with the webshop
- Handover to customer service
- AI search for the website
- MCP client and server

## Questions and answers

Common questions about coreAI subscriptions, usage and billing.

### How do I know which subscription to choose?

Pick based on how many assistants you need and how much content you have: Small fits one assistant and 100 MB, Standard suits most sites with up to three assistants and 500 MB, and Large covers larger organizations with five assistants and 1000 MB. You can upgrade at any time.

### What happens if I exceed my subscription limits?

When you go over the limits we contact you and propose an upgrade to the next tier. coreAI does not shut down automatically – the service keeps running while we agree on the right subscription with you.

### How do I change my subscription?

Send us a message at info@coretrek.no and we'll switch your subscription from the next billing period. There is no lock-in, and you can upgrade or downgrade at any time.

### How do I switch to yearly billing?

Tell us at info@coretrek.no and we will move you to yearly billing with a 20% discount from the next period. You keep the same subscription and functionality.

---

# CoreAI Blog

CoreAI updates and articles about AI

- [Language support in CoreAI](https://coreai.no/en/articles/language-support) — 2026-07-01 — CoreAI is multilingual on two levels: customers can ask and get answers in twelve languages even if the knowledge base only exists in one, and administrators work in a panel in Norwegian Bokmål, Nynorsk, English or German. You avoid translating and maintaining the content in several versions – and language is no longer a barrier.
- [Even better answers behind login](https://coreai.no/en/articles/answers-behind-login) — 2026-06-26 — Behind login, CoreAI fetches from internal sources you otherwise can't reach, and shows only what each individual user is actually meant to see – as an employee, member or customer. Same interface, but deeper, more precise and more personal answers.
- [Automating business-critical processes – AI as part of the system](https://coreai.no/en/articles/business-process-automation) — 2026-06-25 — CoreAI automates business-critical processes by plugging directly into the systems you already use – with an API, MCP, ready-made integrations and an automation engine that keeps the knowledge base up to date around the clock, not as yet another standalone tool.
- [A chat that fetches context itself gives better answers](https://coreai.no/en/articles/agentic-context-retrieval) — 2026-06-24 — CoreAI's agentic tool-calling lets the AI decide for itself when it needs more context and how to fetch it – it retrieves again with more precise phrasing until the answer is good enough, and handles complex questions with several criteria at once.
- [Language models on European infrastructure: coreAI now runs AI in the EU](https://coreai.no/en/articles/european-ai-infrastructure) — 2026-06-23 — coreAI now offers language models that run on European hardware and infrastructure, following a deal with OpenRouter. You choose per knowledge base whether a model runs in the EU where available, so requests are processed within the EU/EEA without data being stored or used for training.
- [From AI chat to agentic platform: coreAI reshapes the workflow](https://coreai.no/en/articles/from-chat-to-agentic-platform) — 2026-06-21 — coreAI has moved from AI chat to agentic platform: the assistant pulls fresh real-time data from the business systems via MCP and runs tasks on the user's behalf. Profixio looks up sports data in real time, and a car workshop automates 90% of the customer journey.
- [One knowledge base, both MCP client and MCP server](https://coreai.no/en/articles/mcp) — 2026-06-03 — coreAI is both an MCP client and an MCP server in the same knowledge base. As a client the knowledge base can not only fetch fresh data but also create, update and delete in other systems on the user's behalf – agentic AI that completes tasks, not just answers. As a server you expose the knowledge base so other AI agents, IDEs and internal workflows can query it over an open, vendor-neutral standard.
- [Agentic mode: coreAI builds its own context when the answer is missing](https://coreai.no/en/articles/agentic-mode) — 2026-06-02 — When coreAI cannot find the answer in the context it has already been given, it fetches it itself – in agentic mode the assistant combines semantic search, keyword search and filters against your own knowledge base, and calls external MCP tools if you have connected relevant sources. The result is more complete answers to multi-part questions, with source citations and an honest "I couldn't find it" when the answer genuinely isn't there.
- [The MCP server turns coreAI into a shared retrieval layer for AI agents](https://coreai.no/en/articles/mcp-server-retrieval-layer) — 2026-05-02 — coreAI can expose the assistant's knowledge base as an MCP server, so external AI agents — developer tools, IDEs, and internal workflows — can ask the same questions as the chat via the standard Model Context Protocol. The same curated sources sit behind both the chat widget and the MCP surface, with no copying, no separate vector index, and no scraping.
- [The MCP import in coreAI is a client integration, not a bulk import](https://coreai.no/en/articles/mcp-import-client-integration) — 2026-05-01 — The MCP import connects coreAI to an external MCP server, lists which tools the server offers, and stores the tool schemas as JSON configuration on the assistant. The actual data is only fetched when the assistant needs it during a conversation – nothing is pushed into the knowledge base.
- [How coreAI uses entity types to distinguish products, documents, and contacts](https://coreai.no/en/articles/entity-types) — 2026-04-30 — coreAI indexes your data as typed entities — `products`, `contents`, `documents`, `events`, `educations`, `job_postings`, and `contacts` — so the assistant knows whether the answer should be about a product, a PDF, or a contact person. Each entity can also carry `properties` that are later used as filters in chat and search calls.
- [Protect an assistant with your own login via callbackUrl](https://coreai.no/en/articles/protect-assistant-callbackurl) — 2026-04-29 — Set a `callbackUrl` on the assistant and coreAI calls your own URL with the user's token when the widget initializes — and only lets the user through if the endpoint responds 200. The check runs once per widget load, not per question, and the login stays with you.
- [How to fill a coreAI assistant with data via the API](https://coreai.no/en/articles/api-data-integration) — 2026-04-28 — The coreAI API lets developers fill an assistant with structured products, documents, content, events, educations, job postings, and contacts by upserting entities from their own system. Once the data is in, it can be used in chat and search.
- [How we make coreai.no visible to search, answer engines, and AI agents](https://coreai.no/en/articles/seo-aeo-agent-visibility) — 2026-04-27 — coreai.no ships finished HTML with a complete SEO head, five JSON-LD schemas, and a parallel markdown edition of every page on the same URL — so Google, ChatGPT, and Claude all see exactly what the author wrote. We use Prezet and two Spatie packages for the routine parts, and build the bits that actually move visibility ourselves.

---

# Privacy Policy

## 1. Who are we?

The website is provided by:

**CoreTrek AS**

- Address: Klinestadmoen 10, 3241 Sandefjord
- Email: info@coretrek.no
- Phone: +47 99 55 93 93
- Organisation number: 984587406

Contact us with any questions regarding privacy.

## 2. What information we collect

When you fill out a form on our website, we collect:

- Name
- Email address

## 3. How we use the information

The information is used for the following purposes:

- To be able to respond to your enquiries
- For administration and follow-up of services you request
- For analysis and improvement of our website and services

## 4. Sharing of information

Your data is shared with the following third-party providers:

- **portal.coreai.no:** We use coreAI as a backend service to handle form data.
- **Google Analytics & Google Tag Manager:** These tools collect information about how visitors use the website, to analyse traffic and improve the user experience.

No personal data is sold to third parties.

## 5. Cookies

We use cookies via Google Analytics and Tag Manager to collect statistics on user behaviour. You can manage the use of cookies in your browser or through our cookie consent tool on the website.

## 6. Storage and deletion

Personal data is stored for as long as necessary for the purpose for which it was collected, or for as long as required by applicable law. You may request the deletion of your data at any time.

## 7. Your rights

Under the General Data Protection Regulation (GDPR), you have the right to:

- Access the data we hold about you
- Have inaccurate information corrected
- Have your data deleted
- Withdraw your consent
- Lodge a complaint with the supervisory authority

Contact us if you wish to exercise your rights.

## 8. Changes to this policy

We reserve the right to update this policy. Changes will be published here with an updated date.

---

# Small

Small coreAI for small sites with one assistant and 100 MB of content.

**950,- /mnd · 760,- /år**

- AI chat
- up to 1 assistant
- up to 100 MB database
- AI search for the website

---

# Standard

Standard coreAI for most sites with three assistants and 500 MB of content.

**2.950,- /mnd · 2.360,- /år**

- AI chat
- up to 3 assistants
- up to 500 MB database
- API and Google Product Feed
- Shopping list integrated with the webshop
- Handover to customer service
- AI search for the website
- MCP client and server

---

# Large

Large coreAI for bigger sites with five assistants and 1000 MB of content.

**4.950,- /mnd · 3.960,- /år**

- AI chat
- up to 5 assistants
- up to 1000 MB database
- API and Google Product Feed
- Shopping list integrated with the webshop
- Handover to customer service
- AI search for the website
- MCP client and server

---

# Language support in CoreAI

CoreAI is multilingual on two levels that are worth keeping apart: the language your customers can ask and get answers in, and the language you who run the solution work in. Customers can ask in twelve languages even if the knowledge base only exists in one, and administrators can choose between four interface languages. Here we go through both.

## Part 1: Ask and get answers in your own language

Customers can ask in their own language and get answers in the same language – even if your knowledge base only exists in one language. It is perhaps the most underrated strength in CoreAI.

Imagine all your documentation is written in Norwegian. A Polish worker, a German tourist or an English-speaking customer can still ask questions in their own native language – and CoreAI answers them in that same language, based on the Norwegian content. So you don't need to translate and maintain the knowledge base in ten versions.

### How is that possible?

CoreAI understands the meaning behind a question, not just the words. The semantic search finds the right information in the knowledge base regardless of which language the question was asked in, and the AI is instructed to always answer in the same language as the question. The result is that one knowledge base serves customers across language boundaries.

### The most common languages the assistant answers in

CoreAI supports a range of languages in the assistant itself. Among the most common are:

| Language | Shown as |
|---|---|
| English | English |
| Norwegian Bokmål | Norsk bokmål |
| German | Deutsch |
| French | Français |
| Spanish | Español |
| Italian | Italiano |
| Swedish | Svenska |
| Danish | Dansk |
| Finnish | Suomi |
| Polish | Polski |

In addition, Norwegian Nynorsk and Croatian, among others, are supported – twelve languages in the assistant in total.

### Why this is so useful

For a business with customers or employees across borders, this means language is no longer a barrier, and that the investment in your content delivers value for far more people:

- One knowledge base, many languages. You avoid writing, translating and keeping content updated in several languages – maintenance happens in one place, in one language.
- Broader reach without extra work. International customers, visitors and foreign-language employees get help in their own language from day one.
- A lower threshold for asking. People express themselves best in their mother tongue, and when they don't have to translate the question themselves, they ask better questions – and get better answers.
- Fewer misunderstandings. Answers in one's own language reduce the risk of important information being lost in translation.

## Part 2: Language in the admin panel

While customers can ask in their own language, you who run the solution can also work in an interface in your own language. The administration panels currently support four languages:

| Language | Code | Shown as |
|---|---|---|
| Norwegian Bokmål | nb | Norsk bokmål |
| Norwegian Nynorsk | nn | Norsk nynorsk |
| English | en | English |
| German | de | Deutsch |

### Norwegian in two written standards

As a Norwegian-developed platform, CoreAI takes Norwegian seriously and supports both Bokmål and Nynorsk as full interface languages. Bokmål is set up as the default language, so new users meet a Norwegian interface from the first login. For public-sector organisations with written-standard requirements, the Nynorsk support is a real advantage: employees can work in the written standard they are required to use, not just a translation "on the side".

### English and German for international teams

If you work across borders, users can switch to English or German. English also serves as the system's fallback language: should a text be missing a translation in another language, the English text is shown instead, so the interface is never left empty.

### Language per user – not per system

The language choice is personal. Each user has their own language setting, and the panel is shown automatically in the language they have chosen. This is how the language is decided:

- The user's own, saved language setting is used first.
- If there is no personal setting, the language from the session is used.
- As a last resort, the system falls back to English.

That means a Norwegian and a German colleague can work side by side in the same installation – one in Norwegian, the other in German – without getting in each other's way.

## In summary

CoreAI meets users in their own language – on both sides of the solution. For customers: ask and get answers in twelve languages, including English, German, French, Spanish and Polish, even if the knowledge base only exists in one language. For administrators: work in the panel in Norwegian Bokmål, Nynorsk, English or German, with a personal language setting per user.

One knowledge base. Many languages. No barriers.

---

# Even better answers behind login

A public chatbot can only answer what is public. But the most valuable answers usually lie within – in the intranet, in internal procedures, in member benefits and customer-specific agreements. CoreAI lets you open exactly that door, safely: behind login, the knowledge base fetches from internal sources you otherwise can't reach, and shows only what each individual user is actually meant to see – as an employee, member or customer.

Same interface, whether the user is anonymous or logged in. But the answers become deeper, more precise and more personal the moment the user is logged in.

## Role-based answers from intranet and internal documents

Behind login, the knowledge base expands to the internal sources the user has access to. Out on the open website the knowledge base answers from the public content; logged in, the user also gets procedure descriptions, HR handbooks, membership terms, price lists or customer-specific agreements.

Technically this happens by scoping each request to a defined set of sources and documents. CoreAI limits the search in the knowledge base to exactly that set, so an employee gets answers from internal handbooks, while a logged-in customer only sees their own agreements. Two users can ask exactly the same question and get different – but correct – answers, based on what they are allowed to see.

## Login against your own system – with token validation

CoreAI validates the user against your own login system instead of building yet another user registry you have to maintain.

Here's how it works: when a logged-in user opens the knowledge base, the user's token is sent to a validation URL you configure. CoreAI supports both a token in the URL itself and a token as a Bearer in the Authorization header. Your system responds whether the token is valid – and can at the same time return user information such as name, email and expiry time.

If validation succeeds, the user is let in. If it fails – invalid, expired or missing token – access is denied. And if a knowledge base is set up as protected, every unauthenticated attempt is rejected. You keep full control over who is who, in the system you already trust.

## The agent acts only within the user's permissions

The AI cannot "stumble" over information the user isn't meant to see. The access boundary is set not by the AI, but by you – and enforced at the data level.

Once the user is validated, your system decides which sources and documents that role should have access to, and CoreAI limits all retrieval to exactly that set. The rest of the knowledge base is simply not visible to the search. The knowledge base therefore cannot leak internal documents to a customer, or one department's procedures to another – because they never enter the search basis for that user.

In addition, the knowledge base can be set to answer exclusively from your own sources, so it doesn't fall back on general knowledge when the answer needs to be grounded in internal facts.

## Several knowledge bases with different access

For an optimal setup we recommend at least four knowledge bases, each scoped to its audience:

- **Public:** open content for anonymous visitors on the front page, just like an ordinary customer-service chatbot.
- **For customers:** customer-specific agreements, terms and prices, visible only to logged-in customers.
- **For suppliers:** agreements, procedures and content aimed at your suppliers.
- **For employees:** intranet, HR handbooks and internal procedures, for logged-in staff only.

## What this means for the business

### More value from the content you already have

The internal documents that today lie hidden in folders and the intranet become searchable and useful – for the right people.

### Security without compromise

Access is governed by your own login system via token validation, and the AI fetches only from what the user has the right to see. No new user database, no parallel access management.

### Lower threshold, higher self-service

Employees avoid searching through the intranet, and logged-in customers get answers about their own circumstances – without contacting support.

## In summary

Behind login, CoreAI goes from being a public answer service to becoming a personal, role-aware knowledge base. It validates the user against your own system, expands the knowledge base to internal sources, and fetches only within the user's permissions – all through the same interface that serves customers outside.

One interface. The right knowledge base. Only what the user is meant to see.

---

# Automating business-critical processes – AI as part of the system

CoreAI automates business-critical processes by becoming part of the systems you already use, not a standalone tool employees have to log in to. For a decision-maker the question isn't "should we have a chatbot?", but how much manual work is tied up in processes that could run themselves – and what that costs in time, errors and lost opportunities. CoreAI plugs in directly via ready-made integrations and an automation engine that keeps the knowledge base up to date around the clock, so customer service, sales, search and content distribution can be automated without you losing control or data quality.

## The API – the integration backbone

CoreAI exposes a full-fledged API that lets your business systems talk directly to the AI. That means you can build AI-driven agents, chat, search and content management straight into your own solutions – without building the infrastructure yourself.

- Use the APIs to automate business processes directly
- Build your own chat with your own design

## Security and control built for the enterprise

Automating critical processes requires the security to be in place. CoreAI is multi-tenant from the ground up – each customer's data is isolated – and API access is governed by tokens with granular permissions per action: a token may, for example, be allowed to update content but not delete it. Access to API functionality is also tied to the subscription, so you have full visibility into what is enabled.

For the chat surface, access can be locked to approved domains (referrer control), and personally sensitive information in enquiries can be filtered out before it is processed further. These are prerequisites a decision-maker must be able to tick off before AI is let loose on business-critical data.

## The automation engine – data that never goes stale

An AI answer is never better than the data behind it. That's why CoreAI runs scheduled retrieval every 15 minutes in production, and each source can be set to refresh daily, weekly or monthly. Change a price, publish a new article or post a new vacancy in the source system, and it's picked up without manual effort.

All processing happens queue-based in the background. That gives two things a decision-maker cares about: predictable performance even at high volumes, and a workload that doesn't grow with the number of updates – the machine handles it, not the employees.

## Agentic automation

This is where the automation becomes visible on the bottom line. CoreAI uses agentic tool-calling: the AI decides for itself when it needs to fetch information, and retrieves it from the knowledge base before answering – without anyone having to steer the flow manually.

## Bespoke development with CoreTrek

CoreTrek builds business-critical systems with full integration against CoreAI, so the automation doesn't stop at the standard API and ready-made integrations. If you need a custom-built agent, your own chat surface or an integration against a business system no one else covers, we build it – on the same platform CoreAI runs on. That means you get a single supplier for both the AI engine and the systems around it, and avoid stitching together solutions from several places.

Read more about what we can build at [coretrek.no](https://www.coretrek.no).

## What this means for the decision-maker

### Lower cost per process

Manual content maintenance, repetitive customer enquiries and information updates are replaced by automated flows. The workload scales with machine power, not with the number of employees.

### Lower risk

Data is kept up to date automatically, answers are grounded in your own sources with source references, and access is governed by granular permissions and tenant isolation. Less room for outdated information and human error in critical links.

### Faster time to value

With a standard API and ready-made integrations you get going without a large development project – and build out gradually where it delivers the most value.

## In summary

CoreAI delivers value precisely because it isn't an isolated chatbot, but an integrated component in the value chain: an API and MCP that connect the AI to your business systems, ready-made integrations for common sources, an automation engine that keeps everything up to date, and agentic AI that fetches what it needs to answer and suggest. And where the standard platform doesn't reach, CoreTrek builds business-critical systems with full integration against CoreAI.

Less manual work. Fresher data. Lower risk. Automation where it counts.

---

# A chat that fetches context itself gives better answers

CoreAI's agentic tool-calling lets the AI decide for itself when it needs more context, and how to fetch it – exactly the way a skilled advisor would. Most chatbots, by contrast, get only one shot: they make a single lookup against your question and answer from what they found, and if the question is complex, the answer follows suit. When coreAI needs more, it retrieves again with a more precise phrasing. The result is more precise answers, fewer misunderstandings, and an AI that actually digs into the details before it answers.

## Traditional chatbot vs. CoreAI agentic context retrieval

|  | Traditional chatbot | CoreAI agentic tool-calling |
|---|---|---|
| Retrievals per question | One fixed lookup | Several – retrieves again until the answer is good enough |
| Who controls the retrieval | Pre-programmed flow | The AI decides for itself when to retrieve, and with which terms |
| Complex questions | Often misses half | Handles several criteria at once |
| Filtering on properties | Keyword or category only | Price, volume, weight, power, date and more |
| From–to ranges | Not supported | Builds precise ranges on any property |
| Unit conversion | Manual | Feet to cm, tonnes to kg – automatic |
| Approximate price | Exact match or nothing | Reads "about 5,000" as a sensible price band |
| Search technology | Keywords | Hybrid: semantic vector search + keywords |
| The customer must know | Item numbers, categories, exact words | Just natural language |

## What "agentic" means – simply put

CoreAI's agentic AI treats context retrieval as a tool it can use itself – several times if needed. A traditional chatbot, by contrast, treats every question as a one-off lookup.

When you ask a question that requires a lookup in the knowledge base, the AI does exactly that: it fetches relevant context, evaluates the results, and retrieves again with a better phrasing until it has what it needs. You notice none of the complexity – you just get a better answer.

## One retrieval, the entire knowledge base

When the AI fetches context, it hits your entire knowledge base in a single operation – articles, documents, web pages, uploaded content, API data and products. You don't need to say where it should look; CoreAI fetches the most relevant content no matter which source it comes from.

The retrieval combines semantic vector search – which understands the meaning behind the words – with keyword search that matches exact terms like item numbers and names. That way the AI finds the right information whether the customer uses technical terms or everyday language.

## Advanced retrieval with ranges and properties

CoreAI translates natural language into precise filters before the retrieval runs – without the customer needing to know how the database is built. Product properties such as volume, weight, length, payload and power are read automatically out of the product data on import and normalised to metric units, so they can be filtered on accurately.

Some examples of what the customer can ask – and what CoreAI understands:

- "Do you have a compressor with a tank between 50 and 100 litres?" → builds a from–to range on volume and fetches only products within that span.
- "I need a sledgehammer weighing more than 2 kg" → sets a lower bound on weight.
- "I have a 23-foot boat – do you have trailers that fit?" → converts feet to centimetres automatically and filters on length.
- "Trailer with a payload over 3 tonnes" → converts tonnes to kilos and filters on payload.
- "A hammer weighing more than 1 kg and costing less than 1,000 kr" → combines two properties – weight and price – in a single retrieval.
- "Angle grinder between 1,500 and 2,000 watts under 3,000 kr" → combines a power range with a price limit.
- "What's the difference between A1324 and B1325?" → fetches both products precisely via item number.

What they all share: the customer uses everyday language, and CoreAI translates it into structured queries behind the scenes.

## Smart interpretation built in

CoreAI also handles interpretation that would otherwise require manual logic:

- Approximate price – "about 5,000 kr" automatically becomes a sensible price band from 75 % to 125 % of the amount, so the customer gets products in the right price range instead of only exact matches.
- Unit conversion – feet become centimetres, tonnes become kilos, everything normalised to metric before filtering.
- Date periods – "this autumn" or "between January and April" are translated into concrete from–to dates.
- Type scoping – product questions are scoped automatically to products, job questions to open positions.

In addition, the retrieval can be scoped on stock status, so the customer always gets relevant and available results.

## 3 reasons this gives a better customer experience

### Right answer to complex questions

When a question contains several criteria at once – volume, power, price and type – they are all handled in one go, instead of missing half.

### No frustrated customers who can't find their way

The customer doesn't need to know item numbers, categories, units or exact search words. Natural language is enough.

### Sells smarter

When the customer says what they have to work with and what they're after, products in the right price range and specification are presented automatically – and the path from question to purchase gets shorter.

## In summary

The agentic tool-calling makes CoreAI more than a chatbot – it becomes an active assistant that decides for itself when to fetch context and what to fetch, and that reasons its way to the right answer. Combined with automatic interpretation of prices, dates, units and ranges, CoreAI understands what the customer really means, and fetches exactly what they need from the entire knowledge base – including the product catalogue.

Smarter context. More precise answers. Happy customers.

---

# Language models on European infrastructure: coreAI now runs AI in the EU

coreAI can now run language models on European hardware and infrastructure through a deal with OpenRouter. This means the AI request itself – the question and the content it answers from – is processed by providers within the EU/EEA, not on servers in the US. For anyone with Norwegian or European privacy requirements, this removes one of the hardest trade-offs in adopting AI.

![Comparison of global and European AI security: where the language models run and how the data is processed within the EU/EEA](/articles/european-ai-infrastructure-global-vs-europe.webp)

## What does European infrastructure mean in practice?

European infrastructure means the language model runs on data centres and hardware physically located in the EU/EEA, and that requests are routed there through OpenRouter's European endpoint. coreAI then sends the call to `eu.openrouter.ai` instead of the global endpoint, and OpenRouter forwards it only to providers that offer the model on European infrastructure.

In practice we distinguish between three layers, and all three matter for privacy:

- your knowledge base and search index, which already sit on Norwegian infrastructure
- the embeddings model that vectorises the content
- the language model that formulates the answer itself

It's the last layer – the language model – that previously most often sat outside Europe. With European infrastructure the entire chain stays within the EU/EEA for the models available there.

## A simple choice per knowledge base

You decide per knowledge base which infrastructure the model runs on, where available. The choice is a simple setting on the knowledge base – not a development project – so you can run one knowledge base on European infrastructure and another on global, depending on how sensitive the content is.

Not every model is available on European hardware yet. For the models that are, European infrastructure appears as an available option; for those that aren't, you fall back to the global option. So you always see what is actually possible for the model you've chosen, and can choose deliberately.

## GDPR, data storage and no training

For the European providers, requests run under Zero Data Retention (ZDR): your content is not stored after the answer is delivered, and it is not used to train the models. The combination of data processing within the EU/EEA, no storage and no training is what makes the setup GDPR-friendly.

Concretely, ZDR means a request is processed in memory to generate the answer and then discarded. There is no log of the content itself at the model provider, and nothing you send in ends up in a training dataset. The data responsibility and control remain with you.

## Guaranteed European hardware – but not always European ownership

It is guaranteed that the language models run in Europe on European hardware, but the company that owns the hardware may in some cases still be US-owned. The distinction is between where the computation happens – always within the EU/EEA – and who owns the data centre it happens in.

For the open models, execution can happen on European hardware without the owner being a US company; there you get both European data processing and European ownership. The closed models from the major providers, however, run on the providers' own data centres: the GPT models run on OpenAI's European data centres, for example, and the Gemini models on Google's. The computation then happens in Europe, but ownership of the hardware still lies with a US company.

OpenRouter, which routes the requests onward, is also a US-owned company. What we guarantee is that the European models are processed within the EU/EEA under ZDR and without training on your data – regardless of who owns the hardware behind it.

We consider this good enough for the vast majority of use cases: as long as requests are processed in the EU/EEA, not stored and not used for training, the practical privacy risks are small – even when the hardware is owned by a US company. If you also need European ownership of the hardware, you choose one of the open models that run with European providers.

## How to get started

Choose European infrastructure on the relevant knowledge base where the option is available, and requests are automatically routed through Europe. To see how the knowledge base fits with the rest of the solution, see the [knowledge base solution](https://coreai.no/en/solutions/knowledge-base) or [get in touch for a walkthrough](https://coreai.no/en/contact).

---

# From AI chat to agentic platform: coreAI reshapes the workflow

coreAI has taken the step from AI chat to agentic platform: the assistant doesn't just answer questions, it acts – it searches, pulls fresh real-time data straight from the business systems, and runs complex tasks via the Model Context Protocol (MCP) on the user's behalf. coreAI started as an AI chat that gave precise answers from your own content, and the shift moves the solution from a pure answer tool to an integrated work platform that drives real value.

![Architecture sketch: a user asks coreAI, which via AI search and agentic mode pulls real-time data from Profixio and a car workshop through MCP](/articles/from-chat-to-agentic-platform-architecture.webp)

## AI search is only the beginning

AI search is often the first thing customers put in place: a conversation-based entry point to everything the company knows. It gives precise answers from your own content and is the simplest starting point for most partners. See the [AI search solution](https://coreai.no/en/solutions/ai-search).

## Agentic mode turns chat into action

When the answer needs real-time data or an action, coreAI enters agentic mode. The assistant plans across multiple steps, runs a coverage check and searches again if the answer is thin, and calls external tools via the Model Context Protocol (MCP). The MCP server decides what a given user is actually allowed to do – it's the business system's existing RBAC that applies, not a new authorisation in the AI layer. More in the articles on [agentic mode](https://coreai.no/en/articles/agentic-mode) and [MCP](https://coreai.no/en/articles/mcp).

## The use cases that move the workflow

Three use cases drive the most value today, all on the same platform core:

- **Customer service**: the assistant answers enquiries, looks up orders, escalates cases and updates status without pushing the customer into a queue. [See the customer-service solution](https://coreai.no/en/solutions/customer-service).
- **Shopping list and product discovery**: the user describes the need, coreAI finds the products and adds them to the shopping list. [See the shopping list in action](https://coreai.no/en/solutions/shopping-list).
- **Knowledge base and search**: hybrid search across sources with answers that cite your own content. [See the knowledge base](https://coreai.no/en/solutions/knowledge-base).

The next two examples show what this looks like in practice.

## Example: Profixio solves the sports puzzle in real time

Profixio looks up fresh sports data in real time via MCP instead of pre-syncing information that changes constantly. Profixio is an IT company delivering the digital backbone for sports – a system handling everything from tournament and cup registrations to federation administration, licence transfers, and demanding match scheduling where free pitches, travel distance and preferences all have to add up.

It's an enormous puzzle of rules, data and people. When players, parents or coaches use coreAI to find match schedules or results, the assistant looks straight into the database and gives an up-to-date answer in real time. The customer never sees stale information, and Profixio avoids building expensive, bespoke integrations.

## Example: A car workshop automates 90% of the customer journey

A car workshop can use coreAI to resolve a full 90% of all customer enquiries independently, around the clock. Agentic AI reaches all the way out to the consumer through a customer journey integrated into chat, letting the assistant handle everything from simple to advanced tasks across three phases:

- **Phase 1 – booking and hybrid support**: customers complete appointment bookings directly in the chat, and the system ensures a seamless handover to human customer service if a problem arises.
- **Phase 2 – intelligent pricing**: when a customer asks the price of a service, the assistant runs a lookup to identify exactly which parts and how much labour the specific car model requires, and gives an exact standard price on the spot.
- **Phase 3 – complex repairs**: the assistant calculates prices for advanced faults and automatically picks the cheapest parts options to secure an optimal margin for the workshop.

This is agentic AI in practice: the assistant understands the problem, looks up the car's data and the workshop's pricing system via MCP, works out a quote, and books the appointment.

## How to get started

Start with one use case where the data already exists – for example an AI search on your own knowledge base. You don't need to start with the whole customer journey on day one. Once the first flow is in place, connect a business system via MCP and let the assistant act, not just answer. [Browse the full solution catalogue](https://coreai.no/en/solutions) to find the simplest starting point.

---

# One knowledge base, both MCP client and MCP server

Model Context Protocol (MCP) is the open standard that lets AI models talk to external data sources and tools without vendor-specific SDKs. MCP tools can both read and write – from simple lookups to creating tickets, changing orders or cancelling bookings – so MCP is the foundation underneath what's commonly called **agentic AI**: an assistant that actually completes tasks in other systems, not just answers questions.

coreAI implements the protocol in both directions: your assistant can **use** other people's MCP servers as tools during a conversation, and it can simultaneously **be** an MCP server that other AI agents connect to. That means coreAI slots straight into the rapidly growing MCP ecosystem – Claude Desktop, Cursor, ChatGPT, internal dev agents, orchestration platforms – without you having to build per-vendor integrations.

![Sketch of Model Context Protocol as an open standard between AI models, data sources and tools](/articles/mcp-core.webp)

## coreAI as MCP client: the assistant reads, creates, updates and deletes

coreAI isn't limited to lookups. As an MCP client the assistant connects to the MCP servers you already run, reads out which tools they expose, and runs the full chain of calls needed to complete what the user is actually asking for – whether that's fetching data or doing something with it.

Tool schemas are stored in the knowledge base and refreshed automatically. The assistant picks the right tool based on the conversation, and the back-end systems retain full control over what is actually allowed to happen.

**Read – fresh data mid-conversation:**

- live stock levels, prices and delivery times that change hour by hour
- order status, shipping information and case handling per signed-in customer
- CRM lookups, customer registries and internal line-of-business systems where the answer must reflect last-minute changes
- available slots, bookings and calendars where an indexed snapshot quickly becomes stale

**Create – the assistant starts something new:**

- book a workshop appointment, on-site inspection or other appointment in a specialist system based on the first available slot the user accepts
- register a new customer case, support inquiry or internal ticket with the right category and priority
- place an order or start a subscription straight from the chat, with the right customer and delivery address pulled from context
- create a new lead or contact in the CRM when a conversation tips from question into concrete interest

**Update – the assistant adjusts what is already there:**

- move an appointment, change an order or upgrade a subscription
- update customer data, address changes or contact preferences in a master register
- adjust an ongoing case – set a new priority, add a comment, escalate to a specialist
- rework a cart, swap a product or change the payment method before checkout

**Delete or close – the assistant tidies up cleanly:**

- cancel a booking, return an order or end a subscription
- archive a case once the user confirms the issue is resolved
- remove items from a cart or a candidate from a shortlist
- pull a scheduled follow-up email or planned outreach that's no longer relevant

The MCP server is what decides which tools a given user can actually invoke: a signed-in customer can cancel their own order but not someone else's; an agent can escalate any case inside their team but not outside it. The same RBAC you already have in the back-end system is reused, with no new permission logic in the AI layer.

![Sketch of how coreAI reuses existing RBAC from the back-end system for access control](/articles/mcp-security.webp)

## Agentic AI in business processes

When the MCP client can both read and write, the assistant becomes part of the business process itself – not just a search interface in front of it. Some concrete examples of what that opens up:

- **Self-service customer care 24/7.** The customer writes: *"I'd like to move my delivery to next Friday."* The assistant looks up the order, finds valid alternatives with the carrier, changes the delivery date and confirms back to the customer – without waiting for a human agent.
- **Workshop booking with cost estimate.** The driver describes the problem in chat – *"the brakes are squealing, and the car is due for a service anyway"*. The assistant looks up the registration number and service history in the workshop system, estimates the cost of a service and brake replacement based on model, year and mileage, suggests available workshop slots and books the appointment. The user gets both the price and a confirmation in the same conversation.
- **Client conversations to an action plan.** The specialist system transcribes a conversation between a caseworker and a client. The assistant reads the transcript, extracts key points and agreed actions, builds an action plan with concrete activities, sets a due date and owner on each activity, and lets the caseworker approve the plan before it is saved back into the specialist system.
- **Internal case handling.** An employee describes an IT problem. The assistant opens a ticket with the right priority, looks up similar past cases to populate relevant fixes, and assigns it to the right team.
- **Sales and customer follow-up.** After a chat on the website the assistant creates a lead in the CRM, sends a follow-up email with the right product information, and adds a task to the salesperson's calendar.
- **Subscription and account management.** The user asks to upgrade their subscription. The assistant fetches the current plan, shows the price difference, makes the change in billing and confirms the next invoice.

What all of these have in common is that coreAI drives the dialogue and holds the context, while the back-end systems retain ownership of the data and the authorization model. You are not moving data – you are letting the assistant do exactly what it is already allowed to do on the user's behalf.

![Sketch of coreAI as both MCP client and MCP server in the same knowledge base](/articles/mcp-client-and-server.webp)

## coreAI as MCP server: one retrieval layer for all your AI agents

As a server, coreAI exposes the assistant's knowledge base via standard MCP transport over HTTP. External agents like ChatGPT, Claude and similar can connect to coreAI.

That delivers three concrete advantages:

- **One source of truth, many surfaces.** Edit a source text in coreAI and the change shows up across chat, the search API and the MCP surface at the same time. No synchronization, no duplicated vector index, no scraping on the agents' side.
- **Per-assistant access control.** Every token belongs to a user or service account, every MCP call points at one specific assistant, and every assistant is configured against an explicit set of sources. An internal developer agent can have access to the full product catalogue while a customer-specific integration only sees the one knowledge base built for that customer.
- **No vendor lock-in.** The protocol is open. Switch LLM provider or introduce a new agent platform and the MCP endpoint keeps working unchanged.

## When MCP is the right tool

Choose the MCP client when the assistant must answer based on live data from another system, when the answer depends on who is signed in, or when the user actually wants something to happen in another system – not just to be told about it. Choose the MCP server when an external AI agent already has a conversation loop and just needs the right context – coreAI handles curated retrieval, the agent handles prompting and presentation.

For relatively stable data – product catalogues, knowledge-base articles, documents, job ads – the content belongs in coreAI's own knowledge base. You fill it either by letting coreAI crawl your website on a fixed schedule, or by pushing content straight in via the coreAI API. The rule of thumb: anything that requires a live lookup or an action against another system belongs behind MCP; anything that can sit stable for hours or days belongs in the knowledge base.

---

# Agentic mode: coreAI builds its own context when the answer is missing

When coreAI lacks coverage in the context it has already been given, agentic mode lets the assistant build the context itself – instead of guessing or giving up. It picks its own tools along the way: semantic search, keyword search and structured filtering against your own knowledge base – plus external MCP APIs if you have connected the assistant to relevant sources. You enable the feature per assistant, and it changes how it thinks, not just what it knows.

![Sketch of how coreAI selects tools in agentic mode](/articles/agentic-mode.webp)

## What is agentic mode?

Traditional RAG (Retrieval-Augmented Generation) loads context up front: the system runs one search, pushes the results into the prompt, and lets the language model answer from what it was given. Agentic mode inverts this. Instead of pre-loading context, knowledge base search is exposed as a tool the language model can call itself – as many times as it needs to cover the question.

That means the assistant makes its own decisions along the way: which searches to run, how to phrase them, and when it has enough to answer. On multi-part questions, that is the difference between half an answer and a whole one.

## How the assistant reasons in several steps

After each search coreAI runs a coverage check: it identifies the distinct sub-questions and named entities in what the user asked, and verifies that each one has direct support in the sources that came back. If something is missing, it searches again with a broader or sharper query before it even begins to answer.

![Sketch of how coreAI runs a coverage check and searches again before answering](/articles/agentic-mode-reasoning.webp)

- on substantive questions the assistant is required to search rather than guess
- it can run several searches within a single answer to catch every part of a question
- if it still finds no support, it says the answer isn't in the knowledge base – instead of inventing one
- all hits from the searches are accumulated, so the answer can cite exactly which sources it rests on

Example: "What is your return policy, and how long does a refund take?" is really two questions. Agentic mode searches first for the return policy, then for the refund timeline, and answers both. A single pre-load would easily miss one half.

## The tools the assistant can use

Agentic mode gives the language model a small, precise set of tools – and it picks the right one itself:

- semantic search for natural-language questions, broad topics and recommendations
- keyword search for looking up exact terms: person names, roles, document titles or product numbers
- structured filtering for product assistants, for example on price, product number or whether an item is on sale
- external tools via MCP (Model Context Protocol) – for live data or actions that sit outside the knowledge base

When an assistant has both its own knowledge base and connected MCP servers, it can combine internal and external tools in the same answer: pull facts from your own sources and check a live status from another system in one and the same turn.

## When agentic mode makes the biggest difference

Agentic mode pays off most when questions are complex, when the answer is spread across several sources, or when the user expects the assistant to fetch something fresh from another system. You get more complete answers, verifiable source citations, and an assistant that would rather say so than hallucinate when the information isn't there.

---

# The MCP server turns coreAI into a shared retrieval layer for AI agents

The MCP server lets external AI agents connect to coreAI and pull answers from the same quality-assured knowledge base the chat widget uses. You don't need to duplicate content, build a new vector index, or let the agent scrape websites — your assistant becomes a standardized retrieval endpoint that any MCP-compatible client can talk to.

## What the MCP server exposes

The MCP server offers one tool today: a semantic search across the knowledge base of a chosen assistant. The agent sends a natural-language query, and the server runs the same search service that sits behind the chat. The result is a structured text context with the most relevant excerpts from the sources the assistant is already populated with — products, documents, web content, FAQs, and anything else you have imported.

Because the search runs through the same service as the chat, the same rules apply for source handling and ranking. The agent never gets access to raw data outside what the assistant is configured for, and it cannot bypass filters or publication status set at the source level.

## How an external agent connects

The MCP endpoint sits at `/mcp/assistant` in the coreAI portal and uses standard MCP transport over HTTP. The client authenticates with a Sanctum token in the `Authorization` header and specifies which assistant it should talk to via `X-Assistant-Id` — the assistant's public ID. After the handshake, the agent can call the search tool with a query string and get back formatted context ready to be passed into an LLM prompt.

Any MCP client can connect this way: Claude Desktop, Cursor, custom-built dev agents, internal orchestration tools, or a LangChain- or LlamaIndex-based pipeline. You don't need a coreAI-specific SDK; the protocol is open and vendor-neutral.

The fastest way in is to copy the configuration straight from the "Code" tab in the coreAI portal and paste it into your MCP client's config — endpoint, token, and assistant ID are already set correctly, and the client picks up the server on next startup.

## Access is scoped per assistant, source, and client

The access model is three-layered. Each token belongs to a user or system account, each MCP call points to one specific assistant, and each assistant is configured against an explicit set of sources. That means an internal developer agent can have access to the entire product catalog, while a customer-specific integration only sees the one knowledge base built for that customer.

Assistants protected behind a widget callback are not exposed via MCP. That prevents an agent from bypassing authentication checks the widget enforces for end users. For most B2B setups this is not a limitation — the vast majority of assistants are available directly to authenticated tokens, and access is governed in the usual way through which assistants the user is allowed to see.

## When MCP is the right choice over the chat API

Choose MCP when an existing AI agent already has a conversation loop and just needs the right context. The agent handles question formulation, prompt strategy, and user interaction — coreAI contributes nothing but precise answers from the organization's own data. It fits IDE assistants helping developers with internal APIs, customer-service agents fetching product information mid-conversation, or autonomous workflows making decisions based on fresh documents.

Choose the chat API when you want to build the entire conversation experience yourself — your own UI, your own session handling, your own model and prompt configuration. Choose the search API when you only need hits and facets without a generated answer. MCP is the right layer when the generative component already exists outside, and coreAI is to be the retrieval engine behind it.

## Combine MCP, chat, and search in the same product

A product may need several integration surfaces at the same time. A SaaS provider can offer the chat widget to end users, build the search API into its admin panel, and at the same time let its own AI agents connect via MCP for automation — all powered by the same assistant and the same source setup. A change in the knowledge base hits all three surfaces in the same moment, with no need to maintain three separate data syncs.

That is the strength of a shared retrieval architecture: one truth for the content, many channels out. MCP is just the newest of these channels — and the one that lets the rest of the AI ecosystem talk to coreAI on its own terms.

---

# The MCP import in coreAI is a client integration, not a bulk import

The MCP import in coreAI is a client integration: coreAI acts as a client against an MCP server you already have, reads which tools the server offers, and lets the assistant call them on demand during chat. It is not a job that copies answer data into the knowledge base, and you do not need to synchronize anything in advance for it to work.

## Discovery fetches tool schemas, not answers

When the import runs, coreAI connects to each MCP server you have configured and calls `tools/list`. The result is the tool schemas – names, parameters, descriptions, and the input each tool expects. The schemas are stored as JSON configuration tied to the assistant. No user data, order data, or product data is fetched or indexed.

The import runs automatically on an interval you choose, so the schema in the MCP server is always up to date. Between runs, the assistant has a stable picture of what the server can do and does not need to look up tools against the server every time it uses one in a conversation.

## How the assistant picks the right tool in real time

The moment a conversation starts, the tool schemas are exposed to the assistant as available functions. When the user asks a question, the assistant evaluates whether any part of it requires fresh or user-scoped data. If the answer is yes, the assistant picks the right tool, fills in the parameters from the conversation context, and coreAI calls your MCP server via `tools/call`.

The result from the server is fed back into the conversation as the basis for the answer. This happens per question, not per conversation – the assistant can call one tool in one message, a completely different one in the next, and skip MCP altogether when a question can be answered from the knowledge base alone.

## User context can be forwarded to the MCP server

For logged-in users, the widget can pass a user token that coreAI forwards on every tool call as the `X-User-Token` header. Your MCP server can then identify the user and scope the answer to their data: their orders, their cases, their bookings, their CRM thread.

The token is an opaque value that you control both the issuance and validation of. coreAI does not interpret it – it is carried unchanged from widget to MCP server, and the assistant never sees the contents itself. That means your authorization model stays intact: a user cannot ask their way to another user's data by phrasing the chat cleverly, because the MCP server decides what the token grants access to before it answers.

## When MCP is better than upserting data via the API

Choose MCP when the data has to be fresh at the moment the question is asked, or when the answer depends on who is asking:

- live stock levels and prices that change from hour to hour
- order status, shipping information, and case handling per logged-in user
- CRM lookups and internal customer registers where the answer must reflect last-minute changes
- bookings and available time slots where an indexed snapshot quickly goes stale

Choose upsert via the [coreAI API](https://coreai.no/en/articles/api-data-integration) when the data is relatively stable and should be searchable in the knowledge base – product catalogs, knowledge articles, documents, job postings. The rule of thumb is simple: anything that requires a live lookup against another system belongs behind MCP, anything that can sit in a knowledge base for hours or days belongs in the upsert lane.

## MCP and the knowledge base complement each other

The two mechanisms do not compete. A typical production setup has the knowledge base full of indexed product information, knowledge articles, and documents, and at the same time one or more MCP servers covering the live layer the knowledge base cannot: checking that an item really is in stock right now, fetching the status of the order the user is referring to, or looking up the open case in the CRM. The assistant chooses the source per question – and the user gets answers from the layer that has the most accurate data at that moment.

---

# How coreAI uses entity types to distinguish products, documents, and contacts

Structured entities give coreAI the ability to distinguish a product from a PDF, a job listing, or a contact person — something a flat text import cannot do. When the source system sends the right type, the assistant can answer with the right context, and the same fields can be reused as filters later.

## Why structured entities beat a flat text import

If everything that lands in the knowledge base is raw text, the model has to guess whether a passage describes a product, a help article, or a person. The guess is often good enough to answer approximately, but not good enough to show a product image, a price, or correct contact details when the user actually asks for exactly that.

When the data is sent in as typed entities, coreAI knows what each row represents. A product card can be presented with price and stock status, a job listing can be kept out of a general FAQ answer, and a PDF can be referenced as documentation rather than marketing copy. The result is answers that match the question both in content and in form.

## The seven entity types coreAI understands

API v2 supports seven entity types, and each type has its own required fields:

- `products` — product catalog with name, product number, price, stock status, and images. Requires `name` and `productNumber`.
- `contents` — articles, help texts, and editorial marketing copy. Requires `name` and `longDescription`.
- `documents` — PDFs and other formal documentation.
- `events` — time-bound entries like events, webinars, and open days.
- `educations` — courses, study programs, and training tracks.
- `job_postings` — open job listings.
- `contacts` — people and roles, with email, phone, and place of work.

All types use the same upsert path against `/assistants/{assistantId}/sources/{contentImporterId}`, but the `attributes` block and the set of required fields varies. The `type` field decides how coreAI stores, indexes, and presents the entity in an answer.

## Properties make entities filterable

Each entity can have a `properties` block with short, structured values — `categoryName`, `publishedAt`, `market`, and the like. Use camelCase names and one of four types: `string`, `number`, `boolean`, or `date`. Properties are not meant for long text; they are metadata that describes the entity in a way that can be compared and sorted.

The same keys become filter fields in chat and search calls. coreAI supports these operators:

- `$eq` — exact equality, for example `market = "no"`
- `$gt`, `$gte`, `$lt`, `$lte` — comparisons on numbers and dates, for example `publishedAt >= "2026-01-01"`
- `$in` — the value is one of a given list, for example `categoryName in ["jackets", "trousers"]`

Filters go on the `filters` field in a chat or search call, and coreAI uses them to narrow which entities are candidates for an answer. That means you can fill the knowledge base broadly — every market, every category, every publication level — and still ask one specific call to answer from just one slice.

## When a filtered assistant is the right answer

A typical example: a company runs online stores in several countries with a shared product catalog, but each store should only show its own products and prices. Instead of building one assistant per market, you send all the products in with a `market` property (`"no"`, `"se"`, `"dk"`) and let the widget on each store pass `{ "market": { "$eq": "no" } }` in the chat call. The same pattern works for separating published from internal documents, or for letting a search show only events that have not yet taken place (`startDate` with `$gte` on today's date).

The robust integration is to type the entities correctly from the start, keep a small and deliberate set of properties, and use filters instead of duplicating assistants when one logical knowledge base needs to serve several contexts.

---

# Protect an assistant with your own login via callbackUrl

`callbackUrl` is the field you use when a coreAI assistant should be available only to users logged into your own system. When the field is set, coreAI contacts your own URL with the user's token before the chat widget initializes, and only users your endpoint approves with HTTP 200 get to talk to the assistant. The login, the session, and the user database stay with you — coreAI does not own the logic for who is who.

## When to use callbackUrl

Use `callbackUrl` when the assistant answers from data that should not be public: customer portals, intranets, employee documents, or multi-tenant solutions where each user should only see their own. The typical recipe is that the user logs in with you, you embed the coreAI widget on a protected page, and the widget passes a token (your own session ID, a JWT, a signed one-time code — whatever you already use) that coreAI verifies against your endpoint before the chat starts.

If the assistant is meant to answer everyone visiting an open page, you don't need `callbackUrl`. Leave the field blank.

## Two ways to send the token

`callbackUrl` supports two formats, and coreAI picks the method based on how the URL is written:

- **`{TOKEN}` in the URL.** Write `https://my-system.com/validate?token={TOKEN}` and coreAI substitutes the placeholder with the user's token and calls the URL with GET (falling back to POST if GET returns 404). The placeholder can sit anywhere in the URL, including in the path: `https://my-system.com/validate/{TOKEN}` works too.
- **Bearer header.** Write a fixed URL without `{TOKEN}`, for example `https://my-system.com/api/validate`. coreAI then calls the URL with POST and adds `Authorization: Bearer <token>` (falling back to GET if POST returns 404).

Pick whichever is easier to bolt onto your existing auth stack. The bearer variant fits best when you already have a JSON API that validates tokens; the URL variant is easiest when the validator is a standalone endpoint.

## How your endpoint should respond

Your endpoint must respond HTTP 200 with a JSON body to let the user through. Anything else — 401, 403, 500, network errors — is treated as a denial, and the widget does not initialize. If the response includes a `status` field, the value must be `"success"`; anything else denies access even if the status code is 200.

The JSON response can also return one or more `external_id`s:

```json
{
  "status": "success",
  "external_id": ["customer-4711", "department-sales"]
}
```

When the field is present, coreAI locks the conversation to the data sources that match these `external_id`s in the assistant's knowledge base. This is the mechanism that makes multi-tenant portals practical: one assistant, one knowledge base, but each user only gets to see their own orders, their own organization's documents, their own content. You decide the scoping in your own endpoint — coreAI just reads the result.

## What gets disabled automatically

As soon as an assistant has a `callbackUrl` set, coreAI shuts off three surfaces that would otherwise bypass the check:

- **Public search demo** — the search endpoint for unpublished demo hits responds 403.
- **Direct widget link** — the shareable URL that opens the widget standalone in the browser returns 403.
- **MCP exposure** — the assistant is not registered as an MCP tool for AI agents.

There is no way around the callback once it is set. If you want to expose something publicly again, you have to remove `callbackUrl` or create a separate assistant for the open surface.

## Why the check runs once per widget load

The token is validated when the widget initializes — that is, once per page load — and not for every question the user asks or every message streamed back. That is a deliberate choice. Re-validating on every chat call would inject network latency from your endpoint between every question and every answer without delivering any real security gain: access to the assistant is already decided by the fact that the widget was loaded in an authenticated session. A compromised session on your side would let through regardless of how often coreAI asked.

In practice, that means your endpoint receives one HTTP request per time a user opens the page the assistant lives on. That is a realistic load to design for, even for endpoints doing heavy lookups against your database.

---

# How to fill a coreAI assistant with data via the API

The coreAI API is built for systems that want to push their own data straight into an assistant and use it as the basis for answers in chat or search. The integration is first about keeping the knowledge base up to date, then about choosing how users will meet the assistant: through the coreAI widget, a custom chat interface, or plain search.

## Start with an assistant, a source, and a token

All calls to API v2 go to `https://portal.coreai.no/api/v2` in production or `https://stage.coreai.no/api/v2` in the test environment. The API uses a Bearer token, and the most important paths need both an `assistantId` and a `contentImporterId`.

`assistantId` points to the assistant that will answer. `contentImporterId` points to the API source where the data is stored. When you read entities back by external ID, coreAI looks them up in the specified source.

## Upsert is the main path for filling the assistant

For an ongoing integration, your system should send a `POST` to `/assistants/{assistantId}/sources/{contentImporterId}` every time an object is created or changed. Upsert replaces the entire entity: the first call creates it, subsequent calls update the same `id`. You don't need extra calls to check whether the entity already exists — upsert handles that for you.

```json
{
  "data": [
    {
      "id": "product-123",
      "type": "products",
      "lastModifiedAt": "2026-04-28T12:00:00Z",
      "attributes": {
        "productNumber": "123",
        "name": "Mountain jacket",
        "description": "Lightweight shell jacket for changing weather.",
        "url": "https://example.com/products/123",
        "price": 1299,
        "inStock": true
      }
    }
  ]
}
```

The entity types cover the most common data sources an assistant needs: `products`, `contents`, `documents`, `events`, `contacts`, `job_postings`, and `educations`. Each type has its own required fields. Products, for example, need `name` and `productNumber`, while content needs `name` and `longDescription`.

## Use PATCH when only parts of the entity change

`PATCH` against the same endpoint lets you send only the fields that have changed. This fits when an external system publishes small status updates, for example price, stock status, or date.

## Deleting entities

`DELETE` takes a simple list of `id` and `type`, and removes both the entity and any relationship links to it. Use it when an object should no longer be able to appear in answers — for example an expired product or a cancelled job posting.

## Custom properties make the data filterable

Some entity types can carry `properties` with short, structured values. Use camelCase names like `categoryName`, `publishedAt`, or `market`, and choose type `string`, `number`, `boolean`, or `date`. The same fields can later be used in chat and search calls with filters like `$eq`, `$gt`, `$gte`, `$lt`, `$lte`, and `$in`.

This is useful when one assistant covers several markets, product groups, or publication levels. You can fill the same knowledge base broadly, but ask the chat to answer only from a single source, market, or content type.

## Chat can be integrated at three levels

The simplest path is to use the coreAI chat widget. The widget then handles conversation ID, language, current URL, and streaming for you. For a tailored experience you can call `/assistants/{assistantId}/chat` directly and send `question`, optional `cid`, `lang`, `model`, `sources`, `resources`, `filters`, and `stream`.

If you integrate chat yourself, you must fetch the required configuration from `/assistants/{assistantId}/config`. The response gives available models, sources, and the WebSocket setup for streaming. Chat streams are published on `ai-chat.<cid>` with the events `ChatStreamProgress` and `ChatStreamUpdated` over WebSocket.

If you don't need a full conversation, `/assistants/{assistantId}/search` can be used as a knowledge-base search. It returns hits, tabs per type, and optionally an AI-generated summary. Streamed summaries use the channel `ai-summary.<uuid>` and the event `SummaryUpdated`.

## A good integration is a synchronization, not a one-off import

The robust model is to let the source system own the truth and let coreAI be the searchable, conversation-ready copy. Send updates with stable external IDs, use `lastModifiedAt`, delete objects that should no longer produce answers, and add properties that make filtering possible. The assistant then gets fresh data, traceable sources, and a chat interface that can be built as simply or as specialized as your product requires.

---

# How we make coreai.no visible to search, answer engines, and AI agents

SEO, AEO, and agent friendliness are baked into the coreAI homepage as three layers of the same response: a central SEO builder produces head tags and JSON-LD, a `.md` surface serves the same content as plain markdown to AI bots, and a dedicated sitemap command keeps both in sync on every reindex. All three layers read from the same markdown documents — nothing is bolt-on.

## What we get from existing packages

Three packages cover the routine work, so we don't have to maintain it ourselves:

- `prezet/prezet` — markdown CMS that indexes a localized content directory into a SQLite file. Every heading, lede, and FAQ entry is one markdown file, and content is read through Prezet's query API.
- `spatie/laravel-markdown-response` — global URL-rewrite middleware that strips `.md` off a URL and negotiates `text/markdown` against the `Accept` header. We get agent-friendly URLs without duplicating routes.
- `spatie/laravel-sitemap` — primitives for building sitemap XML and a sitemap index. We orchestrate what ends up inside.

None of them handles JSON-LD or AEO — that's where our own components take over.

## What we built ourselves

Five building blocks, one job each:

- An SEO builder that every controller uses to produce one `seo` view variable. It sets the page title with the brand suffix, toggles optional schemas (FAQ, breadcrumbs), and computes canonical and hreflang from the list of supported locales.
- Five schema.org builders — Organization, WebSite, FAQPage, BreadcrumbList, and Article — each a pure class with one build method that returns JSON-LD as an associative array. Testable in isolation, identical across pages.
- A central head partial that is the only place in the codebase where `<title>`, `<meta>`, `<link rel="canonical">`, hreflang alternates, OG tags, and `<script type="application/ld+json">` get rendered. Pages cannot write their own head.
- A markdown driver with one assembler per editorial page — serves markdown 1:1 from the sources when an agent asks for it. We never convert the rendered HTML back to markdown; we read the same `.md` files the Blade templates do, so the agent sees exactly what the author wrote.
- `/llms.txt` and `/llms-full.txt` — an index of the marketing pages plus the 20 latest articles, and the entire default-locale corpus assembled into a single document. Both are `noindex`, default-locale, and live outside the marketing route group.

A dedicated sitemap command orchestrates the XML into three files: `sitemap.xml` as the index, `sitemap-pages.xml` with marketing routes × locales, and `sitemap-articles.xml` where a centrally maintained blocklist filters out the section sentinels (`welcome-page`, `solutions-page`, …) so marketing documents don't leak into the article sitemap. After every reindex we override Prezet's sitemap hook and additionally run a cache flush against the markdown surface, so agents never read stale content.

## AEO: three rules we grade every text against

AEO (Answer Engine Optimization) is not a library, it's three editorial rules baked into the copywriting process and documented in an internal style guide:

- **Answer first.** The first sentence of every lede and every FAQ answer states the answer outright. No warm-up, no rhetorical questions, no "let's take a closer look at…".
- **One H1 per page.** The hero owns the only `<h1>`. Every other section title is an `<h2>`, nested ones `<h3>`. Skipping levels is forbidden.
- **No "click here" CTAs.** Link text describes the destination ("See pricing", "Order now"), not the gesture.

The rules are enforced in code review, not by lint — but they are why answer engines like ChatGPT Search and Perplexity actually manage to extract the right sentence from a coreAI page.

## How AI agents see the page

Three triggers swap HTML for markdown on the editorial routes: `.md` suffix in the URL, the `Accept: text/markdown` header, and known bot user-agents like `GPTBot` and `ClaudeBot`. All three lead to the same response — the source markdown the author wrote, not a conversion of the rendered HTML. Transactional routes (`/order`, `/contact`) are kept outside the middleware, so `/order.md` returns regular HTML.

Want to see it for yourself? [Get this article as markdown](https://coreai.no/en/articles/seo-aeo-and-agent-visibility.md) — same URL, just with `.md` on the end. That's exactly the response `GPTBot` and `ClaudeBot` get when they visit `/en/articles/seo-aeo-and-agent-visibility`.

The result is that the same content is published to humans, search engines, and AI agents without duplication: the author writes one markdown file, and three surfaces deliver it to wherever the recipient is looking.

---

# API and integrations: build automations with coreAI, or build coreAI into your product

coreAI isn't a closed chatbot – it's a platform with open interfaces you can build automations around or build straight into your own products. The entity everything hangs on is the **knowledge base**: it holds the sources and the data, and on top of it you build one or more **assistants** that are the responding surfaces toward your users. Whether you want to fill a knowledge base with data from your own system, let it perform actions in your line-of-business systems, or let other AI agents fetch answers from it, the same building blocks apply: a REST API for data and conversation, and the Model Context Protocol (MCP) for letting AI talk to tools and systems. Everything hangs on the same knowledge base, the same sources, and the access controls you already have.

![Sketch of the three integration patterns in coreAI: send data in via the REST API, build coreAI into your own surfaces, and let AI read and act via MCP – all against the same knowledge base](/articles/en/api-integration-patterns.svg)

## Three ways to integrate

Broadly there are three integration patterns, and they can be combined in the same product:

- **Send data in.** You push structured data from your own system into the knowledge base via the REST API. There it is converted automatically into coreAI's internal format – a representation format optimised for AI understanding, not for storage in a database. Your fields are mapped to semantic entities, the text is normalised and enriched, and the content is indexed so the model finds and understands it quickly. You send your raw data as it is; coreAI does the heavy lifting of turning it into solid answer material for chat and search.
- **Build coreAI in.** You call the chat and search endpoints directly and build the experience into your own surfaces – your own UI, your own session handling, your own model and prompt configuration.
- **Let AI read and act.** You connect the knowledge base to your MCP servers so the assistants can fetch fresh data and perform actions through tool calling – or expose coreAI as an MCP server other agents connect to.

## The REST API: fill the knowledge base and build your own surfaces

The REST API is the entry point for systems that want to send their own data directly into a knowledge base and use it in chat or search. All calls to API v2 go to `https://portal.coreai.no/api/v2` (or the stage environment in test), authenticate with a Bearer token, and the most important paths need both `assistantId` (the assistant that responds – a knowledge base can have one or more) and `contentImporterId` (the source the data is stored in).

The main flow is **upsert**: your system sends a `POST` every time an object is created or changed, and coreAI creates or updates the entity on a stable external ID. `PATCH` sends only the fields that changed, and `DELETE` removes entities that should no longer produce answers. The entity types cover the most common data sources – `products`, `contents`, `documents`, `events`, `contacts`, `job_postings`, and `educations` – and custom `properties` make the content filterable in later chat and search calls. The full recipe, with field requirements and filter operators, is in [how to fill a knowledge base with data via the API](https://coreai.no/en/articles/api-data-integration).

If you want to build the experience yourself, you call `/assistants/{assistantId}/chat` with the question and optional parameters such as `cid`, `lang`, `model`, `sources`, `filters`, and `stream`, or `/assistants/{assistantId}/search` when you only need hits and facets without a generated answer. Chat streams are published over WebSocket, so you can build a responsive, streaming experience in your own interface. The simplest route is still the coreAI widget, which handles conversation ID, language, and streaming for you – the API is there when you need full control.

## MCP and tool calling: let the knowledge base read and act in other systems

Where the REST API fills the knowledge base with relatively stable data, MCP is built for what has to be live or requires an action. The Model Context Protocol is the open standard that lets AI models talk to external data sources and tools without vendor-specific SDKs, and coreAI implements it both ways.

As an **MCP client**, the knowledge base connects to the MCP servers you already have, reads which tools they offer, and the assistants pick the right tool per question through tool calling. The tools can both read and write: fetch live stock levels and order data, or create a case, reschedule a delivery, and cancel a subscription. This is what makes the assistant agentic – it completes tasks, it doesn't just answer. Your line-of-business system still decides what a given tool is allowed to do, and for logged-in users a user token can be forwarded to the MCP server as `X-User-Token` so the answer is scoped to the user's own data. See [coreAI as MCP client and MCP server](https://coreai.no/en/articles/mcp) for the full picture, and [the MCP import as a client integration](https://coreai.no/en/articles/mcp-import) for how tool schemas are fetched and selected in real time. How this ties into building actions into your business processes is covered in [the agentic AI solution](https://coreai.no/en/solutions/agentic-ai).

As an **MCP server**, coreAI exposes the knowledge base over standard MCP transport, so external AI agents – Claude Desktop, Cursor, ChatGPT, internal dev agents, or orchestration platforms – can look up the same curated source the chat uses. No copying, no separate vector index, no scraping. Access is three-layered: each token belongs to a user or system account, each call points to one assistant, and each assistant is bound to the sources in its knowledge base. The details are in [MCP server as a shared retrieval layer](https://coreai.no/en/articles/mcp-server).

## One knowledge base, many surfaces

The strength of the architecture is that everything hangs on the same knowledge base and the same sources. A product can offer the chat widget to end users, build the search API into its own admin panel, push data via the REST API, and let its own AI agents connect via MCP – at the same time. Change a source text in coreAI and the change lands on every surface in the same instant, without you maintaining three separate data synchronisations.

The rule of thumb is simple: anything that can stay stable for hours or days belongs in the knowledge base via the REST API; anything that requires a live lookup or an action against another system belongs behind MCP. That gives you a knowledge base with fresh data, traceable sources, and an interface you can build as simply or as specialised as your product requires.

## How to get started

Start by choosing the integration pattern that solves your task: send data in with the REST API, build chat and search into your own surfaces, or connect MCP for live data and actions. You fetch the token, assistant ID, and source ID in the coreAI portal on the relevant knowledge base, and the MCP configuration can be copied straight from the "Code" tab. [Get in touch for a walkthrough](https://coreai.no/en/contact) of how the APIs fit your exact architecture.

---

# Personalisation: an AI that knows the logged-in customer

Personalisation in coreAI means that a logged-in user gets answers that apply to exactly them – not a generic default answer. The moment the customer is logged in, the assistant knows who it is talking to and which data it is allowed to use on behalf of that user. It can then answer "where is my order?" with the customer's actual order, suggest what suits this specific account, and carry out actions that concern the customer's own cases. Logged out, coreAI gives good, general answers from your knowledge base; logged in, it gives personal answers built on the customer's own context.

![Comparison of the same question logged out and logged in: logged out gives a general answer without personal data, logged in gives a personal answer based on the customer's own order and within their own permissions](/articles/en/personalization-anonymous-vs-loggedin.svg)

## What login unlocks

The difference between an anonymous and a logged-in conversation is access to context. As soon as the user is authenticated, the assistant can connect the question to an identity and to the data that belongs to that identity.

- **Identity-aware answers** – "When will my package arrive?" is answered with the customer's own order and tracking status, not with a general explanation of delivery times.
- **Data from the customer's own systems** – the assistant fetches from order history, subscriptions, cases, and agreements that belong to the logged-in user.
- **Role-based content** – an administrator, an end user, and a partner see answers tailored to what their role actually has access to.
- **Personal recommendations** – suggestions build on what the customer has bought, viewed, or asked about before, instead of a generic bestseller list.

## Personalisation isn't just personal – it's access-controlled

Personalisation isn't only about the individual customer. Often the point is that a logged-in user should see content that applies to their role or group – not just their own personal data. Behind login, coreAI therefore fetches from internal, access-controlled knowledge bases that are never visible to anonymous visitors: intranets, HR handbooks, membership terms, supplier agreements, or customer-specific prices.

Two users can ask exactly the same question and get different – but correct – answers, because each request is scoped to the set of sources the user actually has access to. An employee gets answers from internal routines, a supplier from their agreements, a logged-in customer from their own terms. We often recommend several knowledge bases with different access – one public and several behind login for customers, suppliers, and employees. See [even better answers behind login](https://coreai.no/en/articles/answers-behind-login) for how role-based knowledge bases are set up.

The access is validated against your own login system, not against a user registry in coreAI. If you set a `callbackUrl` on the assistant, coreAI calls your endpoint with the user's token and only lets through what the user should see – and can lock the conversation to specific data sources per user or organisation. The details are in [protect an assistant with your own login](https://coreai.no/en/articles/assistant-protection).

## From personal answers to personal actions

Personalisation becomes truly powerful when combined with [agentic AI](https://coreai.no/en/solutions/agentic-ai). A logged-in customer can not only get answers about their own order – the assistant can change it. Because the identity is known, coreAI can carry out actions that concern this exact customer:

- move the customer's own delivery to a new date
- update contact details or address on the account
- create a case tied to the customer's own history
- cancel or change a subscription the customer actually owns

The actions always happen on behalf of the logged-in user and never on anyone else's data.

## You keep control of access

Personalisation in coreAI reuses the access control you already have – it introduces no new one. It is your line-of-business system, not the AI layer, that decides what a given logged-in user gets to see and do. A customer reaches their own orders but not anyone else's; a case worker operates within their own department. The same role-based access (RBAC) that governs the rest of your systems also governs what the assistant can fetch and do.

If the user is not logged in, the assistant safely falls back to general answers from your knowledge base. Personal data never appears before the identity is confirmed, and everything runs on your own infrastructure – not in global models. See [the knowledge base solution](https://coreai.no/en/solutions/knowledge-base) to understand how the content and data fit together.

## How to get started

Connect the login and the systems that hold the customer's data, and coreAI builds the personal layer on top of what you already have. The assistant answers everyone well when logged out, and becomes personal the moment the customer logs in. [Get in touch for a walkthrough](https://coreai.no/en/contact) of what personalisation can offer your logged-in customers specifically.

---

# Security in coreAI: European infrastructure, safe login, and full control of your data

Security in coreAI rests on three pillars: where requests are processed, how users log in, and how your data is stored and scoped. On all three points the starting position is the same – you keep control, and coreAI layers on top of the security you already have instead of introducing a new one. The result is an AI solution that meets Norwegian privacy requirements without you having to compromise on what the assistant can actually do.

![Sketch of coreAI's three security pillars: processing on European infrastructure under Zero Data Retention, login validated against your own system, and retrieval limited to the user's permissions at the data level](/articles/en/security-three-pillars.svg)

## Requests can run on European infrastructure

The AI request itself – the question and the content it should answer from – can be processed by providers within the EU/EEA instead of on servers in the US. Through an agreement with OpenRouter, the call is routed to the European endpoint, and the request is forwarded only to providers that offer the model on European hardware.

You choose this per knowledge base, where the option is available. That means you can run a knowledge base with sensitive content on European infrastructure and another on global – depending on how sensitive the content is. The choice is a simple setting, not a development project.

For the European providers, requests run under **Zero Data Retention (ZDR)**: your content is not stored after the answer is delivered, and it is never used to train the models. A request is processed in memory to generate the answer and then discarded. There is no log of the content itself at the model provider, and nothing you send in ends up in a training dataset. See [language models on European infrastructure](https://coreai.no/en/articles/european-ai-infrastructure) for the full picture of how this is set up and what is guaranteed.

## Login is validated against your own system

If an assistant should only be available to logged-in users, coreAI validates them against your own login system – not against a parallel user registry you have to maintain. If you set a `callbackUrl` on the assistant, coreAI calls your endpoint with the user's token before the chat widget is initialised, and only users your endpoint approves with HTTP 200 get through.

The login, the session, and the user database stay with you. coreAI never owns the logic for who is who – it only reads the result of your own validation. The details, including how to scope each user to their own data sources, are in [protect an assistant with your own login](https://coreai.no/en/articles/assistant-protection).

## The assistant only fetches within the user's permissions

The AI can't "stumble" over information a user shouldn't see. The access boundary is set not by the AI but by you – and enforced at the data level. Once the user is validated, your system decides which sources and documents that role should have access to, and coreAI limits all retrieval to exactly that set. The rest of the knowledge base is simply not visible to the search.

In other words, the knowledge base cannot leak internal documents to a customer, or one department's routines to another – because they are never part of the search basis for that user. The same role-based access (RBAC) that governs the rest of your systems also governs what the assistant can fetch and do. See [even better answers behind login](https://coreai.no/en/articles/answers-behind-login) for how role-based, access-controlled knowledge bases are set up.

## Your data is stored securely and stays yours

Your knowledge base and search index sit on Norwegian infrastructure, and you are the data controller for the content all the way through. coreAI processes the data on your behalf to deliver the answers – it is you who owns it, decides what is imported, and can remove it again.

The combination is what makes the setup GDPR-friendly: data processing within the EU/EEA where you choose European infrastructure, no storage or training at the model provider, and a knowledge base you control yourself. If you also set the assistant to answer exclusively from your own sources, you avoid it falling back on general knowledge when the answer should be grounded in internal facts.

## Security without compromising functionality

What makes coreAI secure isn't that it does less – it's that it reuses the security you already have. You get European data processing where you need it, login against your own system, access control at the data level, and full control of where your data lives. At the same time, the assistant keeps the ability to answer personally and act on behalf of logged-in users, because access is always scoped to what each individual is actually allowed to do.

Want to walk through how the security fits your exact setup – login, data storage, and choice of infrastructure? [Get in touch for a walkthrough](https://coreai.no/en/contact).

---

# Agentic AI: from answers to action

Agentic AI is artificial intelligence that plans and carries out tasks on its own to reach a goal, rather than just generating a single answer to a single question. An ordinary chatbot takes a question and answers from what it already knows. An agentic assistant does more: it breaks the task into steps, decides which tools it needs, fetches the missing information, and performs concrete actions until the task is actually solved. In coreAI this is the foundation for assistants that reschedule a delivery, open a case, or book an appointment – not just tell you how to do it yourself.

## What sets agentic AI apart from an ordinary chatbot?

The difference is that an agentic assistant makes its own decisions along the way instead of following a single fixed search-and-answer pattern. Where a traditional chatbot fetches a bit of context and answers once, an agent can run several steps in sequence: assess what is missing, search again, call an external system, check the result, and move on.

Three properties define agentic AI:

- **Planning** – the assistant breaks a composite task into smaller steps and decides the order itself.
- **Tool use** – it selects and calls the right tools along the way: search in the knowledge base, a lookup against a line-of-business system, or an action in another system.
- **Action** – it completes tasks in other systems, instead of just describing them.

That last point is the big shift: from an assistant that *informs* to an assistant that *acts*.

## What agentic AI can do for you in coreAI

In coreAI, agentic AI gives you an assistant that solves the whole task in a single conversation, because it can both read fresh data and write back to your systems. Some concrete examples:

- a customer asks to move their delivery – the assistant finds the order, checks valid options with the carrier, and changes the date
- a user describes a problem – the assistant opens a case with the right priority and assigns it to the right team
- a visitor shows interest – the assistant creates a lead in the CRM and adds a follow-up task for the salesperson

What they share is that coreAI drives the dialogue and holds the context, while your line-of-business systems keep ownership of the data. You don't move data out – you let the assistant do exactly what it is already allowed to do on the user's behalf.

The ability to act itself builds on an open standard for tool calls. If you want to see how this works technically, we explain it in the article on [how coreAI uses MCP](https://coreai.no/en/articles/mcp). And when the assistant needs to build its own context to answer well, that happens through [agentic mode](https://coreai.no/en/articles/agentic-mode).

## You stay in control

Agentic AI in coreAI acts within the same boundaries you have already set – not freely. It is the line-of-business system, not the AI layer, that decides what a given user is actually allowed to do: a logged-in customer can change their own order, but not someone else's, and a caseworker can escalate cases within their own department. The same access control (RBAC) you have today is reused, with no new access logic in the AI layer.

Just as important is honesty: if the assistant finds no coverage in your sources, it says the answer isn't there – instead of guessing. Every answer can show exactly which sources it is built on, so the actions are verifiable.

## How to get started

Start by gathering the content and connecting the systems the assistant should work against, and coreAI builds the agentic layer on top of what you already have. See the [knowledge base solution](https://coreai.no/en/solutions/knowledge-base) to understand how the pieces fit together, or [get in touch for a walkthrough](https://coreai.no/en/contact).

---

# Knowledge base: one place for everything your AI answers from

coreAI's knowledge base is the central store that ties all your content into a single searchable source. It decides what your AI can answer and how accurate the answers are.

## What is a knowledge base?

A knowledge base is a structured collection of all the content your AI should be able to answer from. In coreAI it is far more than a pile of text: it is an indexed graph of entities – products, articles, contacts, documents, events, and job postings – with relations between them and metadata that lets both people and AI quickly find what they are looking for.

Without a good knowledge base, the AI ends up guessing or pulling answers from generic models. With a good knowledge base, the AI always answers from your content, with source references.

## How coreAI builds your knowledge base

### 1. Import content from every source

coreAI ingests content from four main source types:

- websites, through automatic crawling of your domain
- documents, such as PDFs, Word files, presentations, and spreadsheets
- product catalogues, from ERP, PIM, or webshop via API
- structured APIs, for contacts, events, jobs, and more

You decide which sources are included and how often they refresh.

### 2. Structuring with vectors, relations, and metadata

Once content is imported, coreAI does three things in parallel:

- vectorises the text, so semantic search understands what the content is about
- builds relations between entities, for example linking a product to its manual
- extracts metadata, such as dates, prices, categories, and locations

The result is that the same document can be surfaced by keyword, by meaning, or because it relates to another relevant entity.

### 3. Continuous updates

The knowledge base is not a one-off job. coreAI monitors the sources and updates the index automatically whenever you add, change, or remove content. Changes to your website or product catalogue show up in search and AI answers within a short time.

## Live data and actions through MCP servers

Beyond the indexed content, coreAI can also connect to external MCP servers as a client. That lets the assistant fetch fresh information – or perform actions such as updating an order or logging an enquiry – in other systems while the conversation is in flight, without anything being copied into the knowledge base. coreAI reads which tools the MCP server exposes and stores the schemas as configuration on the assistant; the calls themselves only happen when a user question actually needs them.

The knowledge base becomes your archive of curated sources, while MCP gives the assistant access to live data and operations – the right tool for the right type of task.

## Why it matters

The quality of your AI is tightly linked to the quality of the knowledge base. Three things are decisive:

- breadth – the more relevant sources, the more questions the AI can answer
- structure – without metadata and relations, results turn generic
- freshness – outdated content produces outdated answers

coreAI handles all three automatically, so you can focus on the content, not the infrastructure.

## Your data, your answers

All content in the knowledge base stays on Norwegian infrastructure and is used only to answer questions from your own users. No data is shared with third-party models for training, and you keep full control over which sources are active at any given time.

With a strong knowledge base, the AI moves from a guessing machine to a precise assistant that always answers from your own sources.

---

# coreAI chat widget: an AI chatbot that actually understands your customers

coreAI chat widget is an AI chatbot that pulls answers directly from your own sources – websites, documents, product catalogues, and APIs – and delivers precise, source-backed replies in real time. Unlike traditional chatbots with pre-programmed flowcharts, coreAI uses Retrieval-Augmented Generation (RAG) to formulate answers tailored to exactly what the customer is asking.

It is an intelligent AI assistant that combines advanced language understanding with your knowledge base, and it can be installed on your website in under five minutes.

## Unique benefits of the coreAI chat widget

### Real-time answers with source citations – no hallucinations

coreAI streams answers in real time, just like chatting with a human. But unlike general-purpose AI chatbots such as ChatGPT or Copilot, coreAI only retrieves information from your verified knowledge base. Every reply ships with clickable source citations so the customer can always verify the information. The result is a chatbot you can actually trust – with no risk of the AI making things up.

### Complete customisation – from appearance to language and behaviour

The coreAI chat widget adapts fully to your brand and your needs:

- Visual customisation: choose background colour, icon style (standard, sparkle, or custom icon), placement (all four corners or hidden), and fine-tune both vertical and horizontal offsets for pixel-perfect positioning.
- Multilingual support: the widget automatically detects the user's browser language and replies in the right language. Every text element – welcome message, buttons, progress messages, terms, and shopping-cart copy – can be customised per language.
- Behaviour configuration: control terms acceptance (once, every time, or never), enable source selection for users, include content from the page the customer is on, and configure auto-scrolling.
- E-commerce integration: enable a shopping list with support for multiple cart adapters so product recommendations in chat become direct sales channels.

## What makes coreAI chat unique compared with competitors?

### Intelligent context understanding with query rewriting

coreAI understands the context from the entire conversation history when a customer asks a follow-up question. The system uses AI-driven query rewriting to reformulate the question into a self-contained search – so "How much does it cost?" automatically becomes "How much does [the product the customer asked about] cost?". This gives far better hits in the knowledge base than chatbots that handle each question in isolation.

### Voice interaction and accessibility

The widget supports speech recognition so users can ask questions with their voice. With a WCAG-compliant design, coreAI chat is accessible to all users – regardless of ability.

### Lightweight integration without conflicts

The widget loads asynchronously and is isolated from the rest of the site, so it does not affect performance or clash with existing JavaScript frameworks. It works equally well on a static landing page and in an advanced headless storefront.

### Real-time feedback and learning

Every response can be rated by the user on three levels (poor, neutral, good), with the option to add written feedback. After a customer-service case is closed, the customer can give an overall satisfaction rating. This data provides continuous insight into what the chatbot is doing well – and where it can improve.

## Easy installation – up and running in minutes

Add the coreAI chat widget to your website with just a few lines of code. You manage everything – colours, placement, languages, source selection, and shopping-cart integration – directly from the coreAI portal, with no developer resources required. Changes take effect immediately, without redeploying the website.

---

# AI search: find everything in seconds

coreAI AI search gives your users a search that actually understands what they're looking for – and shows the results in a way that makes sense.

## What is AI search?

AI search combines the best from three worlds: traditional keyword search, modern vector search, and artificial intelligence. The result is a search that understands exact terms, semantic meaning, and can summarize it for you. It's a bit like the new Google search – but it only searches your information.

When a user searches for "how to mount kitchen cabinets," AI search doesn't just find pages containing the words you typed, but also semantically related content about installation, tools, and products that fit the task. AI search will also find related documents, contacts, and maybe information about a kitchen cabinet installation course – and display it in a structured way.

## How it works

### 1. The user enters the search

A simple search field lets the user type their question. The search can be anything from simple product names and product numbers to complex questions in natural language.

### 2. coreAI analyses the search

Behind the scenes, a lot happens in parallel:

- keyword search finds exact matches on words and phrases
- vector search finds semantically related content based on meaning
- query rewriting reformulates the search for better results
- filtering limits results based on context

### 3. Results are grouped automatically

coreAI categorises the results by type:

- products – with image and price
- articles – information pages and guides
- contacts – people with phone and email
- documents – PDFs and other files
- events – occasions with date and location
- job listings – open positions with application deadline

### 4. AI summary at the top of search results

At the top of the search results, an AI-generated summary gives the user a quick answer to their question with source attribution showing where the information came from. The summary streams in real time as it is generated.

Below the summary, links to products, articles, contacts, and documents are listed as in a regular search – but sorted by semantic relevance, not word similarity like old-fashioned search.

### 5. Tabs with results per category

Above the search results, tabs show the number of results per category. The user can easily filter on products, articles, contacts, or other types. Each type also has a unique presentation that makes them easier to understand.

## Why AI search beats traditional search

### Understands what the user means

Traditional search only matches words. If a user searches for "cheap sofa," it only finds pages containing the words "cheap" and "sofa." AI search understands that the user is looking for affordable sofas and also includes products labelled as "budget," "affordable," or "sale."

### Handles typos and synonyms

Did the user search for "fridge" or "refrigerator"? "Laptop" or "notebook"? AI search understands that these mean the same thing and returns relevant results regardless.

### Ranks by relevance, not just matches

Traditional search often shows the newest or most popular pages first. AI search ranks by how well the content actually answers the user's question.

### Finds hidden connections

When a user searches for "how to fix a leak under the sink," AI search not only finds articles about plumbing, but also relevant products like sealant strips, tools, and spare parts.

## Customised result types

### Products

Product results are displayed with:

- product image
- product name and product number
- unit price

### Contacts

Contact results are displayed with:

- profile picture (or placeholder)
- name and job title
- phone number
- email address (hidden behind a "show email" button to protect against spam)

Perfect for organisations that want to make it easy to find the right contact person.

### Documents

Document results are displayed with:

- file type icon (PDF, Word, etc.)
- document name as a link
- file size

Users can click to open or download the document directly.

### Events

Event results are displayed with:

- date in visual calendar format (day and month)
- event name
- time
- location

Perfect for cultural institutions, municipalities, and organisations with many events.

### Job listings

Job listings are displayed with:

- job title
- application deadline
- short description

Ideal for companies and recruitment agencies that want to make it easy to find open positions.

### Articles and content

Article results are displayed with:

- title as a link
- short description or excerpt
- content type (article, guide, etc.)
- last updated date

## AI summary: the answer first

The most powerful feature of AI search is the AI summary. Instead of forcing the user to click through ten results to find the answer, coreAI generates a summary that answers the question directly.

### How the summary works

- real-time streaming – the summary is displayed word by word as it is generated
- source attribution – a sidebar shows the sources the summary is based on
- expandable view – the user can click "show more" to see the full summary
- markdown support – the summary can contain formatting, lists, and links

### Example

Search: "how to change a car tyre"

AI summary: To change a car tyre, you need a jack, wheel wrench, and a spare tyre. Start by loosening the wheel bolts while the car is on the ground, jack up the car, remove the bolts completely, swap the wheel, and tighten the bolts in a star pattern. Remember to check the tyre pressure afterwards.

Sources: Tyre change – step by step guide · Tools you need for tyre change · Safety tips for tyre change

## Technical architecture

### Vector search with embeddings

coreAI converts all content into vectors (embeddings) that represent semantic meaning. When a user searches, the search query is also converted into a vector, and the system finds content with similar vectors – that is, similar meaning.

### Keyword search with full-text

For short searches (1–2 words), coreAI uses traditional full-text search to find exact matches. This ensures that product numbers, item numbers, and other specific terms always return results.

### Ranking

The results from both search methods are combined and ranked by:

- semantic similarity (how well the content matches the meaning)
- keyword matches (how many search terms are found in the content)
- content type (products can be prioritised over articles, or vice versa)
- recency (newer content can be ranked higher)

## Use cases

### E-commerce

Customers search for products and get relevant results with images and prices. The AI summary can provide product recommendations based on the search.

### Knowledge base

Employees or customers search for information and get answers directly in the summary, with links to relevant articles for more detail.

### Intranet

Employees find colleagues, documents, and information across the organisation. Contact cards make it easy to find the right person.

### Recruitment

Job seekers find relevant positions based on skills and interests, not just job title.

### Municipalities and public agencies

Residents find information about services, forms, contacts, and events in one place.

## Getting started

### Step 1: import content

Make sure your content is imported into coreAI. You can:

- crawl websites with automatic structure recognition
- upload documents (PDF and other file types)
- import a product catalogue via API or feed
- add contacts manually or via integration

### Step 2: embed the search widget

Add the AI search widget to your website with one line of HTML. The widget is responsive and works on mobile, tablet, and desktop.

### Step 3: customise the appearance

The widget inherits colours and style from the assistant settings. You can customise:

- primary colour
- text and labels
- which content types are displayed

### Step 4: configuration

In the assistant settings you can choose:

- number of sources to use
- which AI model should generate the summary
- custom instructions for the summary

## Benefits summarised

- better results – understands meaning, not just words
- faster answers – AI summary provides the answer directly
- visual grouping – results categorised by type
- real-time streaming – summary displayed as it is generated
- responsive design – works on mobile, tablet, and desktop

**Ready to give your users a search that actually works?**

AI search is included in the standard subscription or higher. Activate AI search today and see how AI search can transform the user experience on your website.

---

# From AI to human — without the customer losing the thread

Human handover in coreAI lets a support agent take over an ongoing AI conversation without switching channels. The customer doesn't have to send an email, fill in a new form or explain the problem again — the conversation continues in the same widget, from the last message the AI sent.

## When is the conversation handed over?

Handover is one click away. When the feature is enabled, a link appears in the chat that lets the customer choose to talk to a human — without having to phrase the request in words or argue their way through the AI. When the customer clicks, coreAI signals to your team that a conversation is ready to be picked up.

That means two things in practice:

- The path to a human is visible and predictable — the customer always sees the option, and doesn't have to guess which words trigger an escalation
- The full conversation context comes along — no "could you repeat what the problem was?" when the agent picks it up

The feature is a setting per coreAI assistant, so you decide whether and when the link is available.

## What happens when no one is online?

The link only appears when at least one agent is online in the coreAI portal. When everyone goes offline, the link disappears automatically — the customer doesn't see an option that can't be honoured, and the AI keeps answering questions as usual. Availability follows whoever is actually online, so you don't have to maintain business hours or write your own out-of-office messages.

## What the customer sees, and what the agent sees

For the customer, the handover looks like a natural transition in the same chat window: a short message that an agent is taking over, and then the conversation continues as usual — same window, same history, same click to send a new message.

For the agent, the conversation opens in coreAI's portal with the full backstory visible: what the customer asked, what the AI answered, which sources the answers were built on. That's what sets it apart from a traditional ticket system — the agent doesn't have to read an email summary and then open five tabs to find out what was actually said.

## Why this beats an escalation form

Most AI-fronted support solutions fall back to a form when the AI runs out of road: the customer is told to enter name, email and a description of the problem, and waits for a reply in a separate channel. It works, but it costs one thing — the context the customer has already given.

With coreAI's handover, the customer keeps the thread and your team gets a conversation that's pre-qualified. The AI has already asked follow-up questions and pulled relevant information from the knowledge base, so the conversation can continue where the AI left off — not start from scratch.

[Get in touch to enable human handover on your solution](https://coreai.no/en/contact), or see the [handover-to-customer-service solution page](https://coreai.no/en/solutions) to see how the feature works in practice.

---

# Shopping list: turn your chatbot into a sales machine

CoreAI's shopping list feature is a seamless bridge between product advice and purchase. Imagine this: a customer asks your chatbot, "which products do I need to paint a bedroom?" Instead of only listing product names, it shows an interactive shopping list with images, prices, and quantity selectors. The customer adjusts quantities and chooses "add to cart" — without leaving the chat window.

## From question to purchase in seconds

CoreAI turns your chatbot into a sales channel when the customer asks for products, solutions, or recommendations. The shopping list appears where buying intent is already high, and the customer can move straight from answer to cart.

## How it works

### The customer asks a question

The customer asks about products, solutions, or needs. The chatbot analyzes the question and finds relevant products from the knowledge base.

### The AI recommends products

The chatbot replies with product recommendations based on the customer's needs. When the recommendation includes products, the shopping-list button appears.

### The customer sees the shopping list

With one click, the customer opens the shopping list. There they can:

- see every recommended product with a product image
- see product name and product number
- see unit price and stock status
- adjust quantity for each product with plus and minus buttons
- see the total for each product
- add individual products or all products to the cart

### The products are added to cart

When the customer chooses "add to cart", the products are sent directly to the shop's cart. The customer can continue shopping or go straight to checkout.

## Why shopping lists increase sales

### Reduces friction in the buying process

Traditionally, the customer has to:

- read the product recommendation for each product they need
- open each product page in a new tab
- choose quantity for each product
- add each product to the cart separately

With a shopping list, the customer does all of this in one step, directly in the chat window. Fewer clicks means fewer interruptions and higher conversion.

### Captures purchase intent

When the customer gets a good answer and sees the products visually presented, purchase intent is at its peak. The shopping list lets them buy while motivation is high — before they get distracted or change their mind.

### Makes complex purchases simple

Some purchases require several products that belong together. Paint needs a brush and tape. A grill needs charcoal and lighter fluid. Tacos for ten people need many ingredients in the right quantities. The shopping list gathers everything the customer needs in one overview, so they do not have to search for it themselves.

### Increases average order value

When the AI recommends complementary products and the customer can easily add them to the cart, upsell becomes more likely. The customer gets better help, and you get higher revenue.

## Integration with your online store

CoreAI has an SDK for WooCommerce integration, but it can be included in any online store that adds support for CoreAI to add products to the cart via API. This often requires a small adaptation in the store.

The store API needs to support:

- product identification via SKU, product ID, or GTIN
- stock quantity and availability
- error handling for out-of-stock products
- automatic cart updates

### More integrations are coming

Contact us if you use another e-commerce platform.

## Statistics and insight

CoreAI gives you full visibility into how the shopping list performs.

### Conversion rate

See how many people open the shopping list and how many actually add products to the cart. Identify bottlenecks and optimize.

### Products added to cart

Track how many products are added to the cart through the chatbot. Follow trends over time and measure the effect of changes.

### Cart value

Track the value of the products added to the cart. Understand how much revenue the chatbot generates.

### Popular products

See which products are most often recommended and added to the cart. Use the insight to improve product recommendations.

## How to get started

### Step 1: import the product catalog

Make sure your products are imported into CoreAI. You can:

- crawl your online store when it uses Schema.org markup and sitemap.xml
- crawl the store's Google Product Feed
- upload products via API

### Step 2: activate the cart adapter

Go to your assistant in the CoreAI dashboard:

- choose the "general" tab
- scroll down to "cart"
- choose your e-commerce platform, for example WooCommerce
- save the settings

### Step 3: configure the integration

For WooCommerce, you need to set up an endpoint in your online store that receives cart requests from CoreAI. See the documentation for technical details.

### Step 4: test and launch

Test the shopping list in your chatbot. Ask questions about products and verify that they are added correctly to the cart. When everything works, you are ready to increase sales.

## Examples of use

### Hardware store

Customer: "what do I need to install new flooring in a 20-square-meter room?"

CoreAI shows a shopping list with laminate, underlay, skirting boards, tools, and glue — all adapted to the area the customer provided.

### Electronics store

Customer: "I need a home office setup, what do you recommend?"

CoreAI shows a shopping list with a monitor, keyboard, mouse, headset, and webcam — based on the customer's budget and needs.

### Pharmacy

Customer: "I am going to the mountains for Easter, what should I have in my first-aid kit?"

CoreAI shows a shopping list with plasters, bandages, painkillers, sunscreen, and lip balm.

### Grocery store

Customer: "what do I need to make tacos for four people?"

CoreAI shows a shopping list with minced meat, taco shells, seasoning, lettuce, tomato, sour cream, and cheese — in the right quantities.

## Benefits summarized

- Higher conversion: fewer clicks from recommendation to purchase
- Increased order value: easy access to complementary products
- Better customer experience: everything happens in the chat window
- Measurable effect: full statistics for conversion and value
- Simple integration: support for WooCommerce and more platforms

## Ready to turn your chatbot into a sales channel?

The shopping list feature is included in the standard subscription or higher. Activate shopping lists today and see how AI-powered product advice can increase your sales.
