Adding content

Content goes into an index. You can upload files, sync a folder or bucket, or push items from your own app. Use whichever fits, and mix them freely.

Upload files

The quickest way. Datalumo reads PDF, Word, Markdown, HTML, and plain text:

dl upload docs handbook.pdf faq.md policies/*.pdf

In admin: open the index and click Upload files.

Linking back to the source

If your files are also hosted somewhere (a docs site, a bucket), pass the URL so answers can link back to them:

dl upload docs manual.pdf --url https://docs.example.com/manual.pdf

For PDFs, Datalumo tracks which page each passage came from, so a citation links to the exact page, like https://docs.example.com/manual.pdf#page=12. Your users land on the right page, not the top of the document.

Sync a folder or bucket

To keep an index in step with an S3 bucket or a local folder, add a Source. Datalumo pulls new and changed files on a schedule and removes ones that are gone.

In admin: Sources → Add source. Or with the CLI:

dl sync add docs --type s3 --bucket my-bucket --prefix handbook/

Run a one-off pull any time with dl pull. See dl pull --help.

Push from your app

When your content lives in your own database or CMS, push it straight to the API. Each item needs a stable id and the searchable_text to embed:

curl -X POST https://your-domain/v1/indexes/docs/items \
  -H "Authorization: Bearer $ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [{
      "id": "post:123",
      "title": "Refund policy",
      "searchable_text": "You can request a refund within 30 days.",
      "metadata": { "url": "https://example.com/refunds" }
    }]
  }'

Use a stable id like post:123 so updates replace the right item. Send it again with unchanged text and it costs nothing, Datalumo skips it. Change the text and it re-embeds. Push on publish from your CMS and the index stays current with no sync to manage.

Updating and removing

  • Update: send the same id with new text. It re-embeds in place.
  • Hide: set an item's visibility to hidden in admin to drop it from results without deleting it.
  • Delete: remove an item by id, or delete the whole index to start over.

A note on indexes

An index is tied to one embedding model, chosen when you create it. Keep related content together in one index. Use separate indexes when content should never mix in results, for example one per site or per customer.