Skip to content
Muhammet Şafak
tr

Devrazzi: filtering developer news through layers of models

Active

A content pipeline experiment that screens software and AI news with a local Ollama model, hands the survivors up to DeepSeek, Gemini, OpenAI and Claude, and drafts and publishes Turkish and English syntheses end to end.

Started
June 2026 — Ongoing

Technologies

TypeScript Node.js Prisma PostgreSQL Ollama DeepSeek Gemini OpenAI Claude Fastify Astro

The problem is not scarcity, it is the signal-to-noise ratio. And it is not general tech news either: release notes, model launches, library breakages, engineering write-ups — the software and AI slice a developer can actually use. Devrazzi is an attempt to have a machine do that filtering: pull the sources, score them, drop what falls below the bar, draft the rest as Turkish and English syntheses, publish. The flow runs end to end on its own.

What I tried

A state machine at the core: RAW → EVALUATING → APPROVED/REJECTED → PUBLISHED. The first screen runs locally: a model on Ollama (deepseek-r1:14b) scores every item on four axes — originality, technical depth, pragmatism, ecosystem impact. Below an average of 7, the item dies there. Volume sits at this layer, which makes screening cost nothing.

Whatever clears the bar moves up. The upper layers are the DeepSeek, Gemini, OpenAI and Claude APIs, and none of them does another’s job: each is wired to a distinct step of the pipeline, matched to the context length and quality-versus-cost profile that step demands. The cheap ones see many items, the expensive ones see few. The provider interface is single; model choice is configuration, and a failing provider hands off down the chain. All model output is bound to a strict JSON contract — a response that breaks the contract is not accepted.

Two defences are in from the start: the text sent to the model is truncated (no raw scrape goes in as-is), and system instructions are sanitised so a malicious feed cannot hijack the model. On a pipeline with no human in the middle, neither is optional.

What came out of it

Phase 0 is verified live: 5 sources, 80 RAW items, processed end to end and persisted; the REJECTED path behaved as expected. The base is TypeScript — modular packages (config / core / db / llm / ingestion / pipeline), a Prisma schema, and PostgreSQL 16’s JSONB keeping the raw payload intact. The output is visible at both ends: devrazzi.com and the iOS app.

The known gap is stated plainly: there is no full-article extraction. So sources that feed “a link and two sentences” — Hacker News, Reddit — get filtered out for lack of content. Expected, but not acceptable.

Why it continues

That gap is the next round: without body extraction, the pipeline’s most valuable sources sit in its blind spot. After that comes per-layer cost and quality measurement — which step deserves which model is currently settled by intuition, not by numbers.

Tags: #ai#content-pipeline#automation
Share:

More Experiments

All experiments

Search the site

Start typing to search posts, projects and pages.

Esc to close Powered by Pagefind