Desert Ant Labs

Gist: On-device Content Topic Tagging

Content topic taggingAvailable

On-device topic tagging that reads any text (a title, a post, a description) and returns the topics it is about, from a fixed 36-topic taxonomy across 101 languages, entirely on device.

Gist takes a piece of text and returns its topics, multi-label, from a fixed 36-topic taxonomy. "How to film a two-person podcast with two iPhones" returns technology and creator-economy; "Cómo invertir en fondos indexados" returns finance. It is cross-lingual by construction, so the same topics come back across 101 languages.

A compact two-stream classifier (a frozen multilingual static embedding plus hashed n-grams into a small head) keeps it fast and server-free, with no transformer at inference and zero per-call cost. Per-item scores can be aggregated across a collection into channel-level or feed-level topics.

Demo

Performance

36 topics across 101 languages, from a ~74 MB model, or ~15 MB English-only.

101
Languages
36
Topics
91%
recall@3
~74 MB
On-device

Recall on 572 human-labeled real posts. Internal measurements.

Use cases

Feed and content routing

Tag posts, articles, or videos by topic on device, so a feed can sort, filter, or route content without a classification API.

Channel and creator profiles

Aggregate an account's posts into channel-level topics to describe what a creator or feed is about.

Ranking and moderation signals

Add a cheap, private topic signal to recommendation or moderation pipelines, with no per-call cost.

On-device organization

Group a user's own notes, bookmarks, or library by topic, entirely offline.

What it does

  • 36-topic taxonomy, multi-label: most items carry two or three topics.
  • Cross-lingual by construction across 101 languages.
  • Two-stream classifier, no transformer at inference, zero per-call cost.
  • Compact English-only variant (~15 MB) for English-only apps.

Platforms and install

iOS, macOS
Install
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/gist", from: "2.1.0")
Example - Swift
import Gist

let gist = Gist()
let topics = try await gist.classify("How to start a podcast with just your iPhone")
// [Topic(slug: "technology", ...), ...]
Android
Install
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:2.1.0")
Example - Kotlin
import ai.desertant.gist.Gist

val gist = Gist(context)
val topics = gist.classify("How to start a podcast with just your iPhone")
// [Topic("technology", ...), ...]
Web, Node.js
Install
npm i @desert-ant-labs/gist @litertjs/core
Example - TypeScript
import { Gist } from "@desert-ant-labs/gist";

const gist = await Gist.load();
const topics = await gist.classify("How to start a podcast with just your iPhone");
// [{ slug: "technology", name: "Technology & Software", score: 0.91 }, ...]
Add Gist with your AI coding assistant
Prompt
Add Gist from Desert Ant Labs to this project.

On-device topic tagging that reads any text (a title, a post, a description) and returns the topics it is about, from a fixed 36-topic taxonomy across 101 languages, entirely on device.

SDKs (use the one that matches this project's platform):

Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/gist
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/gist", from: "2.1.0")

Kotlin (Android)
Repo: https://github.com/Desert-Ant-Labs/gist
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:2.1.0")

JavaScript / TypeScript (Web, Node.js)
Repo: https://github.com/Desert-Ant-Labs/gist
npm i @desert-ant-labs/gist @litertjs/core

Reference:
- Model page: https://desertant.com/models/gist/
- Full catalog and other models: https://desertant.com/llms.txt

Add the SDK that matches this project's platform, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.

Specs

Languages
101
Topics
36, multi-label
On-device size
~74 MB multilingual, or ~15 MB English-only
Approach
Two-stream classifier: a multilingual static embedding plus hashed n-grams

FAQ

What is Gist?

On-device topic tagging that reads any text (a title, a post, a description) and returns the topics it is about, from a fixed 36-topic taxonomy across 101 languages, entirely on device.

Does Gist run on device?

Yes. Gist runs entirely on device: inference happens locally with no server call, so data never leaves the device.

Which platforms does Gist support?

Gist ships as native on-device SDKs for Swift, Kotlin, JavaScript / TypeScript.

How much does Gist cost?

Every model is free up to 100k monthly active devices per SDK. Unlimited inference per user. Contact us for custom licenses.

How accurate or fast is Gist?

36 topics across 101 languages, from a ~74 MB model, or ~15 MB English-only.

Resources