Skip to main content
Integration guide

Imported Data

Bring exports from custom tools and data sources into Kinn.

Connect with
Upload a data file
Scope
Named collections
Direction
Read-only

Imported Data lets you bring structured exports into Kinn when there is no dedicated integration for the system they came from. Group related records in a named collection, map the file's columns to Kinn fields, and make each record searchable alongside your connected sources.

Uploading data does not give Kinn access to the system that produced it. Kinn only reads the files you choose to upload.

What you can import

Kinn accepts:

  • CSV files
  • Excel workbooks (.xlsx)
  • JSON Lines files (.jsonl or .ndjson), with one JSON object per line

Each file can contain up to 100,000 rows, 500 columns, and 50 MB of data. CSV files need a header row. For an Excel workbook with multiple worksheets, you choose the worksheet after uploading. Nested objects in JSON Lines files are flattened into fields you can map.

When you create a collection, choose how Kinn should treat its documents:

  • Feedback — for tickets, reviews, survey responses, and other customer feedback. Kinn makes the records searchable and detects sentiment and language.
  • Reference data — for documentation, research, knowledge-base exports, and other background material. Kinn makes the records searchable without assigning sentiment.
note

The collection type applies to every document in that collection and cannot be changed later. Create separate collections when you have both feedback and reference material.

How to import a file

  1. Go to Settings → Integrations → Add Integration → Imported Data.
  2. Give the collection a name, add a description that tells Kinn when to use it, and choose Feedback or Reference data.
  3. Select Create collection, then upload a supported data file.
  4. Review the preview. If you uploaded an Excel workbook, choose the worksheet you want to import.
  5. Map an External ID and at least one Searchable content column. You can also map a title, author, timestamp, and external URL.
  6. Select Apply revision and wait for indexing to finish.

Kinn suggests mappings for common column names, but you can change them before applying the import. Selecting multiple searchable-content columns combines their labeled values into one searchable document.

The external ID must be present and unique within an upload. It is the stable identifier Kinn uses to recognize the same record in later revisions. Rows without an external ID or searchable content are skipped. If you do not map a timestamp, Kinn uses the upload time.

Preparing web data with an LLM

An LLM with web-browsing or browser-automation tools can collect data from a website that does not offer a convenient export, then save it as JSONL for Kinn. This works well for public feedback pages, public knowledge bases, and other consistently structured pages.

Before collecting anything:

  • Make sure you have permission to collect and use the data. Follow the site's terms, robots.txt, rate limits, and applicable privacy rules.
  • Do not ask the LLM to bypass a login, paywall, CAPTCHA, access control, or other restriction.
  • Limit the request to the pages and date range you actually need. Remove secrets and unnecessary personal or sensitive information before importing.
  • Choose a durable external ID, such as the site's record ID or canonical URL. Use the same ID in future exports so Kinn updates the existing document instead of creating a duplicate.
  • Inspect a sample and verify URLs, dates, authors, and content before importing the full file. LLMs can omit records or produce inaccurate fields.

Paste this prompt into an LLM that can browse the web and create files. It will ask you for the source URL and how much data to collect before it begins:

Create a Kinn-ready import from a public website. Before browsing, ask me for:
1. The URL of the starting page, unless I have already provided it.
2. The collection scope: a maximum number of records, a date range, or every
available record.

Wait for both answers before browsing. Apply the scope I choose, following
pagination and links to individual record pages when needed, but stay on the
same website. If I choose every available record, continue until you have
exhausted the permitted public pages or cannot find any new records. Skip
navigation, advertisements, cookie notices, repeated boilerplate, empty pages,
and duplicate records.

Only access public pages that the site permits automated clients to access.
Respect robots.txt, the site's terms, and rate limits. Do not bypass logins,
paywalls, CAPTCHAs, or other access controls. If access is blocked or permission
is unclear, stop and report it instead of working around the restriction.

Create a UTF-8 JSONL file named kinn-import.jsonl. Write exactly one valid JSON
object per line with these fields:
- external_id: the source's stable record ID; if none exists, use its canonical URL
- title: a concise source title, without inventing information
- content: the relevant record text, preserving its meaning and useful context
- author: the displayed author, or an empty string
- originated: the publication timestamp in ISO 8601 format, or an empty string
- external_url: the canonical URL of the source record
- metadata: a JSON object containing other useful, verifiable source fields,
such as category, rating, tags, product version, location, or engagement
counts; use an empty object when no additional metadata is relevant

Use consistent metadata keys and value types across records. Include only fields
that help identify, filter, or understand the records; do not duplicate the
standard fields inside metadata. Use null for a metadata value that is missing
from an individual record. Do not wrap the output in a JSON array or a Markdown
code fence. Do not invent missing values, records, quotes, URLs, dates, or
metadata. Deduplicate records by external_id. Validate every line as JSON before
saving the file, then report the file path, record count, skipped pages, and any
fields that could not be verified.

Upload the resulting file and map external_id to External ID, content to Searchable content, and the remaining fields to their matching optional fields. Kinn flattens nested JSON objects, so fields such as metadata.rating and metadata.category appear as separate columns in the mapping preview. You can include useful metadata columns in Searchable content when you want Kinn to search their values. Start with a small file to confirm the mapping before collecting a large dataset.

Updating a collection

To refresh imported data, open Settings → Integrations → Imported Data, choose the collection, and upload another file as a new revision.

Records whose external IDs already exist in the collection are updated; new IDs are inserted. A revision does not remove existing records merely because they are absent from the new file. The collection page reports inserted, updated, unchanged, and skipped rows and retains applied uploads in its revision history.

Mappings from the previous revision are suggested for the next upload, and you can review or change them before applying it.

You can also attach a supported file in chat and ask Kinn to create a collection or update an existing one. Tell it which column contains the stable external ID and which columns contain searchable content. This option requires the Editor or Admin role. See Analyzing your files for examples.

Review imported data

Open Imported Data from your product navigation to see collection and document totals, feedback sentiment, and document activity over a selected date range. The Documents tab lets you search imported titles, content, authors, and external IDs; filter by collection, type, or feedback sentiment; and sort the results.

caution

Deleting a collection permanently deletes all of its imported documents and revision files.

What you can now ask

  • What issues appear most often in our imported support tickets?
  • Summarize the strongest themes in our survey responses.
  • Which imported requests also appear in Discord and app-store reviews?
  • What does our imported research say about onboarding?
  • Find the source record for this result.