JZAI Consensus Tool is a multi-AI consensus platform that queries six leading AI models simultaneously, scores their agreement, and synthesizes a verdict. For high-stakes questions — medical, financial, legal, technical — cross-model agreement is more reliable than any single AI answer.
Core insight: when independent AI models with different training data, different architectures, and different companies all agree, that agreement is signal. When they disagree, the disagreement itself is valuable — it tells you the question is genuinely contested.
ChatGPT (OpenAI) · Claude (Anthropic) · Gemini (Google) · Meta AI (Meta) · Grok (xAI) · Perplexity Sonar (Perplexity AI). Each brings different training data, reasoning styles, and knowledge sources. Perplexity is the only model with live web access — it searches before answering.
Gemini 2.5 Flash scores agreement and synthesizes the verdict. It is not one of the six query models — no conflict of interest. It reads all responses, identifies the plurality position, counts how many models agree, computes the consensus score, and writes the narrative verdict.
JZAI is not a search engine, not a single chatbot, and not a replacement for professional advice. It is an agreement-detection layer across multiple AI systems. Always verify critical information independently — especially medical, legal, and financial answers.
Type your question in the Ask box. The more specific and detailed your question, the more useful the consensus. Vague questions get vague answers across six models.
All six models are active by default. Tap any model pill to toggle it off. Toggled-off models are grayed out and excluded from the query. Use this to:
Below the text box, a toggle reads "Request citations & sources from each AI." When ON, a citation instruction is appended directly to your question text. Models are instructed to cite specific publications, websites, organizations, or studies for each claim. Citations are model-provided and unverified — cross-check critical claims independently.
Each AI responds in its own card. Response time is shown in the lower-left corner of each card. Cards are color-coded by AI. URLs in responses are clickable links.
After all responses arrive, Gemini Flash scores agreement and writes the verdict. The verdict panel contains:
Four buttons appear below the verdict:
You have 4 total rounds per question session (1 initial + 3 follow-ups in any combination). Devil's Advocate and "What would change this?" each consume one round. Round count is shown as pills in the follow-up bar. Single-AI mode has no round limit.
Phase 2 added eight new capabilities. All are live at ai.johnzur.com as of S9.
Clicking "Devil's Advocate" fires this prompt to all active models, using the actual verdict text:
Use case: Any time you get a high-consensus answer on a medical, financial, or legal question, run Devil's Advocate before acting on it. A 100% consensus that statins are first-line for LDL may still overlook statin-intolerant patients, low-risk primary prevention populations, or newer agents with incomplete trial data. Devil's Advocate will surface those gaps.
Fires this prompt using the actual verdict text:
Use case: Investment or business decisions. If the consensus is "buy index funds over active management," ask "What would change this?" — the models will name specific market conditions, time horizons, tax situations, or research findings that would reverse that recommendation for your specific case.
The Gemini Flash scorer is instructed: "If any model raised a point, fact, or piece of reasoning that no other model mentioned, note it explicitly." This surfaces as a "Unique Insight" block in the verdict, styled distinctly from the main sections. If all models covered the same ground, the block does not appear.
Why it matters: In a 6-model query, minority perspectives are often correct. One model citing a 2023 JAMA study that contradicts the consensus is more valuable than five models repeating the same guideline. Outlier detection prevents that signal from being buried.
The balance pill in the header fetches GET https://openrouter.ai/api/v1/credits on page load. The response returns total_credits and total_usage. Remaining balance = total_credits − total_usage. After each round, the actual per-call cost (from usage.total_cost in the completion response) is subtracted from the displayed balance. The pill color changes automatically as the balance drops.
The score is computed entirely in JavaScript from exact counts. The model never does math — it only classifies. This prevents score drift.
| Score | Label | What It Means |
|---|---|---|
| 100% | Strong consensus | All responding AIs agreed on the same conclusion |
| 83% / 80% / 75% / 67% | Majority agreement | Clear majority agrees — minority dissent present |
| 60% / 50% | Mixed — read carefully | Slim majority or split — read individual responses |
| 40% / 33% / 25% / 20% / 17% | No consensus | No clear majority — models reached different conclusions |
| 0% | No agreement | Every model reached a different conclusion |
| ≤33% with agreement_count ≤1 and 3+ AIs | No consensus — verify independently | Fragmented split — question is genuinely contested. Do not act on this without independent research. |
AI models are non-deterministic. Each call uses temperature-based sampling, so two identical questions to the same model will produce slightly different answers. On factual questions with clear answers, scores are stable. On contested questions (medical treatment choices, investment strategies, political analysis), the score reflects genuine uncertainty — variance from run to run is itself signal.
Models whose conclusion matches the plurality winner are marked ✦ (navy). Models whose conclusion differs from the majority are marked ◇ (gray). Outliers are not wrong — they may be the most valuable responses. Always read outlier cards before acting on the consensus.
Scenario: You've been prescribed a statin for high LDL. You want to understand the evidence before your next appointment.
Scenario: You're deciding whether to take Social Security at 62, 67, or 70.
Scenario: You read a news story claiming a drug interaction is dangerous and want to verify it.
Scenario: Finding a Medicare doctor who accepts Mutual of Omaha Medigap near Bedminster, NJ.
Scenario: You need to choose a database for a new application.
The Training tab in the main app teaches effective AI prompting. Five sub-pages, each navigable as a separate destination.
| Sub-Page | What It Teaches |
|---|---|
| Why Consensus? | The rationale for multi-AI agreement vs. single-AI trust. When to use JZAI vs. a single AI assistant. |
| How to Ask | Question structure, specificity, context-loading. The difference between a weak and a strong question with real examples. |
| Reading Results | How to interpret agreement scores, outlier cards, and the verdict sections. What "no consensus" actually means. |
| Advanced Techniques | Model toggling strategy, follow-up sequencing, using Devil's Advocate and "What would change this?" effectively. |
| Limitations | What JZAI cannot do. Training cutoff dates, hallucination risk, when not to rely on AI consensus. |
All API calls route through OpenRouter (openrouter.ai) — a single aggregator for all six models plus the scorer. You pay OpenRouter; they pay the underlying providers. One API key, one bill, one balance.
| Model | Approx. Cost/Query | Notes |
|---|---|---|
| ChatGPT (GPT-4o) | ~$0.012 | 950 token budget |
| Claude (Sonnet 5) | ~$0.018 | 1,500 token budget |
| Gemini 2.5 Pro | ~$0.045 | 4,000 token budget — thinking model burns extra tokens |
| Meta AI (Llama 4 Scout) | ~$0.001 | Cheapest model in lineup |
| Grok 4.20 | ~$0.008 | 3,000 token budget — verbose on complex questions |
| Perplexity Sonar | ~$0.005 | Plus $0.004/request for web search |
| Gemini Flash (scorer ×2) | ~$0.004 | 1,500 token budget, runs twice per query |
| Total per full 6-AI query | ~$0.09–$0.15 | Varies by question complexity and response length |
Each follow-up round carries the full conversation history. By round 4, each model's context includes 3–4 prior exchanges (~5,000 tokens). Cost per follow-up round is similar to the initial query. Devil's Advocate and "What would change this?" cost the same as a standard follow-up.
The balance pill in the header shows your remaining OpenRouter credit. When it turns amber (below $2) or red (below $1), add credits at openrouter.ai/credits before running more queries. The tool will fail silently if the balance hits zero — models return errors and cards show "Unavailable."
| Component | Technology | Details |
|---|---|---|
| Hosting | Netlify | Auto-deploys from GitHub main branch. CDN-delivered. Free tier. |
| DNS | GoDaddy | ai.johnzur.com CNAME → Netlify CDN |
| Repository | GitHub (private) | johnzur-droid/ai.johnzur.com |
| API Proxy | Cloudflare Worker | jzai-proxy.johnzur.workers.dev — all AI model calls routed through Worker. OR key stored as encrypted Worker secret OR_KEY, never exposed to browser. |
| API Aggregator | OpenRouter | Single aggregator for all 6 models + scorer. Accessed via Cloudflare Worker for model calls; direct (OR_DIRECT constant) for balance/models check. |
| OR Guardrails | OpenRouter Workspace | 7-model allowlist, $5/mo budget cap, API key detection block, Prevent overrides ON, no default fallback. |
| PWA | /sw.js | Network-first HTML, skipWaiting(), clients.claim(). Current: jzai-v69 |
| Fonts | Google Fonts | Inter (UI) + JetBrains Mono (AI responses) |
All AI model calls from the browser go to the Cloudflare Worker (jzai-proxy.johnzur.workers.dev) instead of OpenRouter directly. The Worker injects the OR API key server-side (stored as encrypted Worker secret OR_KEY) and forwards the request to OpenRouter. The key is never in the browser for model calls. Origin is locked to https://ai.johnzur.com.
Balance and models-availability checks use the OR_DIRECT constant in index.html, hitting OpenRouter directly. These are read-only calls that do not create charges and do not require the Worker.
The service worker (/sw.js) must be a real file — not a blob URL. Chrome blocks blob SW registration. The cache version must be bumped on every deploy or Safari serves stale assets. Current version: jzai-v69.
Conversation threads are keyed by model ID, not array index. This means toggling models on or off mid-session correctly threads follow-up questions to the right model — even if the active model lineup changes between rounds.
| Resource | URL |
|---|---|
| Live site | https://ai.johnzur.com |
| Cloudflare Worker proxy | https://jzai-proxy.johnzur.workers.dev |
| Netlify dashboard | app.netlify.com (log in with GitHub) |
| GoDaddy DNS | dcc.godaddy.com → ai.johnzur.com → DNS |
| OpenRouter dashboard | https://openrouter.ai/dashboard |
| OpenRouter credits | https://openrouter.ai/credits |
| Parent site | https://johnzur.com |
Six query models plus Gemini Flash as the independent scorer/synthesizer.
google/gemini-2.5-flash — The independent judge. Not one of the 6 query models. Runs two calls per query:
Flash chosen over Pro: faster, cheaper, no conflict of interest. Token budgets: 1,500 for scorer, 1,400 for synthesizer. Combined cost: ~$0.004/query.
Each model call has a 60-second timeout. If a model does not respond within 60 seconds, its card is marked failed and the round completes with the remaining responses. The verdict is calculated from responding models only. Gemini Pro legitimately takes 25–30 seconds on complex thinking queries — the 60-second timeout gives it full headroom.
OpenRouter availability check failed for one or more models on page load. The tool still works with available models. Check openrouter.ai/status for outages. Hard refresh (Ctrl+Shift+R) and reload.
Each model has a 60-second hard timeout. If a card spins past 60 seconds, the fetch failed silently. Check your internet connection. If the issue is consistent on one specific model, check openrouter.ai/status — the model may be down.
The /credits fetch failed. Usually a network issue or transient OpenRouter outage. Reload the page. If the balance shows but is wrong, reload — it fetches live on every page load.
Balance is below $1. Add credits immediately at openrouter.ai/credits. Queries will start failing with "API error" on model cards.
These buttons only appear after a successful verdict render with 2+ responding models. If single-AI mode is active, these buttons do not appear (no consensus to challenge).
The pre-written prompt uses the Bottom Line text from the verdict. If the Bottom Line was vague or generic, the adversarial prompt will be too. Ask a more specific question initially — more specific verdicts produce better Devil's Advocate challenges.
Citations are model-dependent. Gemini and Perplexity reliably cite sources. Claude explains process without specific citations. ChatGPT and Meta AI cite inconsistently. Grok cites source names but accuracy varies. Perplexity is the most reliable for verifiable citations — it searches live sources.
The URL must contain a recognizable domain suffix (.gov, .org, .com, .net, .edu, .io) or start with https://. Bare text like "medicare dot gov" will not be linked. If a URL appears but isn't clickable, the model likely wrote it in an unusual format.
Gemini Flash scorer call failed. Check OR balance and that google/gemini-2.5-flash is available on openrouter.ai/models. The scorer must return valid JSON — if it times out (60s), the verdict panel will not render.
Scorer prompt may have regressed. Verify the SCORER constant in index.html points to google/gemini-2.5-flash and the token budget is 1,500. Score math is computed in JS from the JSON response — the model classifies, JS counts.
Service worker is caching the old version. The SW version must be bumped in sw.js on every deploy. Hard refresh (Ctrl+Shift+R) or clear site data in browser settings → Application → Storage → Clear site data.
Expected. Gemini 2.5 Pro is a thinking model. It reasons internally before outputting. On simple questions this is overhead; on complex questions it produces differentiated depth. Response time is shown on the card for transparency.
iOS caches home screen icons aggressively. Delete the shortcut and re-add from Safari. The icon file must be at /apple-touch-icon.png — iOS ignores manifest-embedded icons.
Complete architecture reference, model lineup, cost breakdown, and operational blueprint. Updated through S9.