Answers from your own data
Kaleidr takes your own data in two separate ways. They are different features with different purposes, and the one you use depends on what you want the data to do.
- Datasets on a map are files you add to a map in Kaleidr Studio: a spreadsheet of stores, a GeoJSON file of districts, a GPX track. They are available on every plan to a signed-in user, and they are what you build a map from. The published map shows them to its visitors, and Studio's AI assistant answers questions about them while you work.
- Business data in AI answers is your organization's own places, with their opening hours, rates, availability and documents, which Kaleidr looks up when it answers a question, in Kaleidr Studio and through your API keys. It is available to Enterprise organizations.
This page lays the two side by side, covers datasets on a map in full, and then walks the Enterprise path from uploading a file to seeing your own places arrive in an answer.
Two ways to bring your data
| Datasets on a map | Business data in AI answers | |
|---|---|---|
| Plans | Free, Pro and Enterprise | Enterprise only |
| Who adds the data | A signed-in user, on a map they are editing | An owner or admin of the organization |
| What you upload | Files: tables (CSV, TSV, TXT, XLSX, XLS, ODS), geographic files (GeoJSON, JSON, KML, GPX, Shapefile) and GeoTIFF image overlays | Your organization's places, opening hours, room types, rate plans, nightly rates, availability and documents, as a .csv or .json file |
| Where | The Data panel of a map in Kaleidr Studio | The Data for AI Answers section of the same panel, or the upload API |
| What the data belongs to | The map you added it to | The organization, on every one of its maps |
| What it is used for | Drawing the data as a layer on that map, in Studio and for visitors of the published map, and answering your questions about the dataset in Studio's AI assistant while that map is open | Answers: Kaleidr looks the data up when a question is asked, in Kaleidr Studio and on calls made with a key that carries the vendor scope |
| Reached through an API key or the SDK | No | Yes |
| Limits | By plan: see Dataset limits | Set in the organization's agreement |
The two do not feed each other. A dataset on a map is not looked up by answers made with an API key, and business data published for AI answers does not add a layer to a map.
Datasets on a map: Free, Pro and Enterprise
Sign in to Kaleidr Studio, open a map and open the Data panel. Choose + Upload Dataset, then Choose file and pick the file, check the preview, and choose Add Data. The file is stored with your account and belongs to that map.
Without an account there are no saved maps and no file uploads. Studio offers one unsaved draft in the browser, and asks you to sign up when you add a file.
Pasted JSON is stored inside the map. The uploader also takes JSON pasted as text: an object with columns
and rows. There is no file to store, so the rows are written into the map itself. This is the same for every
user, signed in or not: a guest can add pasted JSON to the browser draft without the sign-up prompt. Pasted
JSON is not a stored dataset and is not counted against the dataset limits.
What you can add
| Kind | File types |
|---|---|
| Tables | CSV, TSV, TXT, XLSX, XLS, ODS |
| Geographic files | GeoJSON, JSON, KML, GPX, Shapefile |
| Image overlays | GeoTIFF |
What a dataset does
- It is drawn on the map you are editing. In Studio, the dataset appears as a layer of the map it was added to, and you style it like any other layer.
- Visitors of the published map see it. When you publish the map or create a share link, the datasets and image overlays the map draws are drawn for visitors too, in the embedded viewer and on the share link. A published map shows the map as it is currently saved, so a dataset you add to a map that is already published is public as soon as the map is saved, with no re-publish. Only data the published map includes is served. Deleting the dataset stops it everywhere, share links included; unpublishing the map stops its embeds and leaves share links working. Uploaded data on a published map has the rules.
- Studio's AI assistant answers questions about it while that map is open. The assistant works on every row of the dataset, not on a sample: it can filter, sort, count, total, average and group the rows, and find the rows near a point or inside an area. See Ask the assistant about a dataset.
- Studio detects which column names each row. After an upload, the dataset has a Name, a Category, a Description and an Address column where Studio found one, and you can correct them. See Column roles.
- It is not read through an API key or the SDK. Bringing your data into answers on your own site or backend is the Enterprise path below.
- Visitor AI Chat can answer from its rows, where that is available. On a published map, Visitor AI Chat can answer from the rows of the datasets the map draws when the dataset has a Name column and point coordinates. This is not on for every map: see Answers from the map's own places.
Ask the assistant about a dataset
Open the map in Studio and ask Studio's AI assistant in plain language. The assistant answers from the whole dataset, so a count is a count of every row and a ranking is a ranking of every row, whatever the size of the file.
| You can ask it to | Example question |
|---|---|
| Describe the data | "What is in stores.csv, and which column should I color the map by?" |
| Filter the rows | "Which stores have revenue over 500,000?" |
| Sort and rank | "List the ten stores with the highest revenue." |
| Count, total and average | "How many stores are in Texas, and what is their average revenue?" |
| Group by a column | "How many stores are there per city?" |
| Find rows near a point or inside an area | "Which stores are within 2 kilometers of latitude 47.6062, longitude -122.3321?" |
How the answers behave:
- A description covers every row. For each column the assistant knows its type, how many cells are empty, how many distinct values it holds, its smallest and largest value, and its most frequent values.
- A column is a number column only when every value in it is a plain number. A table you upload is stored
with the spaces around its headers and values removed. A column then counts as a number column only when
every non-empty value is a plain number with digits on both sides of any decimal point: one
.5or5.in the column makes it a text column. - An answer can say how many rows matched in all. When a question matches 4,200 rows, the assistant has the figure 4,200 even though the result lists only some of those rows.
- Text is compared without regard to case. "texas" finds "Texas".
- Near and inside questions need coordinates. They work on rows that have a point location. An area is a rectangle given by its west, south, east and north edges.
- The assistant can move the map to what it found. It answers from the rows and can move the map to them. To see the rows on the map, draw the dataset as a layer.
What it does not do:
- One dataset at a time. A question is answered from one dataset. The assistant does not join two datasets or compare rows across them in one step. On a map with several datasets, name the one you mean.
- At most 100 rows or groups in one result. A longer result is cut at 100; the count of matching rows still covers all of them. Ask for the following rows to continue, or narrow the question.
- The open map's data only. The assistant reads the datasets of the map you have open, not those of your other maps.
- It reads the data and never changes it. The assistant does not edit, add or delete rows. To change the data, upload the file again.
Column roles
A column role says what a column means for each row. After an upload, Studio detects four of them from the column headers and from what the columns hold:
| Role | The column that holds | What it does |
|---|---|---|
| Name | What each row is called: a store name, a venue, a site | It is what Studio's AI assistant, and a published map's chat, call each place. |
| Category | The kind of thing the row is | Tells the assistant what kind of place a row is. A published map's chat reads it with the name. |
| Description | A sentence or two about the row | Tells the assistant what a row is about. A published map's chat reads it with the name. |
| Address | The row's street address | Tells the assistant which column is the address. |
A role is empty when Studio found no column that fits. A dataset can have all four, some, or none.
To check or correct them:
- Open the map's Data panel and find the dataset.
- Open the Column Roles fold on the dataset's row. Under the line "The Name column is what the AI assistant calls each place." there are four menus: Name, Category, Description and Address.
- In a menu, choose the column that holds that role, or None to leave the role empty. Each menu lists the dataset's own columns.
What you should see: "Saving...", then "Saved" beside the menu. A change is saved when you make it; there is no separate save button. If it cannot be saved you see "Could not save. Try again." and the menu goes back to the column it had.
Things to know:
- Set the Name column for a dataset of places. A published map's chat reads only datasets that have a Name column, because without one a row has nothing to be called by.
- A replacement upload keeps the roles you set. In Studio, uploading a file with the same name stores a new dataset in place of the earlier one. Studio detects the new dataset's roles, then carries over each role the earlier dataset had, as long as the new file still has that column. A role whose column is gone from the new file keeps what Studio detected: open the fold after the upload and check it.
- An image overlay has no columns, so it has no Column Roles fold.
Dataset limits
| Limit | Free | Pro | Enterprise |
|---|---|---|---|
| Rows in one dataset | 50,000 | 100,000 | 100,000 |
| Size of one uploaded file | 32 MiB | 64 MiB | 64 MiB |
| Rows across all of the organization's datasets | 250,000 | 5,000,000 | Set in your agreement |
100,000 rows in one dataset and 64 MiB for one file are ceilings on every plan, Enterprise included. Only the total across the organization is set in an Enterprise agreement.
Two limits are the same on every plan:
| Limit | Value |
|---|---|
| Features in one geographic file (GeoJSON, KML, GPX, Shapefile) | 50,000 |
| Size of one image overlay | 16 MiB. This bounds the image Studio makes from a GeoTIFF and sends to be stored, not the GeoTIFF file you choose. The GeoTIFF file itself can be up to 64 MiB on every plan. |
How the limits behave:
- A limit refuses a new upload only. Data that is already stored is kept, including when an organization moves to a plan with a lower limit.
- A refused upload tells you which limit it met. Studio shows the message with a link to upgrade. The
response behind it is HTTP 402
quota_exceeded; Errors lists its fields. - Two ceilings apply on every plan, and they are a different refusal. Whatever the plan, one dataset holds at most 100,000 rows and one file is at most 64 MiB. A file or a dataset over a ceiling is refused with HTTP 400 and a validation error, not with the 402: it is too large for Studio, and no plan change admits it. Split the file into smaller ones. A geographic file of more than 50,000 features and an image overlay over 16 MiB are refused the same way.
- The total counts rows, not files. It is the sum of the rows in all of the organization's datasets, and the upload being checked counts with its own rows. Deleting a dataset frees its rows.
- Data stored inside a map is not counted. JSON pasted into the uploader is written into the map itself, so it is not a stored dataset and none of these limits applies to it.
The plan is your organization's Kaleidr plan, the one you buy and change on kaleidr.com/billing. Studio has no plan of its own: the number of maps an organization can keep and the dataset limits above both follow that plan.
To get more: move from Free to Pro. On Pro or Enterprise, contact Kaleidr and a higher total is set for your organization. Only the total can be raised that way: the rows in one dataset and the size of one file stay within the ceilings on every plan.
When an upload does not go through
Studio reads the file in your browser to show the preview, then sends the file to be stored.
Studio checks the file against your plan first. As soon as you choose a file, before anything is sent, a
file over your plan's size is refused with "<name>" is 40.0 MB — the limit is 32 MB. and a table with too
many rows with "<name>" has 60,000 rows — your plan allows 50,000 per dataset., each with an Upgrade
Plan link. The link appears only when a higher plan would admit the file. A file over a ceiling is refused
the same way on every plan, with no link: a file over 64 MiB gets the size sentence, and a table of more than
100,000 rows gets "<name>" has 120,000 rows — the maximum is 100,000 per dataset. The sentences from the
server in the table below are therefore what you see mainly for the total across your organization.
What happens when sending the file fails depends on why. A refusal is the server's answer about your account or your file, and nothing is added to the map. Only when the server could not be reached does Studio keep the data another way.
| What happened | What Studio does |
|---|---|
| The upload is over a plan limit (HTTP 402) | Refuses the file. The server's sentence, which names the limit, is shown next to the upload control with an Upgrade Plan link. Nothing is added to the map. |
| You are signed out (401) | Refuses the file: "Your session expired. Sign in again, then add the file." Nothing is added. |
| Your account may not add data to this map (403) | Refuses the file: "You don't have permission to add data to this map." Nothing is added. |
| The file is too large to send (413) | Refuses the file: "<name>" is too large to upload. Nothing is added. |
| Too many uploads at once (429) | Refuses the file: "Too many uploads right now. Wait a moment, then try again." Nothing is added. |
| Any other refusal, including the 400 for a file or dataset over a ceiling | Refuses the file with the server's sentence, or "<name>" was not added: the server did not accept the file. Nothing is added. |
| No answer from the server, a timeout or a server fault | If the table is within your plan's limits (its rows fit one dataset and fit the rows your organization has left), the rows are stored inside the map instead, with the warning "Stored in the map instead of on the server. Large files will make editing slower." If it is not, or the limits are not known at that moment, nothing is added: Couldn't reach the server to store "<name>". Check your connection, then try again. An image overlay is stored inside the map in this case. |
Data stored inside the map this way behaves like pasted JSON: it travels with the map, including to visitors of the published map, and it is not a stored dataset. To move it to your account, delete it from the map and upload the file again when the server can be reached.
Delete or replace a dataset
Each dataset in the Data panel has a trash control on its row.
- A stored dataset is deleted for good. Studio asks first: "Delete this dataset for good? Its data is removed from the server and stops showing on the published map and its share links. This cannot be undone." Choose Delete to go ahead or Cancel to leave it. Studio shows "Deleting…", then removes the dataset and the layers that draw it from the map.
- Its rows are freed from the organization's total.
- It stops being served on the published map and on every share link that drew it. A browser that already loaded the data keeps it, and a download link already issued can stay readable for up to one hour.
- If the delete fails, Studio says "Couldn't delete this dataset. Nothing was changed." and the dataset stays on the map.
- Data stored inside the map (pasted JSON, or rows kept in the map after a failed upload) is removed from the map at once, with no confirmation: there is nothing stored on the server to delete.
Uploading a file with the same name replaces the earlier dataset. The new dataset takes the place of the old one on the map, and the earlier one is deleted once the new one is stored and read, never before. The column roles you set on the earlier dataset are carried over to the new one. What Studio tells you when the replacement does not complete:
| What happened | What Studio does |
|---|---|
| The new file cannot be read | The map goes back to the earlier data, and the new file is discarded. Studio shows the reason, then The earlier copy of "<name>" was kept, and the map shows it again. |
| The new file is still being read when Studio stops waiting for it | Nothing is deleted yet. Studio shows The earlier copy of "<name>" is still stored and still counts toward your plan's rows. The earlier copy is deleted once the new file has been read. |
| The earlier copy cannot be deleted | Studio shows The earlier copy of "<name>" could not be deleted and still counts toward your plan's rows. |
Undo does not bring the data back. Undo in Studio can restore the map's reference to a dataset you deleted. The data is gone, so that layer is not drawn.
Business data in AI answers: Enterprise
The rest of this page is the Enterprise path. Kaleidr can draw on data your organization uploads (your places, their opening hours, room types, rates, availability and documents) when it answers a question.
Five facts first:
- Uploading is part of the Enterprise plan. An organization owner or admin uploads the data. An organization on Free or Pro cannot upload it.
- The data is used in two places. Kaleidr Studio's assistant answers from it for the organization's
signed-in members, while the organization is on Enterprise. Reading it through an API key or the SDK needs a
key that carries the
vendorscope, which only an Enterprise organization can create. - The data is looked up when a question is answered. Unpublishing a release stops answers from drawing on it at once.
- Answers use your data alongside Kaleidr's general knowledge. They are not restricted to it.
- Your data is yours alone, and you can take it back out. It is isolated per organization and is never used in answers on Kaleidr's own consumer map or for any other organization. An owner or admin can unpublish and delete a release on any plan.
Availability by plan
| Plan | Upload business data, and use it in Kaleidr Studio | Use the data through an API key or the SDK (the vendor scope) |
|---|---|---|
| Free | No | No |
| Pro | No | No |
| Enterprise | Yes, within the limits set in your agreement | Yes |
In words: business data in AI answers is an Enterprise feature, in both halves. Free and Pro bring their own data to Kaleidr as datasets on a map.
More availability facts:
- The plan that counts is the organization's Kaleidr plan, the one you buy and change on kaleidr.com/billing. Studio has no plan of its own.
- There is one upload screen, and it is in Kaleidr Studio: the Data for AI Answers section at the bottom of the Data panel of any map. An owner or admin of an organization that may upload sees the whole screen. Upload in Kaleidr Studio walks through it, and What the section shows when you cannot upload covers everyone else.
- The upload API does the same thing. The screen and the API are one pipeline with the same checks, limits and releases, so you can stage a file in one and publish or inspect it in the other.
- Uploading is done by a person with the owner or admin role in the organization, signed in to their Kaleidr account. It is not done with an API key.
- You can ask what your organization may upload.
GET /shared-api/datahub/limitsanswers on every plan: it returns whether the organization may upload, its plan and its limits, withcan_upload: falsebelow Enterprise.
On Free and Pro, the upload calls return 403 vendor_data_not_on_plan, and a request to create a key with
vendor is refused with 403 tier_capability_not_allowed.
The path, end to end
1. Upload and publish 2. Mint a key with 3. Ask 4. See it worked
(owner/admin, in Studio the vendor scope (chat or stream, (place events with
or by API) with that key) source: "vendor")
file ──► preview ──► release ──► key ──────────────────────► request ─────────────► stream
(draft) (published) kld_pk_… or kld_sk_… /chat/control/stream
All four steps need Enterprise. Inside Kaleidr Studio, the path is step 1: once a release is published, members of your organization who are signed in to Kaleidr Studio can ask Studio's assistant about the data on any of the organization's maps. Steps 2 to 4 bring the data into your own site or backend through an API key.
For the API and the SDK, all four steps must hold. If any one is missing, answers still arrive; they are built from general knowledge only, and nothing in the response says your data was skipped.
Step 1: Upload and publish a release
Who: an owner or admin of an Enterprise organization. On Free and Pro the upload calls return 403
vendor_data_not_on_plan.
An upload creates a draft release. Nothing reads a draft. A release has to be published before any answer can use it, and publishing replaces the previously published release as a whole.
You can do this step on a screen or with the API. Both stage a preview, show what was understood, and publish as a second, separate action.
Upload in Kaleidr Studio
-
Sign in to Kaleidr Studio and open any map. The data belongs to your organization, not to the map you open, so it does not matter which one.
-
Open the Data panel and scroll to the bottom. Open the section titled Data for AI Answers.
What you should see: a Choose a File box and a Releases list. In the box, one line states your organization's limits: how many places and documents it can upload, and the largest file it accepts. It is followed by "Need more than your plan includes?" and a Contact Us link. If the section is missing, or shows a one-line note or only the Releases list instead of the box, see What the section shows when you cannot upload.
-
Under Choose a File, choose Choose File and pick a
.csvor a.jsonfile no larger than the size in that line.What you should see: the file's name on the button, and a line that says which kind of file it is. A
.csvis "A spreadsheet. Propose a mapping, correct it if needed, then preview." A.jsonis "A data bundle. No mapping is needed, so go straight to preview." A file over your limit is not read, and you see a message that gives the file's size and your limit. -
For a
.csvonly: under Column Mapping, choose Propose Mapping. Kaleidr reads your header row and a few sample rows and proposes which column means what. Each proposal spends some of your organization's AI credits.What you should see: "From the sample rows:" followed by how many items the mapping produced from those rows (Places, Room Types, Rate Plans, Nightly Rates, Availability), and the mapping itself under Edit Mapping, as JSON. Review it. If a count is missing or a column is wrong, correct the JSON. Your rows are never rewritten; only the mapping changes. A places CSV that already uses the fixed column names needs no mapping: skip this step.
If the organization's AI credits are used up you see "Your organization's AI credits for this period are used up. You can still write the mapping by hand." with an Upgrade Plan link. Open Edit Mapping and write the JSON yourself; previewing and publishing do not spend AI credits.
-
Choose Preview. The file is uploaded and staged as a draft.
What you should see: the counts of what Kaleidr understood, per kind of data, and "Staged as a draft. Nothing is live until you publish. Publishing replaces the data your organization has published now." If the file could not be read you see "Staging failed. Nothing was published." with the problems listed by row. Fix the file or the mapping and preview again.
-
Choose Publish.
What you should see: "Publishing…", then "Published. Kaleidr AI now answers from this data."
-
Check the Releases list under the steps. The release you published is at the top, marked Published, with its date. The Releases list explains the other labels and what each row offers.
Things the screen does on purpose:
- Publish is never part of Preview. Nothing is live until you choose Publish.
- Changing the mapping after a preview discards that preview. You see "The mapping changed. Preview again before you publish." and Publish is unavailable until you do.
- A preview counts as an upload toward the hourly limit in Limits. If you reach it you see "Your organization has reached the hourly upload limit. Previews count toward it. Wait, then try again."
- A long-running upload is not lost. If you see "Still working. Check again in a few minutes.", choose Check Again.
- A file over a count limit is refused when you preview it. You see "The upload was rejected:" followed by the reason, which names the limit that was exceeded and the plan.