feyninc/pulpie-orange-small

Model

210M-parameter encoder · 0.862 ROUGE-5 F1 on WebMainBench · the recommended, default Pulpie model.

29

6 commits

1 linked in READMEs

updated Jul 1, 2026

See the code

README

Pulpie Orange

Pulpie Orange Small

Pareto-optimal main-content extraction from HTML.
210M-parameter encoder · 0.862 ROUGE-5 F1 on WebMainBench · the recommended, default Pulpie model.

GitHub · Blog · PyPI


Pulpie Orange Small extracts the main content from raw HTML, stripping navigation, ads, sidebars, and footers. It is an encoder that labels every HTML block as content or boilerplate in a single forward pass, so it approaches state-of-the-art extraction quality while running far faster and cheaper than autoregressive extractors.

At 210M parameters it matches Dripper (0.6B) in quality on WebMainBench (0.862 vs 0.864) while running 20x faster on an L4 GPU. It has the best size-to-quality ratio in the Pulpie family and is the recommended model for production.

Usage

The easiest way to use this model is through the pulpie package, which handles HTML simplification, chunking, classification, and reconstruction:

pip install pulpie
from pulpie import Extractor

extractor = Extractor()               # defaults to pulpie-orange-small
result = extractor.extract(html)

print(result.markdown)                # clean Markdown
print(result.html)                    # clean HTML
print(result.n_main, result.n_other)  # blocks kept vs dropped

Extractor auto-detects CUDA, Apple MPS, then CPU. See the GitHub README for batch and multi-GPU usage.

How it works

Pulpie runs a four-stage pipeline:

  1. Simplify — remove scripts, styles, and formatting noise; tag each block with a unique ID.
  2. Chunk — pack blocks into sequences of up to 8,192 tokens separated by <|sep|> markers (~80% of pages fit in one chunk).
  3. Classify — a single encoder forward pass labels every block (at its <|sep|> position) as content or boilerplate.
  4. Reconstruct — return the kept blocks as HTML, or convert to Markdown.

This model is a token-classification head over EuroBERT-210m, distilled from the 2.1B Pulpie Orange Large teacher (KL-divergence 0.7 + hard-label cross-entropy 0.3, temperature 2.0).

Benchmarks

WebMainBench, English subset (6,647 pages), ROUGE-5 F1:

ModelParamsROUGE-5 F1Throughput (L4)
Pulpie Orange Large2.1B0.8731.3 pages/sec
Dripper0.6B0.8640.68 pages/sec
Pulpie Orange Base610M0.8633.9 pages/sec
Pulpie Orange Small (this model)210M0.86213.7 pages/sec
magic-html-0.700-
Trafilatura-0.619-

Cleaning 1 billion pages on an L4 costs ~$7,900 with Pulpie Orange Small versus ~$159,000 with Dripper. Full analysis in the blog post.

Model family

ModelParamsROUGE-5 F1Use case
pulpie-orange-small210M0.862Recommended — best value, fastest
pulpie-orange-base610M0.863Balanced
pulpie-orange-large2.1B0.873Highest quality (teacher)

Acknowledgements

Pulpie builds directly on the work of the MinerU-HTML and Dripper team (Ma et al., 2025). Their simplify_html preprocessing, block-level annotation scheme, and the WebMainBench benchmark are foundational to this work. Built on EuroBERT (Boizard et al., 2025).

Citation

@note{pulpie2026,
  title  = {Pulpie: Pareto-Optimal Models for Cleaning the Web},
  author = {Minhas, Bhavnick and Nigam, Shreyash and Feyn Research},
  year   = {2026},
  venue  = {Feyn Field Notes}
}

Built by Feyn. Model weights licensed under CC BY-NC 4.0 (non-commercial); contact team@usefeyn.com for commercial licensing. The pulpie library is Apache 2.0.

boilerplate-removal
content-extraction
custom_code
encoder
endpoints_compatible
eurobert
html
safetensors
token-classification
transformers
web-scraping

Contributors

bhavnicksm

6 commits

