Skip to content

Assessment: L1 Eliminatory filters, Post-Processing & Results page#188

Open
vprashrex wants to merge 6 commits into
devfrom
feat/assessment-pipeline-l1
Open

Assessment: L1 Eliminatory filters, Post-Processing & Results page#188
vprashrex wants to merge 6 commits into
devfrom
feat/assessment-pipeline-l1

Conversation

@vprashrex
Copy link
Copy Markdown
Collaborator

@vprashrex vprashrex commented Jun 2, 2026

Target Issue: #187

Summary

Extends the assessment flow from a single LLM pass into a configurable pipeline:
Mapper → Eliminatory → Evaluation → Post Processing → Review. Adds pre-filtering to cut LLM cost on irrelevant rows, post-processing to shape results without manual spreadsheet work, and a dedicated full-page results view.

What users can do

  • Eliminatory (L1) filters — optional pre-filters run before the LLM batch:

    • Topic Relevance — gates rows; decision=REJECT rows are excluded from Evaluation and flagged in the export. Ships with a default rubric, editable in an expandable editor.
    • Duplicate Detection — passthrough on rows that passed Topic Relevance; appears in the export, does not gate Evaluation.
  • Post Processing — define rules applied at export time, available both as a pipeline step and as a panel on completed runs ("Apply & Preview"):

    • Computed columns via formulas with @column autocomplete + an operator toolbar (@Novelty_score + @Feasibility_score)
    • Filter (AND logic) across =, ≠, >, <, ≥, ≤, contains, is empty …
    • Sort by priority order (asc/desc)
  • Results page — preview opens at /assessment/results/[runId] as a full-page spreadsheet view (replaces the modal), with editable-state persistence.

  • At-a-glance signals

    • L1 stats on each run (passed / rejected counts)
    • Latest provider · model badge on saved config cards
    • New pipeline statuses (l1_processing, l2_processing, l1_failed)
    • Attachment columns support mixed type (image or PDF per row)

vprashrex added 3 commits May 25, 2026 11:03
…test model information

- Added `latestModelByConfig` to `AssessmentConfiguration` and `SavedConfigs` components to track the latest model for each config.
- Updated `SavedConfigCard` to display the latest model information if available.
- Introduced `useLatestConfigModels` hook to fetch and manage the latest model data for each config.
- Created a new `ExpandIcon` component for UI consistency.
- Implemented `FormulaInput` component for enhanced formula editing with at-mention support.
- Refactored assessment results handling to include new post-processing configurations and improved data normalization.
- Added new types for L1 configurations and post-processing settings in the assessment types.
- Updated constants and utility functions to support new features and improve code maintainability.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 2, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: bd403b91-cf40-4fc9-9ede-462a281b1b28

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/assessment-pipeline-l1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@vprashrex vprashrex requested a review from Ayush8923 June 2, 2026 03:53
@vprashrex vprashrex self-assigned this Jun 2, 2026
@vprashrex vprashrex added enhancement New feature or request ready-for-review labels Jun 2, 2026
Copy link
Copy Markdown
Collaborator

@Ayush8923 Ayush8923 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve with few comments.

Comment on lines +35 to +37
const [headers, setHeaders] = useState<string[] | null>(null);
const [rows, setRows] = useState<string[][] | null>(null);
const [error, setError] = useState<string | null>(null);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move these useState related hooks calling above of the runId.

Comment on lines 7 to +8
import DownloadIcon from "@/app/components/icons/assessment/DownloadIcon";
import LoadingSpinner from "@/app/components/assessment/LoadingSpinner";
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BTW this is not good practices, import every component individually. Create the one index.ts file inside the assessment and then import the file from there.
like this:

import { DownloadIcon, LoadingSpinner } from "@/app/components/icons/assessment";

{i + 1}
</span>

<select
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use the Select component here.

Comment on lines 7 to +8
import DownloadIcon from "@/app/components/icons/assessment/DownloadIcon";
import LoadingSpinner from "@/app/components/assessment/LoadingSpinner";
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why we are not using the existing Loader component here?

columns: string[];
placeholder?: string;
className?: string;
/** Show operator toolbar above the input. Default true. */
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don;t need these type of small js comments.

failed_runs: failedRuns,
};
}
// Metadata/system fields excluded when deriving post-processing column names.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this too.

}

export interface PostProcessingPanelProps {
/** Seed columns — overridden by fetchColumns when panel opens */
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/** Seed columns — overridden by fetchColumns when panel opens */

export interface PostProcessingPanelProps {
/** Seed columns — overridden by fetchColumns when panel opens */
availableColumns: string[];
/** Called once when panel first opens to get actual column names */
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/** Called once when panel first opens to get actual column names */

- Implemented a new route for resuming assessment runs via POST /api/v1/assessment/runs/:id/resume.
- Introduced PrefilterStep component to handle topic relevance and duplicate detection configurations.
- Updated ColumnMapperStep to support attachment type mapping with mixed values.
- Modified ConfigPanel to integrate PrefilterStep and manage prefilter configurations.
- Enhanced EvaluationsTab to allow resuming failed assessment runs.
- Updated assessment results handling to reflect new prefilter stages and statuses.
- Refactored constants and types to accommodate prefiltering logic and new stage labels.
- Improved utility functions for managing assessment results and spreadsheet snapshots.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request ready-for-review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Assessment Pipeline: Add L1 (Eliminatory) filters, post-processing & results view

2 participants