Fine-grained rubrics for visual coding
Public visual-coding data has been curated with either a single per-sample score, which provides little diagnostic information about errors, or a task-specific verifier, which does not generalize across tasks. PrismaForge replaces both with a rubric synthesized for each instruction, a weighted set of binary criteria evaluated separately on the program and on its rendered artifact, that first curates the training data and then serves as the RL reward.
Decomposed rubric synthesis
Reusable domain-level checks combined with instruction-specific requirements, with the number of criteria set by the estimated task difficulty, evaluated on the program and on its render. The same rubric curates the data and rewards the policy.
The broadest open dataset
PrismaCoder-2M spans text-centric and vision-centric tasks, from plots and web pages to notation, documents and animation, each sample executed, rendered and rubric-checked.
Open models that rival proprietary systems
PrismaCoder-9B and 35B lead open models by a wide margin and match or surpass proprietary systems on charts, front-end pages and semi-structured documents.
One rubric, two uses
One sample traced through the pipeline: the map follows the paper's pipeline figure, and the panel shows a Web UI task, its rubric, its scores and the gating decision.
The broadest open visual-coding dataset
Seeds from four kinds of sources are converted into self-contained tasks; every candidate is executed through a format-specific gatekeeper and gated by its rubric score. The corpus spans text-centric and vision-centric tasks in ten languages, about two million samples in all.
Python
HTML / CSS
JavaScript
SVG
LaTeX
Mermaid
Vega-Lite
LilyPond
Asymptote
Chemical structures
Visualization fundamentals
Plotting datasets in Python, SVG, Mermaid and Vega-Lite: mapping data to axes and marks, composing legends and layered plots.
Scientific artifacts
Plotting code from GitHub repositories and figures from arXiv papers, split into self-contained units by an AST pass.
Front-end layout and interaction
Pages from WebCode2M and MCD for layout; interactive demos adapted from JanusCoder or rewritten from WebSight, MMMG and ProImageBench prompts for behavior.
Symbolic notation
Molecules seeded from PubChem; LaTeX, Asymptote and LilyPond programs that must compile; Manim scenes from the 3Blue1Brown video code.
Open models that rival proprietary systems
One headline metric per benchmark. The filled shapes are PrismaCoder-9B and 35B, the dashed outline is the strongest open baseline on each axis, and the gold outline is one proprietary model, chosen in the legend. The full tables sit below.
- best open baseline
- PrismaCoder-9B
- PrismaCoder-35B
PrismaCoder exceeds the strongest open baseline on every axis except image-to-SVG, where VinciCoder leads. Relative to Claude Opus 4.6, PrismaCoder-35B is higher on chart reproduction, front-end pages, image-to-SVG and chemical structures; interactive science is the one axis on which the proprietary model retains a wide margin.
PrismaCoder-35B leads the open models on four of the five text-centric benchmarks, with text-to-SVG remaining with Qwen3.5-35B. Claude Opus 4.6 remains ahead on every text-centric axis; the gap is smallest on long-tail plotting and text-to-SVG and widest on artifacts and pandas plotting.
Full table
Best / second among open models. Lower is better where marked ↓.
PrismaCoder-9B and PrismaCoder-35B-A3B are post-trained from Qwen3.5-9B and Qwen3.5-35B-A3B. Data synthesis used frontier models: Claude Opus 4.6 for curation, Gemini 3 Pro for rubric generation, Gemini 3 Flash as the judge for gating and RL. Evaluation follows each benchmark's official protocol, with its designated judge where one is specified, and reports deterministic metrics alongside judge scores.
Rubric efficacy
Three analyses of the primitive itself: as a data filter, as a recipe on other backbones, and in agreement with human judgment.
Rubric filtering outperforms direct judging
Qwen3.5-9B is fine-tuned on two equal-sized subsets of the same pool, one selected by a single holistic score per sample and the other by the PrismaForge rubric. The rubric-filtered model scores higher on every benchmark, by 24 points on Vega-Lite. Since the subsets are equal in size, the gap reflects which samples each judge retains.
- direct judge
- PrismaForge rubric
The recipe generalizes across backbones
The same data and method applied to Gemma-4-31B-it and Qwen3-VL-30B-A3B-Instruct on Python plotting and HTML. On both backbones every metric ends above the base model, and RL adds to SFT on every one; SFT accounts for most of the ChartMimic gain and RL for most of the HTML gains.
- SFT gain over base
- RL gain over SFT
Rubric scores align with human judgment
On 100 training samples rated by annotators, three proprietary judges agree with the human ratings far more closely under the rubric than under direct scoring, in both absolute level and pairwise ordering.
Qualitative examples
Artifacts that run in the page with the code that produced them, followed by benchmark samples with the gold render beside the base model, the SFT-only model and PrismaCoder.
Open models, data and code
Paper
The technical report, with the rubric prompts, data sources and per-benchmark tables.
Code
PrismaForge: rubric synthesis, the per-format gatekeepers, gating and the RL reward.
PrismaCoder-2M
The curated corpus, with each sample's rubric and scores.
PrismaCoder-9B / 35B
Open-weight checkpoints, post-trained from Qwen3.5-9B and Qwen3.5-35B-A3B.
@article{sun2026prismacoder,
title={PrismaCoder: Pushing the Boundaries of Open Multimodal Code Intelligence through Decomposed Rubric Synthesis},
author={Sun, Qiushi and Gong, Jingyang and Liu, Yang and Chen, Qiaosheng and Yin, Zhangyue and Huang, Zixian and Hu, Hanxu and Xiong, Jing and Xu, Fangzhi and Tan, Haochen and others},
journal={arXiv preprint arXiv:2610.20538},
year={2026}
}






















