Avijit-Kumar-GIT / Avijit-Kumar-GIT/fella

folder-QA v2: qualitative/research-style questions — and the grading problem they create

Open
#89 1 comment 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
0
Forks
0
Avg merge
5h 19m
Merged PRs (30d)
72

Description

Sub-thread of #68, flagged as the biggest lift of the three v2 tiers because it needs new grading infrastructure, not just new cases.

**What's missing.** Every case in the battery today (v1 and the two sibling v2 issues) is ultimately a numeric/categorical/text lookup with one deterministic gold. Real users also ask genuinely open-ended, qualitative questions that have no single correct answer:

- **Synthesis over free text** — "summarize what happened in my journal this year," "what patterns do you notice in my spending habits," "what's changed about my routine since spring."
- **Cross-signal reasoning that isn't a single aggregate** — "did my mood track with how much I worked out," "what tends to happen around my big spending months" — combining a qualitative signal (journal text) with a quantitative one (workouts/spend) in a way that doesn't reduce to one SQL query.
- **Narrative/holistic requests** — "tell me about my year," "how am I doing financially, overall."

**Why this needs its own design work, not just cases.** `gen.py`'s gold types (`figures`/`approx`/`contains`/`refusal`/`notool`) assume an exact or substring-matchable answer. A synthesis answer has no single correct string. Options, roughly in order of effort:

1. **"Must mention K of N key facts"** — extend `contains` (or a new gold type) to partial credit: gold lists N facts the answer should touch (e.g. 3 of 5 specific journal themes, or the correct direction + rough magnitude of a trend), scored as a fraction rather than all-or-nothing.
2. **Rubric-based LLM-judge grading** — `agent_eval` already has `--judge ` support; define a per-case rubric (what a good answer covers, what it must NOT claim) and have the judge score against it. Needs judge-consistency validation (does the judge agree with itself / a human across a re-run) before it's trusted as a metric, the same rigor the deterministic golds got.
3. **Periodic human spot-check** — not automated at all, just a manual audit on a sample each time the loop changes. Cheapest, least scalable, best as a stopgap while (1)/(2) get built.

**Recommendation:** prototype small (5-10 cases) with option 1 first since it stays deterministic and fits the existing tooling with the least new infrastructure; treat option 2 as the real long-term answer once there's a rubric-writing pattern worth standardizing.

Related: #68 (parent), #84 (surfacing low confidence) — a synthesis answer with no crisp gold is exactly the kind of case where visible confidence-signaling matters most.

Contributor guide

Open the contributing guide

Research direction

Start with gen.py's existing gold types and agent_eval's --judge path, then review the current deterministic cases and grading tests. Prototype 5–10 qualitative cases using partial-credit key facts, and define how scores and missing facts are reported; done means the prototype runs through the existing evaluation flow and its scoring is validated against the expected facts.

Written by the indexing model from the issue text.

Assessment

Tech stack
ollama, python, sql
Domain
ai, testing, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.