feyninc/pulpie-orange-small

Model

210M-parameter encoder · 0.862 ROUGE-5 F1 on WebMainBench · the recommended, default Pulpie model.

29

6 commits

1 linked in READMEs

updated Jul 1, 2026

See the code

README

Pulpie Orange

Pulpie Orange Small

Pareto-optimal main-content extraction from HTML.
210M-parameter encoder · 0.862 ROUGE-5 F1 on WebMainBench · the recommended, default Pulpie model.

GitHub · Blog · PyPI


Pulpie Orange Small extracts the main content from raw HTML, stripping navigation, ads, sidebars, and footers. It is an encoder that labels every HTML block as content or boilerplate in a single forward pass, so it approaches state-of-the-art extraction quality while running far faster and cheaper than autoregressive extractors.

At 210M parameters it matches Dripper (0.6B) in quality on WebMainBench (0.862 vs 0.864) while running 20x faster on an L4 GPU. It has the best size-to-quality ratio in the Pulpie family and is the recommended model for production.

Usage

The easiest way to use this model is through the pulpie package, which handles HTML simplification, chunking, classification, and reconstruction:

pip install pulpie
from pulpie import Extractor

extractor = Extractor()               # defaults to pulpie-orange-small
result = extractor.extract(html)

print(result.markdown)                # clean Markdown
print(result.html)                    # clean HTML
print(result.n_main, result.n_other)  # blocks kept vs dropped

Extractor auto-detects CUDA, Apple MPS, then CPU. See the GitHub README for batch and multi-GPU usage.

How it works

Pulpie runs a four-stage pipeline:

  1. Simplify — remove scripts, styles, and formatting noise; tag each block with a unique ID.
  2. Chunk — pack blocks into sequences of up to 8,192 tokens separated by <|sep|> markers (~80% of pages fit in one chunk).
  3. Classify — a single encoder forward pass labels every block (at its <|sep|> position) as content or boilerplate.
  4. Reconstruct — return the kept blocks as HTML, or convert to Markdown.

This model is a token-classification head over EuroBERT-210m, distilled from the 2.1B Pulpie Orange Large teacher (KL-divergence 0.7 + hard-label cross-entropy 0.3, temperature 2.0).

Benchmarks

WebMainBench, English subset (6,647 pages), ROUGE-5 F1:

ModelParamsROUGE-5 F1Throughput (L4)
Pulpie Orange Large2.1B0.8731.3 pages/sec
Dripper0.6B0.8640.68 pages/sec
Pulpie Orange Base610M0.8633.9 pages/sec
Pulpie Orange Small (this model)210M0.86213.7 pages/sec
magic-html-0.700-
Trafilatura-0.619-

Cleaning 1 billion pages on an L4 costs ~$7,900 with Pulpie Orange Small versus ~$159,000 with Dripper. Full analysis in the blog post.

Model family

ModelParamsROUGE-5 F1Use case
pulpie-orange-small210M0.862Recommended — best value, fastest
pulpie-orange-base610M0.863Balanced
pulpie-orange-large2.1B0.873Highest quality (teacher)

Acknowledgements

Pulpie builds directly on the work of the MinerU-HTML and Dripper team (Ma et al., 2025). Their simplify_html preprocessing, block-level annotation scheme, and the WebMainBench benchmark are foundational to this work. Built on EuroBERT (Boizard et al., 2025).

Citation

@note{pulpie2026,
  title  = {Pulpie: Pareto-Optimal Models for Cleaning the Web},
  author = {Minhas, Bhavnick and Nigam, Shreyash and Feyn Research},
  year   = {2026},
  venue  = {Feyn Field Notes}
}

Built by Feyn. Model weights licensed under CC BY-NC 4.0 (non-commercial); contact team@usefeyn.com for commercial licensing. The pulpie library is Apache 2.0.

boilerplate-removal
content-extraction
custom_code
encoder
endpoints_compatible
eurobert
html
safetensors
token-classification
transformers
web-scraping

Contributors

bhavnicksm

6 commits