Skip to content

Docs

Cookbook: Autoresearch Feature Discovery

Turn wine tasting notes into 67 numeric columns for a CatBoost regressor: five rounds of reading its own errors cut held-out RMSE from 3.09 to 1.77 across 800 unseen reviews.
Format
Docs
Reading time
3 min
Published by
TypeSafe AI
Last verified
Sep 2026

Highlights

  • 2,000 WineMag reviews: 1,200 dev rows drive the loop and 800 stay held out, scored once at the end.
  • 38 questions became 29 Score questions (mean plus spread, 58 columns) and 9 Nouls, for 67 features total.
  • RMSE fell from 3.09 predicting the mean to 2.47 word-count, 2.15 TypeSafe score, 1.87 one proposal, and 1.77 after five rounds.
  • One request per row per round, run with 8 concurrent workers.

Quickstart

python
def feature_questions(features: list[dict]) -> dict:
    questions = {}
    for feature in features:  # intensity -> Score, presence -> Noul
        if feature["kind"] == "intensity":
            questions[feature["name"]] = Score(
                instructions=feature["question"], criteria=INTENSITY_LEVELS)
        else:
            questions[feature["name"]] = Noul(
                instructions=feature["question"], criteria=PRESENCE_CRITERIA)
    return questions

response = client.system_one(  # 38 questions x 2,000 notes -> 67 model columns
    state=note, questions=feature_questions(features), model=TYPESAFE_MODEL)

Watch out

Request count grows with rows rather than questions: 100,000 rows means 100,000 requests per round.

Questions about this entry

Short answers drawn from the linked project or page.

Reactions & coverage

Posts, threads, and videos about this entry from around the web.

X: A 26-sheet plan set in 2.9 seconds

X: Which exam questions come back

X: 900 images in 40 seconds

From the Jev guides

Original write-ups on what this entry is for.

From the Jev AI model community

Posts from builders shipping with Jev right now.

Follow @typesafeai