Skip to content

vgi-typesafe

VGI worker that exposes System One choice, noul and score as DuckDB table functions you can LATERAL join to classify whole tables.

Librarybeta

Overview

vgi-typesafe exposes TypeSafe's System One questions as DuckDB table functions through Query.Farm's VGI extension. After installing the VGI community extension, you attach the worker (fetched and run by uvx) and create a typesafe secret with your key, which is redacted in duckdb_secrets().

You can then ask one question about a value with SELECT choice, confidence FROM typesafe.main.choice(...), or put the function in a LATERAL join to run the same question for every row of a table. Answers come back as columns, not prose, and confidence tells you which rows are safe to act on without a human. It has CI, including live tests, and lint and type checks. Because each row is a separate request in a LATERAL join, the confidence column is what lets you decide which rows to act on automatically and which to review.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich team should handle this?shipping · billing · returns

How it works

  1. INSTALL and LOAD the vgi extension in DuckDB.
  2. ATTACH the typesafe worker and create a secret.
  3. Call choice, noul or score in a query or LATERAL join.
  4. Filter rows by confidence.

Strengths

  • Classify whole tables in SQL.
  • Nothing to clone; uvx runs the worker.
  • Key redacted in DuckDB secrets.

Caveats

  • One API request per row in LATERAL joins.
  • Requires DuckDB with the VGI extension and a TypeSafe key.

Getting started

INSTALL vgi FROM community; LOAD vgi; ATTACH 'typesafe' (TYPE vgi, LOCATION 'uvx --from git+https://github.com/Query-farm/vgi-typesafe vgi-typesafe');

At a glance

Type
Library
Status
beta
Language
Python
Runtime
DuckDB VGI worker
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

Frequently asked questions

How do I classify a table?

Use the choice function in a LATERAL join over the table.

Where is the key stored?

As a DuckDB secret, redacted in duckdb_secrets().

Do I need to clone anything?

No, uvx fetches and runs the worker.

Related projects

  • dbt package and Terraform module adding jev_noul, jev_choice, jev_score and jev_ask SQL functions to Snowflake.

    LibrarybetaSQL
  • Ruby gem that stores Jev Noul, Choice and Score answers about a record's text as ordinary ActiveRecord columns you can query.

    LibrarybetaRuby
  • Nushell plugin that asks Jev noul, choice and score questions about a state or each table row, returning typed answers to filter.

    PluginbetaRust
  • Portable SQLite C extension depending only on libcurl that adds jev_noul, jev_choice and jev_score SQL functions.

    PluginbetaC
  • Python batching proxy that asks the same Jev questions about many states and streams answers back as Apache Arrow tables.

    ProxyprototypePython
  • DuckDB extension and Python package for semantic SQL that batches row-level filters, joins and classification on Jev.

    PluginresearchC++