feat(insights): use Jev to check that insight claims attach numbers to the right metric, population and period
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
Línea de trabajo
Start with apps/insights/src/agent.ts and evals/quality.ts, then trace the existing evaluateWithJev calls and the evals README failure example. Review how results.json and the finish tool handle evaluation output. Done means the staged eval, log-only runtime check, and eventual enforcement path are defined and covered by the known-bad calibration case.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
@izadoesdev
Problem
validateNumericGrounding (apps/insights/src/agent.ts) checks that every number in a published claim appears somewhere in the claim's cited sources. It doesn't check that the number belongs to the metric, population, period, or direction the claim attaches it to. The evals README records the failure this leaves open:
a brief assigned transaction count 100 to gross revenue 10000; the number-presence guard accepted it because 100 existed elsewhere
Revenue now avoids this through structured field selections, but per the README every other source still relies on the numeric guard. Catching misattribution in those cases is manual today: evals/quality.ts writes the semantic rubric in plain English as reviewRequired (for example "verify every final count against its exact date range and population … The 200 entrants are eligible website visitors, not login attempts"), and each of those cases prints REVIEW REQUIRED for a person to check.
Proposal
Use Jev, the evaluation model insights already calls through evaluateWithJev, as a semantic judge, rolled out so nothing blocks production until it has proven itself:
- Evals only. In
evals/quality.ts:- each
reviewRequiredrubric becomes a Jevbooleanquestion over the final outcome and the tool results it cites - each string evidence claim gets
booleanquestions for metric, population, period, and direction attribution against its resolved sources - probabilities are recorded in
results.json, and the summary sortsREVIEW REQUIREDcases by the judge's uncertainty, so review starts with the ambiguous ones instead of all of them - a small frozen set of known-bad outcomes (starting with the transactions-as-revenue case above) acts as a calibration check. If Jev can't separate these from correct outcomes, we stop here with a cheap negative result.
- each
- Runtime, log-only. Run the per-claim check in the finish tool for string claims, record the verdicts as log fields, and don't change behaviour.
- Enforce. When a claim is confidently misattributed, return a tool error naming the claim and the mismatch (metric, population, period, or direction), so the agent corrects it within its existing finish attempts, the same way numeric-grounding errors work today.
The questions for one finish attempt go in a single batched request through the existing evaluateWithJev, which bills input tokens only.
Questions
-
Is steps 1 → 3 the rollout you'd want, or should this stay an eval-only tool?
-
Should a confident mismatch block publication, or only demote the outcome to private?
-
Beyond insights, where else would you want Jev in analytics? Some I considered:
- uptime content checks: a 200 response that is actually an error, challenge, maintenance, or empty page, since monitors only look at status codes today
- long-tail error cause triage per fingerprint: deploy/chunk-load skew, third-party script, network, or app bug
- session outcome classification: intent and whether the visitor finished or got stuck, from sampled event trails
- referrer spam detection on distinct referrer domains
I'd like to hear which of these you'd prioritise, or whether there's a use case you already have in mind.
Disclosure: I used Claude Code to trace the grounding validation and eval runner and to draft this write-up; I verified the file references and README quotes by hand.
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.2k
- Forks
- 227
- Merge medio
- 21 h 11 min
- PR fusionados (30 d)
- 238
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de databuddy-analytics/Databuddy
-
Load docs analytics using Next.js ScriptPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 74/100
databuddy-analytics/Databuddy#1147 ·
Los mantenedores suelen responder en 1 día
-
Make the GTM documentation test compatible with Windows line endingsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
databuddy-analytics/Databuddy#1146 ·
Los mantenedores suelen responder en 1 día
-
Fix locale-dependent number formatting on the pricing pagePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
databuddy-analytics/Databuddy#1145 ·
Los mantenedores suelen responder en 1 día
-
fix(basket): redact sensitive params and keep query separators in batched outgoing link hrefsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
databuddy-analytics/Databuddy#1143 ·
Los mantenedores suelen responder en 1 día
-
refactor(home): standardize "Install tracking" empty state using EmptyState componentPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
databuddy-analytics/Databuddy#1138 ·
Los mantenedores suelen responder en 1 día
Todos los issues de databuddy-analytics/Databuddy
Issues similares
-
[good first issue, hacktoberfest] 🏯 Hacktoberfest Task - Add new Japan Fact 898 (good-first-issue)Abiertocommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
lingdojo/kana-dojo#33145 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
code-yeongyu/senpi#4278 ·
Los mantenedores suelen responder en 1 día
-
[Bug] Activity | The activity list ignores taskIds and returns the activities of every taskPosiblemente ocupada @NdekoCode la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
ever-co/ever-gauzy#11469 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
griffinwork40/agent-afk#4408 ·
Los mantenedores suelen responder en 1 día