Trendtracker Connect

Release 0.0.2

topicIds and topicFields are replaced by a single topicQuery expression, and fact requests no longer accept a certainty threshold. Includes a copy-paste LLM prompt to migrate a codebase.

Topic scoping moves from two separate fields to one expression. topicIds and topicFields are gone; topicQuery replaces both on proof-point, fact, and manifestation requests. Fact requests also stop accepting certainty.

These are breaking changes on the new routes introduced in Release 0.0.1. Deprecated /indicators/* routes keep their own topicIds / topicFields / certainty parameters and are mapped internally, so existing integrations on those routes are unaffected.

Breaking request changes

RemovedReplacement
topicIds: [a, b]topicQuery: "a OR b"
topicFields: ["title"]title: prefix per term, e.g. topicQuery: "title:a"
topicFields: ["title", "summary"]One term per field, e.g. topicQuery: "title:a OR summary:a"
topicFields: ["body"] or all fieldsUnprefixed term, e.g. topicQuery: "a"
certainty: 0.8 (facts)title: prefix, which sets the score floor

Requests that still send the removed fields are not rejected — unknown fields are ignored, so an unmigrated caller silently returns unfiltered results. Check for topicIds and topicFields explicitly rather than relying on error responses.

topicQuery syntax

topicQuery is a Lucene-lite expression whose terms are topic UUIDs, not free text. Each UUID matches that topic and its descendants. Consecutive UUIDs are combined with implicit AND. Quotes and body: are rejected.

topicQueryMeaning
aMentions topic A (or children) anywhere
a OR bFormer topicIds: [a, b]
title:aTopic A in title only
title:a AND summary:bTitle has A and summary has B
a NOT bHas A, excludes B
(a OR b) AND NOT cGrouping with parentheses

AND binds tighter than OR, so mix them with explicit parentheses. Operators are case-sensitive: lowercase and is read as a term and fails UUID parsing.

Fields map to title → topics__title, summary → topics__summary, and document or unprefixed → topics.

Certainty on facts

Field prefixes now carry what certainty used to express. On fact routes each topicQuery term sets an IS_ACTIVE_IN score floor:

TermScore floor
title:a80
summary:a60
a or document:a0

certainty remains a response field on organization, investment, and acquisition records, and a valid sortColumn. Only the request filter was removed.

Schemas for all operations are in the OpenAPI spec and the API reference. Machine-readable docs: /llms-full.txt.

Migrate with an LLM

Paste the prompt below into Cursor, ChatGPT, or another coding agent in the repository that calls Connect.

Migrate this codebase off the removed Trendtracker Connect API request fields `topicIds`, `topicFields`, and fact `certainty` onto the single `topicQuery` expression.

Source of truth (fetch these; do not invent schemas):
- OpenAPI JSON: https://connect-api.trendtracker.ai/openapi.json
  (If CONNECT_API is set, use `{CONNECT_API}/openapi.json` instead.)
- Release note with these rules: Connect API docs "Release 0.0.2".

Scope: request bodies sent to /proof-points/*, /facts/*, and /manifestations/search.
Do NOT change callers of deprecated /indicators/* routes: those keep their own
topicIds / topicFields / certainty parameters and are mapped server-side.

Rules:
1. Find every request body, client method, type, fixture, and test that sets
   `topicIds`, `topicFields`, or `certainty` on a /proof-points, /facts, or
   /manifestations call. These fields are silently ignored by the API, so there
   is no error to grep for: search the field names.
2. Replace them with a single `topicQuery` string built from topic UUIDs:
   - topicIds: [a, b]                  -> "a OR b"
   - topicFields: ["title"]            -> "title:a OR title:b"
   - topicFields: ["title","summary"]  -> "title:a OR summary:a OR title:b OR summary:b"
   - topicFields: ["body"] or all      -> "a OR b"   (unprefixed)
   - fact certainty >= 0.8             -> "title:a"  (score floor 80)
   - fact certainty >= 0.6             -> "summary:a" (score floor 60)
   - fact certainty 0                  -> "a"        (score floor 0)
3. Terms must be topic UUIDs. Operators are AND / OR / NOT, uppercase only.
   AND binds tighter than OR, so add parentheses when mixing them.
   Never emit `body:` (use `document:` or no prefix) and never quote terms.
4. Keep reading `certainty` from fact RESPONSES and keep `sortColumn: "certainty"`.
   Only the request filter was removed.
5. If a caller builds topic filters from user input or config, add the join
   logic in one helper rather than at each call site.
6. Update tests and fixtures. Report any caller you could not map.

On this page