Odel
PJQ — Public Judgment Quotient

PJQ — Public Judgment Quotient

@makaricTypeScriptApache-2.0Updated 2mo ago

Observatory of public media reception: classify YouTube comments for mood, support and controversy.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

PJQ — Public Judgment Quotient

A seismograph for public opinion. PJQ measures how an audience actually received a piece of media — separating genuine opinion from fan noise, bots, and self-promoters.

Live: pjq.life · License: Apache-2.0


What this is

PJQ takes the URL of a piece of content (YouTube today; Reddit, Telegram, and News next), samples the comments under it, and classifies every comment against a 7-category stance rubric. The output is a verdict: a numeric reception score (mood) plus a structured breakdown — how many people substantively agreed, how many pushed back, how many stayed neutral, and how much noise is drowning the signal.

Think of it as an observatory of media reception, exposed over two transports on one core:

  • a REST API (/api/v1/*) for analytics automation, and
  • an MCP server (/mcp/) so AI agents (Claude Desktop and friends) can run analyses and read verdicts directly inside a chat.

What's in this repository

This repo is the open client + specification of PJQ. The hosted analysis engine (sampling, classification, QA, the ONNX stance model and the prompt internals) stays closed — it is the product's moat. What's open here is everything you need to use, integrate with, and understand PJQ:

web/    — the full web client (React + TypeScript + Vite SPA, 5 languages)
spec/   — the conceptual specification
          ├── CONCEPT.md          what PJQ is and why
          ├── RUBRIC.md           the 7-category stance rubric (definitions)
          ├── domains.yaml        the 11-domain content taxonomy
          ├── FEATURED.md         the open, automatic showcase-ranking formula
          └── verdict-schema.md   the shape of a verdict (API output)
docs/   — integration reference
          ├── api-reference.md    REST API surface
          ├── mcp-reference.md    MCP tools and schemas
          └── user-guide/         end-user guide (EN + RU)

The 7-category rubric (in one breath)

Every comment gets exactly one of: SUP (substantive support), AGA (substantive against), NEU (neutral), OFF (off-topic), THIN (thin positive — praise without an argument), SUS (inorganic — bot / paid / coordinated), AGN (own agenda — the comment is a vehicle for the author's external goal).

Reporting rule: opinion metrics (mood, support) are computed strictly from SUP / AGA / NEU. THIN / OFF / SUS / AGN are counted separately and never inflate support percentages. See spec/RUBRIC.md.

Running the web client

The client is a standard Vite SPA. By default it talks to the hosted backend at pjq.life (same-origin in production).

cd web
npm install
npm run dev      # dev server with hot reload
npm run build    # production build (with build-time SEO prerender) -> dist/

To point the client at a different backend, copy web/.env.example and set VITE_API_BASE.

Integrating

  • REST API — get an API key from the Cabinet on pjq.life, then see docs/api-reference.md. Read-only tools cost no credits; a full analysis costs one credit.
  • MCP — point an MCP-capable client at https://pjq.life/mcp/ and see docs/mcp-reference.md for the exported tools.

Comment raw texts are never returned over the API — only aggregates, percentages, and a small set of representative exemplars, per PJQ's privacy policy.

Status

PJQ is live and in active development. The roadmap is public at pjq.life/flightlog. This repository tracks the client and the spec; engine changes ship to the hosted service.

License

Copyright 2026 PJQ (github.com/Makaric). Licensed under the Apache License, Version 2.0 — see LICENSE.

Русская версия: README_RU.md.