LLM settings
Which model plans/generates SQL, and which model checks its work β set globally, overridable per group.
| Group | Primary | Judge | Reason |
|---|---|---|---|
| Business Process Investigation | claude-sonnet-5 | qwen2.5-7b-instruct | default β no override |
| Retail Operations | claude-sonnet-5 | claude-sonnet-5 | high query volume β judge upgraded after accuracy dipped on promo-pricing questions |
| Risk Management | qwen2.5-7b-instruct | qwen2.5-7b-instruct | local-only β position/compliance data must not leave the network |
Data sources
Every connected system, in its native protocol. Filter by the group it's assigned to.
Context builder
Upload a document once and it becomes part of a group's permanent knowledge base β every future question can draw on it. Different from a chat attachment, which only applies to that one message.
| File | Group | Uploaded | Status |
|---|
PDF Extract
Turns a folder of PDFs into live, queryable data β PDF β AI Extract β Ground β JOIN β Answer. Backed by this project's own PdfFieldExtractor (OCR fallback via PdfOcrEngine when a page has no text layer) β no separate ETL pipeline, no pre-processing step.
JOIN against the system of record β an ungrounded field blocks the join for that row rather than risk a false mismatch.A field name typed into PDF_EXTRACT(...) is a guess about a folder's vocabulary until it's tested against real documents. This samples a batch, runs extraction + grounding on every one, and reports two separate numbers per field β claim rate (does the model find this field at all?) and grounding rate (when it does, is the value actually on the page?) β clustered by which fields each document actually has, so one bad vendor template can't hide inside a blended average.
PDF_EXTRACT() is a real table function β no separate extraction step to run firstSELECT x.po_number, x.amount_due AS pdf_amount, x.grounded, po.total_amount AS sap_amount
FROM PDF_EXTRACT('s3://po-documents/', schema => 'po_number,vendor,amount_due') x
JOIN sap_orders.purchase_orders po ON po.po_number = x.po_number
WHERE x.amount_due <> po.total_amount
Groups
A group is the access + LLM boundary a business user actually sees β one place to ask, not a list of systems to know about.
Users & access
Which group(s) each user can ask questions within. A user sees only the sources their group grants β nothing else.
| User | Role | Groups granted | Row/column policy |
|---|
USER_ATTRIBUTE('desk') reads from here| User | Attribute | Value |
|---|
| Kind | Table | Policy | Applies to |
|---|
Skills
Reusable, admin-authored instructions for a recurring analysis workflow. Business users invoke one by typing /skill-name in Ask, or ThinkingSense loads it automatically when a question matches its trigger.
Prompt templates
Reusable question phrasings a business user picks and fills in themselves β lighter-weight than a Skill (no matching logic, no instructions, just a starting shape for a common question). Values are never auto-filled; the user always fills in the {placeholder}s.
Knowledge signals
Knowledge surfaced from real conversations, not written from scratch β a business question's answer already states a fact worth keeping; this is where an admin reviews it before it becomes trusted, reusable knowledge.
Slack
Turns a Slack channel into a shared place for data questions β link a channel to a group's data area, then anyone in that channel can ask ThinkingSense by mentioning it, with the answer posted as a thread so the main channel stays readable.
| Channel | Data area (group) | Linked by | Status |
|---|
Question activity
Every real natural-language question asked of ThinkingSense, from either entry point β the built-in Ask app or Claude via MCP β lands in the same log. This is the raw signal Ontology review and Rollup suggestions are both scanned from.
| Time | Question | Source | User | Group | Status |
|---|
Reviewed queries
Curated NL β SQL pairs a business question can always trust β the admin-facing counterpart to this project's own QuestionBankGenerator/QuestionBankRetriever. Marking a pair reviewed means the exact wording and its SQL are vetted, not just plausible.
| Question | Group | SQL | Status |
|---|
Negative feedback
Every π tagged in Ask lands here β the aggregated view of what's getting flagged, separate from any single answer's feedback thread.
| Time | Question | Group | Tag |
|---|
Domain health
A composite score per group β illustrative weighting, but every input is a real, live count from this console (ontology backlog, open negative feedback, rollup coverage, skills defined), not a fabricated number.
Ontology review
Relationships inferred from real query history, value overlap, and business-user feedback β nothing gets used by NL2SQL until reviewed here.
| Relationship | Source | Confidence | |
|---|---|---|---|
| salesforce.opportunity_id β sap.order_id | Query-log mined (17 occurrences) | Auto-accepted | β |
| salesforce.commercial_exceptions.account_id β sap.credit_holds.account_id | Data-driven profiling (value overlap) | Needs review | |
| slack.exception_threads.order_ref β sap.orders.order_id | Query-log mined (5 occurrences) | Conflicting type | |
| novalogs.inventory_events.sku β novamart.products.sku | π 3 flagged answers Retail Operations β βinventory total didnβt match the product I asked aboutβ | Needs review |
Rollups
Pre-aggregated tables that transparently speed up matching queries β suggested automatically from real repeated NL2SQL history across every group.
Structural matching only β same table + group-by + aggregations after redacting literals.
Federation plans
Real federated-query plan history β measured per-backend timing, not just the planner's own pre-execution estimate.
| # | Group | Backends | SQL | Elapsed | Rows | Status | |
|---|---|---|---|---|---|---|---|
| #1 | Business Process | sap_orderssalesforceslack | SELECT h.reason, COUNT(*)β¦ | 612 ms | 4 | OK | βΈ |
| #2 | Retail | novamartnovalogs | SELECT ie.sku, ie.on_hand⦠| 468 ms | 5 | OK | ⸠|
SQL Playground
Manual SQL exploration against any registered backend, independent of NL2SQL β for validating joins, checking row counts, and debugging what a generated query would actually return.
Knowledge playground
An isolated workspace for drafting, refining, and validating a query before it becomes a trusted, reusable answer β separate from live chat, so iterating here never clutters a real conversation.
Evaluation
Prompt sets with expected SQL, run against NL2SQL to measure accuracy over time β the same shape as this repo's own Nl2SqlEvalTest suite, exposed here for ad hoc admin runs.
| Name | Group | Prompts | Last accuracy | |
|---|---|---|---|---|
| bp-core-questions | Business Process | 18 | 94% | |
| retail-inventory-suite | Retail | 12 | 91% | |
| risk-limit-checks | Risk | 9 | 86% |
| Set | When | Passed | Accuracy |
|---|---|---|---|
| bp-core-questions | 2 days ago | 17 / 18 | 94% |
| retail-inventory-suite | 5 days ago | 11 / 12 | 91% |
| risk-limit-checks | 1 week ago | 7 / 9 | 86% |
Agents
A digital worker configured once and left running β retrieves data, runs analysis, and delivers results on a schedule instead of waiting to be asked.
| Name | Trigger | Last run | Delivery | Status |
|---|
| Run | Result | Status |
|---|
Advanced
Per-group display, scheduling, and chat-behavior settings.
Policies are configured in Users & access.
Developers
Embed ThinkingSense in your own product, and manage programmatic access.
| Name | Key | Created | Last used |
|---|
<iframe src="https://app.thinkingsense.ai/embed/chat?group=retail-operations&token=SESSION_JWT" style="width:100%;height:640px;border:0"> </iframe>
| SSO group | ThinkingSense group |
|---|---|
| okta-finance-ops | Business Process Investigation |
| okta-retail-analytics | Retail Operations |
| okta-risk-desk | Risk Management |
SCIM base URL: https://app.thinkingsense.ai/scim/v2 β new members provisioned into their mapped group automatically on next login.
Help requests
A user who's stuck can flag an admin directly from Ask β separate from π feedback on a specific answer, this is "I need a person," not "this answer was wrong."
| Time | User | Group | Message |
|---|
Organizations
ThinkingSense is multi-tenant β this admin console is scoped to whichever organization is active, switchable from the topbar.
| Organization | Plan | Seats | Created | Status |
|---|
Ask
Same one place to ask, whichever group you're in β try all three teams.
Signed in as Sam Chen Β· Finance Ops β group: Business Process Investigation
This demo answers the pre-loaded scenarios above β try one, or type close to it. Type / for skills, Tab to accept a suggestion, or press βK / Ctrl K anywhere to jump around.
Dashboards
Answers you've pinned from Ask, laid out as a living page. Viewed live in the app, every widget re-runs against the same governed pipeline β but a shared link serves a pre-computed snapshot instead, so opening it never re-queries your sources.