Devrazzi: filtering developer news through layers of models
ActiveA 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
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.