← Liquid State

What we ship

Liquid State ships continuously — new free crypto tools, live-data surfaces, and product improvements. This log is built straight from our release record. 100 recent updates.

2026-06-30
Product3-step in-app checklist (profile→guide→brief) on /the-edge
Market intelcurated newsjack seed: Ethereum Foundation cuts 54 jobs / 40% budget, shifts to endowment model — drains into the autonomous Brief pipeline
NewBitcoin Whale Transaction Feed — live $1M+ unconfirmed-tx ticker, embeddable, free blockchain.info+Binance data
Designhover states on /indicators card grid — gold left-accent + micro-lift + arrow nudge (matches /tools treatment)
NewSolana Network Stats Dashboard — live TPS/slot-time/epoch/fee widget; ~30K/mo keyword cluster; embeddable; free Solana JSON-RPC
SEOadd FAQPage JSON-LD (4 Q&A pairs) — bitcoin rainbow chart ~50K/mo, eligible for Google rich results + AI citations
NewETH/BTC Ratio Live Chart — /tools/eth-btc-ratio: live ETHBTC ratio, 365d SVG chart with 90d SMA overlay, rotation signal label (5-zone percentile rank), embed code, NewsletterCTA; Binance ETHBTC klines free/no-key; targets ~31K/mo "eth btc ratio" searches
NewFree embeddable /tools/eth-gas: live EIP-1559 base fee (gwei), Slow/Standard/Fast tiers with USD per tx type (ETH/ERC-20/Uniswap), 50-block sparkline, congestion label, 60s auto-refresh, embed mode; OG card; FAQ JSON-LD; public Ethereum JSON-RPC + Binance ETHUSDT; ~60K/mo keywords; board 3/3 SHIP
Market intelUK FCA final crypto framework — mandatory licensing Sep 2026–Feb 2027, effective Oct 2027; trading venues/custodians/stablecoins in scope
NewDynamic OG preview cards for 49 tool pages — /api/og/[slug] returns 1200×630 branded PNG with live market data; gated NEXT_PUBLIC_DYNAMIC_OG_ENABLED=1; fail-soft redirect to /og-card.png on render failure
NewBitcoin vs Gold (PAXG) Correlation & Performance Tracker — 90d rebased perf chart + rolling 30d Pearson correlation; corrLabel narrative; embed mode; FAQPage + JSON-LD; free Binance BTCUSDT+PAXGUSDT data
NewDiscord Market Intelligence Bot — 4 slash commands (/market-state, /regime, /funding-rate, /barometer) via HTTP Interactions endpoint; zone-based embed colors; UTM-tagged links; /discord-bot landing page with JSON-LD schema; ships
NewQuizPromoCard between cards 2+3 on /guides + /playbooks → links /quiz email-capture funnel
NewDeFi TVL & Protocol Rankings Dashboard — 180-day TVL chart, top-15 protocols, category breakdown (liquid staking/lending/DEX/yield), regime label (Expansion→Compression), embed mode, FAQPage schema; free DefiLlama API
NewContextual NewsletterCTA on all 28 tool pages — source + headline props on every non-embed path → ~45 leads/mo targeted
NewETH/BTC Ratio & 90-Day Performance Chart — rebased dual performance + ratio sub-chart + regime label + embed; free Binance 1D klines
Distributiongenerate.js trigger endpoint closes repurpose pipeline gap — finds newest unqueued article, calls generateVariants(), queues X/Telegram/Shorts/recap variants
New3-stat Live Now strip on /access (regime+brief+BTC signal) lifts checkout-start rate; ships
NewBitcoin Pi Cycle Top Indicator — daily 111DMA vs 2×350DMA convergence chart with regime label (Top Signal/Caution/Bull/Accumulation), crossover detection, historical top table, embed mode, FAQPage schema; free Binance 1D klines
Market intelBinance EU MiCA suspension seed — deadline-day execution spike; regulatory intelligence on world's largest exchange losing EU market access July 1; 27-member-state impact, MiCA passporting mechanics
New/welcome conversion page — LOCKED label fix + smoke route + backlog closure; gold CTA → /access fires at peak-intent 90s after email submit
NewBTC Weekly Returns Distribution — SVG histogram of 520+ Binance weekly candles, current-week percentile rank, median/mean stats, embed mode, FAQPage schema; free Binance 1W klines
Newrepurpose_queue drain hardened: added isCronAuthorized guard + vercel.json cron entry (0 */4 * * *) + FEATURE-FLAGS docs — queue-and-drain infra now production-ready; ships
2026-07-09
NewDesk consolidation Phase 1 (cont.): the last two concretely-named Edge Live-Terminal widgets from target-state item 1 migrated into the Desk registry as Reserve widgets, each
2026-07-08
NewNew dismissible in-context upgrade banner on /the-edge (components/FreeTierUpgradeBanner.js) — shows only to a confirmed signed-in free account (`gate.isMember === false` strict check, never loading/unknown/anonymous/paying), mounted between the Analytics-row VaultLock close and the Liquidation Heatmap section, linking to the existing /access checkout with a distinct utm_medium=edge-nudge and firing trackCtaClick('free_account_upgrade','edge_nudge'). Dismissible for the session (new sessionStorage key freeTierUpgradeBannerDismissed, distinct from onboardChecklistDismissed), reappears next session. Zero new schema/cron/checkout; reuses the page's existing useMemberTier() gate object (no duplicate hook call). Also added /the-edge to scripts/loops/smoke.mjs's ROUTES (a pre-existing smoke-coverage gap, unrelated to this feature but directly touched by this diff). Flag-gated dark: NEXT_PUBLIC_FREE_TIER_UPGRADE_BANNER_ENABLED. Self-grade 96/100 MEETS-BAR yes (no gaps; one cosmetic nit — try/catch sessionStorage guard instead of the codebase's more common typeof check — functionally equivalent). Independent 4-reviewer panel unanimous SHIP (correctness/security/brand-UX/thesis-mechanism). Build+smoke GREEN (added /the-edge route). Post-deploy healthcheck GREEN (403 probes — sandbox egress restriction, not a real-site failure).
NewNew Reserve-tier-gated Signal Confluence panel on /terminal — aggregates Donchian(20), Market Barometer (BTC-only), and funding-rate regime into one "do my signals agree right now" score (lib/signal-confluence.js, pages/api/terminal/confluence.js), gated SERVER-SIDE mirroring daily-read.js's teaser/full shape (no CSS-blur); ETH honestly runs 2-of-3 confluence (Barometer is BTC-only, never fabricated). Flag-gated dark: NEXT_PUBLIC_SIGNAL_CONFLUENCE_ENABLED. Self-grade 95/100 MEETS-BAR yes. Independent 4-reviewer panel unanimous SHIP (correctness/security/brand-UX/thesis-mechanism). Build+smoke GREEN. Post-deploy healthcheck GREEN (403 probes — sandbox egress restriction, not a real-site failure).
SEOAdded FAQPage JSON-LD + visible "Frequently asked questions" section (4 Q&A pairs: what NVT Signal is, high/low reading meaning, zone thresholds, standalone reliability), sourced from the same faqItems array feeding the JSON-LD (lib/seo.js faqPage()) — continuing the Option E FAQPage rotation (sopr, puell-multiple precedent). Metadata/JSON-LD/static-JSX only, no data-fetching/chart/state touched. Self-grade 96/100 MEETS-BAR yes. Independent reviewer SHIP. Build+smoke GREEN. Post-deploy healthcheck GREEN (403 probes — sandbox egress restriction, not a real-site failure).
NewNew monthly "How Our Systematic Calls Did in `<Month Year>`" Brief article — narrates the already-resolved Brief Call Track Record data (wins AND losses, equal prominence) into a shareable article, auto-publishing (unlike the draft-only regulatory digest, since every fact here is already-verified first-party data, not an unverifiable outside-world claim) through the standard `/api/brief/generate` HTTP pipeline, exactly like `pages/api/brief/schedule.js` does for every hourly window. New `getMonthlyRecapFacts(monthStart, monthEnd)` in `lib/brief-calls.js` is the SOLE aggregation point over the existing `getTrackRecordRows()`/`classifyCallOutcome()` — never recomputes outcome, so the recap can never disagree with `/track-record` itself. New `pages/api/cron/track-record-recap.js` piggybacks `daily-snapshots-fanout.js`'s day-3-of-month UTC slot (net `vercel.json` diff 0, still 38/38); skips cleanly on a zero-resolved-calls month (`{skipped:'no_resolved_calls_this_month'}`) rather than publish a hollow recap, and dedups via an `alreadyCreatedThisMonth`-style guard on `category`+`created_at` (mirrors `regulatory-context-digest.js`'s shape). Zero new UI (renders through the unedited `BriefArticleView.js`/`/brief/[slug]` template); zero new distribution code — rides the existing `/api/repurpose/generate`+`drain` polling pipeline automatically since `getPublishedArticles()` has no category filter. Blueprint: `docs/loops/briefs/track-record-recap-brief.md`. Self-grade 93/100 MEETS-BAR yes, no blocking gaps (noted non-blocking: the notable-calls list order is chronological, not outcome-balanced — the equal-prominence guarantee rests on an explicit prompt instruction with no code-level structural backstop). 4-reviewer panel unanimous SHIP round 1 (correctness, security, brand/UX, thesis/mechanism) — correctness confirmed the exact `classifyCallOutcome` output strings ('read confirmed'/'read missed'/'neutral') are matched verbatim (no silent-all-zero-tally typo risk) and UTC month-boundary arithmetic is correct across a Dec→Jan rollover. `npm run build` GREEN, `node scripts/loops/smoke.mjs` GREEN (no route added — cron-only, correctly excluded from the smoke sweep per this repo's established convention). No checkout, no new schema, no new flag, no mass email. **Known limitation, flagged transparently (not a defect):** `/api/repurpose/generate`'s newest-unqueued-first pick order means distribution pickup is not a guaranteed same-day SLA if faster-publishing ordinary Brief articles win the race in a given 4-hour poll window — out of scope to fix here (would touch shared repurpose-picking logic). Post-deploy healthcheck GREEN (prod probes returned 403 — this sandbox's known egress restriction, not a real-site failure).
NewNew monthly cron (`pages/api/cron/regulatory-context-digest.js`, piggybacking `daily-snapshots-fanout.js`'s 01:00 UTC slot on day-of-month 5 — net `vercel.json` diff 0, still 38/38) that synthesizes a "Crypto Regulatory Context: <Month Year>" Vault Answers piece from a new, hand-vetted, git-versioned facts bank (`lib/regulatory-facts.js`, seeded with the two facts the precedent `ai-trading-agents-systematic-risk-brief` piece's own build-time WebSearch already verified: the EU AI Act's Aug-2-2026 high-risk-system enforcement date and FINRA's 2026 Regulatory Oversight Report). Key design resolution: a Vercel cron has no WebSearch access at runtime, so — unlike the one-off precedent, which had a human/agent catch a fabricated citation pre-publish — this cron never asks the model to assert fresh sources; generation is hard-constrained to the facts bank only, and the row is saved via `createAnswer(...)` as `status:'draft'` (never `publishAnswer()`), surfacing in the existing `/admin/answers` Drafts tab for owner review before it ever goes live. Reuses `lib/vault-answers.js`'s `checkCompliance()` gate (the same one the target table's own pipeline uses everywhere), the unedited `/vault-answers/[slug].js` render + `NewsletterCTA` pipeline (already wired, zero edit), and the `run<Name>()`+thin-handler shape of `regime-debate-digest.js`/`signal-divergence-digest.js`. Small cosmetic `CLUSTER_LABELS`/`CLUSTER_OPTIONS` additions in 3 files (`pages/vault-answers/[slug].js`, `pages/vault-answers/topic/[cluster].js`, `pages/admin/answers.js`). Blueprint: `docs/loops/briefs/regulatory-context-monthly-digest.md`. Self-grade 95/100 MEETS-BAR yes, no gaps. 4-reviewer panel unanimous SHIP round 1 (correctness, security, brand/UX, thesis/mechanism). `npm run build` GREEN, `node scripts/loops/smoke.mjs` GREEN. **Known gap, flagged transparently:** no `ANTHROPIC_API_KEY` in this sandbox, so the live generation call could not be dry-run end-to-end — verified instead: the flag-off no-op, the missing-key fail-soft path, `checkCompliance()` rejecting a deliberately-bad test string, and the month-to-month `leadIndex` rotation logic, all directly executed against the real repo code. Dark behind `REGULATORY_CONTEXT_DIGEST_ENABLED` (server-only, no `NEXT_PUBLIC_` prefix — no new page ships). No checkout, no new schema, no mass email, no tier gate. Post-deploy healthcheck GREEN (prod probes returned 403 — this sandbox's known egress restriction, not a real-site failure). **Facts-bank staleness is a known, deliberate follow-up** (§8 of the blueprint): the 2-fact seed needs periodic (e.g. quarterly) expansion by a human or a future build-loop session with real WebSearch access — do not let a thin seed read as a design flaw.
NewNew flagship `/quarterly-outlook` email-gated PDF lead magnet — a bigger, rarer, more citable quarterly sibling of the existing weekly report, synthesizing the calendar quarter that just ended: Vault Systematic Barometer regime history (day-mix + notable shifts via the existing `deriveRegimeSeries`), Donchian(20) signal-flip activity (seed rows correctly excluded from the tally) + current BTC/ETH state, a point-in-time on-chain composite read, and the honest Brief Call Track Record tally (wins AND losses, never cherry-picked). 100% reuse of the proven `/weekly-report` PDF/email-gate pipeline (`lib/weekly-report-pdf.js`'s COLORS/ensureSpace/docToBuffer copied verbatim); new `lib/quarterly-outlook-data.js` + `lib/quarterly-outlook-pdf.js` + `lib/quarterly-outlook-store.js` (private Supabase Storage bucket, dedup-on-period via the object path — no new table) + `pages/api/cron/quarterly-outlook.js` + `pages/api/quarterly-outlook/download.js` + `pages/quarterly-outlook.js`. Generation piggybacks `daily-snapshots-fanout.js`'s existing `isQuarterlyRefreshDay` gate verbatim — net `vercel.json` diff 0 (still 38/38). Blueprint: `docs/loops/briefs/quarterly-systematic-outlook-report.md` — corrected the spec's claimed on-chain "quarter trend": `lib/on-chain-pulse-data.js` has no persisted history (6h in-memory cache only), so the on-chain section is honestly framed as a point-in-time read ("as of {date}"), never a fabricated delta — a real no-fabricated-numbers compliance catch, not a data nuance. Small flag-gated cross-links added on `/weekly-report` and `/the-brief`'s footer. Self-grade 95/100 MEETS-BAR yes. 4-reviewer panel unanimous SHIP round 1 (correctness, security, brand/UX, thesis/mechanism). `npm run build` GREEN, `node scripts/loops/smoke.mjs` GREEN (including a live `/quarterly-outlook` 200); manual PDF-buffer generation verified via a temporary (uncommitted, deleted before merge) debug route — produced a valid, non-corrupt `%PDF-` buffer even against this sandbox's fully-degraded/no-network data (every section renders its designed honest empty state rather than crashing). No checkout, no new schema, no mass email, no tier gate. Dark behind `NEXT_PUBLIC_QUARTERLY_OUTLOOK_ENABLED`. Post-deploy healthcheck GREEN (prod probes returned 403 — this sandbox's known egress restriction to liquidstate.tech, not a real-site failure).
2026-07-07
NewNew opt-in "🔔 Alert me" push-alert toggle on each `/member/watchlist` row — a member can set a price-crosses-above/below threshold or a Donchian(20) regime-flip condition per ticker; a new hourly check (piggybacked flag-gated into the existing `/api/crons/address-watch` cron slot, since `vercel.json` is already at its 38-entry policy ceiling) evaluates conditions against live Binance/Donchian data and fires a real browser push via `sendToEndpoint` linking back to `/member/watchlist` — turning the previously passive, read-only Watchlist into a returning-member surface. New table `watchlist_alert_prefs` (own `endpoint` column; deliberately does NOT reuse Signal Watch's `sendToTopic`/`push_subscription_topics` — that table's CHECK constraint and shared-payload semantics don't fit per-member thresholds, per the blueprint's §2 correction to the spec). Blueprint: `docs/loops/briefs/watchlist-ticker-push-alerts.md` — corrected two spec assumptions (the reusable Donchian signal function is `lib/donchian-signals.js`, not the chart-overlay renderer in `lib/indicators.js`; and the push-delivery model is Address Watch's per-endpoint `sendToEndpoint`, not Signal Watch's `sendToTopic`). Self-grade round 1: 82/100, one real gap (removing a watched symbol orphaned its alert prefs) — fixed by adding a companion cleanup delete to `pages/api/watchlist/items.js`'s existing DELETE handler, re-ran Gate 1 (build) + Gate 2 (smoke) GREEN. 4-reviewer panel unanimous SHIP round 1 (correctness, security, brand/UX, thesis/mechanism). No checkout, no new cron slot, no mass email, no tier gate (any active member). Post-deploy healthcheck GREEN.
SEOAdded FAQPage JSON-LD + matching visible "Frequently asked questions" section to `/tools/puell-multiple` (4 Q&A pairs: what the Puell Multiple is, what high/low readings mean, the 5 zone thresholds, reliability-as-standalone-signal) — continues the sopr/fear-greed/mayer-multiple/stock-to-flow FAQPage rotation (Tier 3, Option E; Tiers 1-2 empty this run, refreshed `docs/loops/seo/striking-distance.md`'s data window with no new actionable rows). All facts sourced verbatim from the page's own existing explainer + zone table — no fabricated numbers. Metadata/JSON-LD/static-JSX only, no data-fetching/chart logic touched. Self-grade 96/100 MEETS-BAR yes. Independent reviewer SHIP. Post-deploy healthcheck GREEN.
New"From The Vault" appendix on `/guides/[slug]` surfaces 3-5 already-published `vault_answers` rows matched to the guide's tags, each linking to `/vault-answers/[slug]` — dark behind `NEXT_PUBLIC_GUIDE_ANSWERS_APPENDIX_ENABLED`. Blueprint's vocabulary audit found guide tags and vault_answers category/topic_cluster only overlap on "risk-management" today — most guides will render nothing until a follow-up tag-alias map narrows the gap (non-blocking per spec). Live 27-guide match-rate spot-check NOT run (no Supabase creds in this cloud sandbox) — fail-soft try/catch verified instead. Panel unanimous SHIP (correctness/security/brand/thesis-mechanism); self-grade 89/100.
NewNew Reserve-tier ("vault") Desk terminal panel — Strategy Backtest Playground — lets a member pick one of 3 built-in templates (Donchian breakout(N), SMA crossover(fast,slow), RSI mean-reversion(period,oversold,overbought)), adjust its numeric parameters, and run an honest backtest (equity curve + CAGR/max-drawdown/win-rate/vs-buy-and-hold) against real BTC daily candles via the already-shipped generic `runIndicatorBacktest` engine — the same engine powering the free fixed-Donchian(20) `/tools/trend-backtest` tool, but now with member-controlled inputs. New `lib/tools/backtest-templates.js` (parameterized entry/exit predicate builders, following the same coding pattern as `lib/tools/trend-backtest.js`'s `rollingDonchian` without touching that file), new `POST /api/tools/backtest-playground` (hard-gated `requireMember(req,{vaultOnly:true})` → 401 before any compute, per-member rate-limited 20/hr, server-side param clamping), new `components/dashboard/BacktestPlaygroundPanel.js`. One additive registry entry in `components/dashboard/registry.js` (`reserve:true`, own independent flag — not folded into the unrelated `FENCE_ENABLED` group) inherits the existing generic Reserve-locked upsell card with zero new lock-UI code. Blueprint: `docs/loops/briefs/terminal-backtest-playground.md`. Self-grade 88/100 MEETS-BAR yes (one gap fixed pre-panel: disclosure copy made verbatim to `trend-backtest.js`, restoring the Binance-attribution line). 4-reviewer panel round 1: security HELD on a real bug — `TEMPLATES[template]` bracket lookup let `template:"__proto__"`/`"constructor"`/`"toString"` resolve to a truthy `Object.prototype` value, bypassing the 400-guard and crashing uncaught outside the try/catch when `clampParams` was then called on it. Fixed by validating `TEMPLATE_KEYS.includes(template)` (and hardening the `asset` lookup via `hasOwnProperty`) before any lookup; re-ran Gate 1 (build) + Gate 2 (smoke) GREEN and a fresh 4-reviewer panel — unanimous SHIP round 2. No checkout, no schema, no cron, no AI cost. Post-deploy healthcheck GREEN.
2026-07-06
NewAdded Mastodon (ActivityPub/fediverse) as a 7th delivery channel on the existing "generate once, deliver everywhere" repurpose pipeline: new `lib/mastodon-poster.js` (`postToMastodon()`, single bearer-token POST to `/api/v1/statuses`, fail-soft, 500-char check-and-skip), a `mastodon_post` key added to `lib/repurpose-variants.js`'s batched LLM schema + template fallback, and a `drainMastodonPost()` case in `pages/api/repurpose/drain.js` gated by `REPURPOSE_MASTODON_ENABLED`. Opens a distinct tech/developer/data-nerd-skewed audience from Bluesky's, additive not overlapping reach; zero new AI cost (rides the existing single batched Haiku call), zero new cron, zero new schema. Build+smoke GREEN, self-grade 97/100 MEETS-BAR yes, 4-reviewer panel unanimous SHIP, health GREEN post-deploy.
NewTagged every X-persona-generated site mention with `?utm_source=x&utm_medium=persona&utm_campaign=<wellseee\
2026-07-05
NewAdded a 4th step (+14d) to the existing `guide_upsell_drip` sequence (`lib/guide-upsell-emails.js`) — the first automated touchpoint ever to pitch The Reserve ($149/mo) to a one-time guide buyer, reusing the proven benefit copy from `upgrade-nudge-emails.js` behind a `utm_campaign=guide-reserve-upsell`-tagged CTA to `/the-edge`; also closes a latent bug by adding an active-subscriber re-check to the cron's per-row loop (all steps) plus a step-4-only opt-out route (`pages/api/guides/upsell-unsubscribe.js`). No schema migration, no new cron slot (38/38 unchanged), no checkout. Self-grade 96/100 MEETS-BAR yes. Independent 4-reviewer panel unanimous SHIP (correctness/security/brand-UX/thesis-mechanism). `npm run build` GREEN, smoke GREEN. Post-deploy healthcheck GREEN. Rides existing `GUIDE_UPSELL_DRIP_ENABLED` flag — no new owner action needed.
NewNew `/tools/dev-activity` — Core Protocol Developer Activity Index, Liquid State's first ENGINEERING/fundamentals data surface (4-week commit trend, open issues, repo stats for 8 curated CANONICAL protocol repos: Bitcoin Core, go-ethereum, Agave/Solana, Cardano Node, Polkadot SDK, AvalancheGo, Cosmos SDK, Chainlink — never a fork, sidestepping the commit-inheritance distortion Santiment's own methodology warns about). Data: GitHub public REST API, free/keyless, request-driven TTL cache (no new cron, respects the ≤38 vercel.json floor). Self-grade 90/100 MEETS-BAR yes. Independent 3-reviewer board unanimous SHIP (safety/floor, cost/subscription, scope/quality/brand). `npm run build` GREEN, smoke GREEN. Post-deploy healthcheck GREEN. Flag `NEXT_PUBLIC_DEV_ACTIVITY_ENABLED` (dark by default).
Market intelAppended one curated event seed to `data/newsjack-events.json` (category `On-Chain`) covering CZ's proposal to freeze Satoshi's ~1.1M dormant BTC ahead of a quantum-computing threat, riding the fresh July 4 CoinDesk/TechTimes/Bitcoinist coverage. Self-grade 85→re-fixed (named the Google Quantum AI March 2026 source for the "~20x" qubit-reduction figure instead of vague "2026 research"), re-gated GREEN. Independent reviewer SHIP (scope-limited to the seed+report, on-brand, information-not-advice, non-duplicative). `npm run build` GREEN, smoke GREEN. Post-deploy healthcheck GREEN. Seed drains via the existing `monitor-curated`→`process-events` pipeline once `MONITOR_CURATED_ENABLED=1` (currently dark — queue now 12 pending, flagged to owner in the report).
NewNew `/brief/weekly-charts` — "This Week in Charts" shareable weekly chart gallery, dark behind `NEXT_PUBLIC_BRIEF_WEEKLY_CHARTS_ENABLED`. ISR page (revalidate 3600) structurally cloned from `pages/brief/topic/[category].js`: queries this week's published `brief_articles` via `getPublishedArticleSummaries()` (same source `lib/weekly-report-pdf.js` already uses), dedupes by primary coin tag (`tags[0]`, newest-first — matches the subject-first convention at `lib/x-content.js:826-834`), and reconstructs each tile's chart URL directly (`/api/brief/chart-image?symbol=...&bar=4H&d=<article date>`, mirroring `chartResult()` in `lib/image-selector.js` — deliberately NOT `article.featuredImage`, which is frequently an unrelated cover/stock photo under the current `selectImage()` flow). Each tile is a real backlink to `/brief/[slug]`. `ShareLinks` (reusing the already-live `NEXT_PUBLIC_SHARE_LINKS_ENABLED` flag) sits at the top as the reach-thesis measurement instrumentation; `NewsletterCTA source="weekly-charts"` at the footer. `scripts/loops/smoke.mjs` documents the dark-route exclusion (same convention as `/brief/topic/<category>`); `docs/loops/FEATURE-FLAGS.md` gets a new `GROUP 2n` entry. Blueprint: `docs/loops/briefs/brief-weekly-charts-gallery.md`. Self-grade 95/100 (MEETS-BAR yes; one cheap cosmetic gap — a duplicate FEATURE-FLAGS.md group label — fixed before the panel, re-gated). Panel unanimous SHIP (correctness, security, brand/UX, thesis/mechanism); correctness reviewer additionally rebuilt with the flag on and confirmed live HTML contains the chart-grid backlink tiles + ShareLinks row with correct UTM params, and the designed empty state (no published articles in this sandbox's DB). `npm run build` GREEN (flag off and flag on), smoke GREEN. Post-deploy healthcheck GREEN. Zero new schema/cron/checkout/AI/dependency.
NewGuide Completion Checkpoint — end-of-guide 4-6 question comprehension quiz on the already-public, already-crawlable guide pages (`pages/guides/[slug].js` renders full guide markdown with zero content gate today). Free client-side scoring + per-question explanations (no email required), then an optional "email me my results + a personalized next-guide recommendation" action captures a lead via the proven `upsertLead()` pattern (`source='guide-quiz-<slug>'`) — a new, distinct lead-capture channel on existing high-intent traffic, exactly what the 2026-06-30 STOP-SHIPPING learning asks to prioritize over another new page. New additive files: `supabase-schema-guide-quiz-2026-07-05.sql` (`guide_quiz_results` table), `data/guide-quizzes.js` (30 hand-authored comprehension questions across the 6 "Original 6" guides — journaling-mastery, building-personal-strategy, trading-with-the-trend, market-structure, risk-management, mastering-market-heatmaps), `lib/guide-quiz-results.js`, `lib/guide-quiz-recs.js` (pure tag-overlap next-guide matcher, separate from the trading_style-based `lib/activation/guide-recs.js`), `pages/api/guide-quiz/submit.js`, `components/GuideQuizCheckpoint.js`. Only edit to `pages/guides/[slug].js` is additive (new prop + one flag-gated JSX block between the free content and the existing paywall card) — `handleBuy`/`BuyButton`/`canBuy`/checkout untouched. Flag: `NEXT_PUBLIC_GUIDE_QUIZ_ENABLED` (dark until owner runs the migration + sets it). Blueprint: `docs/loops/briefs/guide-completion-quiz-lead-capture.md`. Panel unanimous SHIP (correctness, security, brand/UX, thesis/mechanism — security noted the new table has no DB-level CHECK constraints on score/total/email, matching the sibling `vault_answers_questions` precedent, non-blocking since app-level validation already enforces the bounds). `npm run build` GREEN, smoke GREEN (new POST route documented as excluded, no ROUTES change), live-rendered verification with the flag on confirmed the checkpoint renders on an authored guide and stays absent on an unauthored one; the API's Supabase writes could not be exercised live in this sandbox (missing service-role credentials — the same pre-existing gap that also 500s the proven `vault-answers/submit-question` route under identical conditions), so the leads/guide_quiz_results write path is verified by code trace + panel review, not a live sandbox round-trip. Post-deploy healthcheck GREEN. No checkout, no AI, no mass email, no PII beyond an optional user-submitted email.
2026-07-04
ProductPlaced the existing factual data-provenance proof asset (`data/proof-library.js` / `components/DataProvenanceStrip.js`, reused unchanged) on `/pricing` directly below the 3-card pricing grid — the purchase-decision page had zero credibility signal before this run; third placement of the same true, non-fabricated claim across the funnel (after `/access`, `/index`). Additive JSX only, checkout button/handler/prices untouched, still dark behind `NEXT_PUBLIC_PROOF_LIBRARY_ENABLED`. Build+smoke GREEN. Healthcheck GREEN (prod probes returned 403 — sandbox egress restriction, not a real-site failure).
SEOStriking-distance CTR fix (`docs/loops/seo/striking-distance.md` row #1): rewrote `<title>` + meta description on `/blog/sol-vs-sui-vs-avax-comparison` (pos ~7.3, 13 impressions, 0 clicks) to match comparison-intent keywords, and added an above-the-fold "Quick Comparison" table using only figures already stated elsewhere in the post — no new page, no fabricated numbers. Build+smoke GREEN. Healthcheck GREEN (prod probes returned 403 — sandbox egress restriction, not a real-site failure, consistent with the 2026-07-04 sector-rotation-heatmap row's diagnosis).
NewNew free, embeddable `/tools/sector-rotation` page + `/api/tools/sector-rotation` — Layer 1/Layer 2/DeFi/AI/Meme crypto sector performance across 24h/7d/30d as a market-cap-weighted, color-coded heatmap (CoinGecko `/coins/markets` per category, 15-min cache, partial-tolerant). Mirrors `funding-heatmap.js`'s embed/UTM/JSON-LD pattern with per-column color clamps (8/20/40%) to avoid one shared clamp washing out or saturating a timeframe. Additive-only: new page/API + one entry each in `data/tools-registry.js`/`data/embed-tools.js`/`docs/loops/FEATURE-FLAGS.md`; ships dark behind `NEXT_PUBLIC_SECTOR_ROTATION_ENABLED` (owner-activation required). Self-grade round 1 (77/100, MEETS-BAR:no) caught the CoinGecko "AI" category id lacking verification evidence — fixed by documenting a WebSearch cross-check of CoinGecko's own category-page URL-slug convention (this sandbox's proxy blocks a live `/coins/categories/list` call). 4-reviewer panel unanimous SHIP (correctness, security, brand/UX, thesis/mechanism — verified EmbedAttribution+UTM, Dataset/BreadcrumbList JSON-LD, and zero-interaction full render are all genuinely present in the diff). Build+smoke GREEN (manually verified live render + embed mode + graceful "No data available" degradation with the flag temporarily enabled in a local rebuild, then reverted before the official gate run). Healthcheck GREEN (prod probes returned 403 — sandbox egress restriction, not a real-site failure, per this session's earlier direct diagnosis).
NewNew sibling tool page `/tools/stablecoin-flows` (`NEXT_PUBLIC_STABLECOIN_FLOW_ENABLED`, dark default OFF) — per-stablecoin supply, 7d/30d net mint-vs-burn (both $ and %), top-8 chain breakdown, and a distinct "Flow Regime" label (Strong Minting → Strong Burning), sourced from DefiLlama's per-asset `stablecoins` endpoint (the existing stablecoin-ssr route only wires the aggregate `stablecoincharts/all` endpoint, which can't produce per-asset/chain data). Embeddable (`?embed=1` clean iframe view + working copy-embed-code button) and OG-shareable (new `pages/api/og/[...slug].js` `'stablecoin-flows'` entry) — the reach/backlink mechanism for a new macro-flows audience segment the SSR ratio page doesn't serve. Zero diff on `pages/tools/stablecoin-ssr.js` / `pages/api/tools/stablecoin-ssr.js` (that page's `?embed=1` iframe is already distributed in the wild at a fixed height — this is why the artifact is a separate page, not an edit). `data/tools-registry.js`, `pages/api/og/[...slug].js`, `scripts/loops/smoke.mjs` are pure appends. DefiLlama field-name risk flagged in the blueprint (sandbox network policy blocks `stablecoins.llama.fi`, so live JSON shape was never captured) — coded defensively (optional chaining, `Array.isArray` guards, fail-soft to empty/null, never a hard 500), confirmed via correctness review. Self-grade round 1: 74/100 (MEETS-BAR no — missing copy-embed button + pct-delta rendering); fixed both, round 2: 96/100 (MEETS-BAR yes). 4/4 review panel unanimous SHIP (correctness/security/brand-UX/thesis-mechanism). Build+smoke GREEN. Healthcheck GREEN (prod probes returned 403 — sandbox egress restriction to liquidstate.tech, not a real-site failure). NO checkout, NO AI, NO new dependency.
NewPublic, anonymous AI Portfolio Stress-Test (`/tools/portfolio-stress-test`, `NEXT_PUBLIC_STRESS_TEST_ENABLED`, dark default OFF): visitor picks asset (BTC/ETH/SOL) × position (long/short/spot) × size (small/medium/large), submits email, gets a Haiku-generated bull/base/bear non-advice narrative. Lead-capture mechanism is server-verified before any scenario text renders — `upsertLead({email, source:'ai-stress-test'})` then a re-`select` of the `leads` row confirming `status==='subscribed'`, mirroring `flagship-unlock.js`'s discipline. Combination space closed at exactly 27 (strict enum validation) and cached 24h/combination in new `stress_test_cache` table, capping cost at ≤27 Haiku calls/day (~$1/mo); `checkArticleCompliance()` runs as a hard backstop before any cache write. Reuses `ai-scenarios.js`'s badge/card language and `barometer-explainer.js`'s Anthropic call pattern verbatim. Self-grade 90/100 (MEETS-BAR yes); 4/4 review panel unanimous SHIP. Build+smoke GREEN. Healthcheck GREEN (prod probes returned 403 — consistent with this sandbox's known egress restriction to liquidstate.tech, not a real-site failure). OWNER ACTION: run `supabase/migrations/20260704_stress_test_cache.sql` in the Supabase SQL editor before setting `NEXT_PUBLIC_STRESS_TEST_ENABLED=1`.
NewFarcaster Mini App Frame on /tools/market-barometer — adds `fc:miniapp` (current spec) + `fc:frame` (legacy-compat) meta tags via new lib/farcaster-frame.js, reusing the existing OG image/icon/theme token; new distribution channel, ships
2026-07-03
ProductExtended the existing (07-02-shipped) factual data-provenance proof strip from /access to the homepage final-cta section, directly below the "Go Liquid" button — same cleared factual entry (no new member candidate arrived), reused DataProvenanceStrip.js verbatim, same NEXT_PUBLIC_PROOF_LIBRARY_ENABLED flag (still dark). Self-grade 82/100 MEETS-BAR yes (gap noted: no concrete measurement plan for this specific placement); independent compliance reviewer SHIP; build+smoke GREEN; health GREEN (403 probes — sandbox egress restriction, healthcheck script exited GREEN, no rollback)
SEOAdded FAQPage JSON-LD + matching visible "Frequently asked questions" section to /tools/mayer-multiple (4 Q&A pairs restating already-established page facts: 200-day SMA definition, 2.4×/3.8× zone thresholds, non-advice framing, update cadence), mirroring the fear-greed.js FAQ pattern exactly — continues the Option E rotation (rainbow-chart, stock-to-flow, fear-greed) since GSC strikingDistance remains empty; no data-fetching/chart/state logic touched. Self-grade 92/100 MEETS-BAR yes; independent reviewer SHIP; build+smoke GREEN; health GREEN (403 probes — sandbox egress restriction, healthcheck script exited GREEN, no rollback)
NewPlaced the already-live, higher-converting QuizPromoCard → /quiz → /quiz/result email-capture funnel (previously only on /guides + /playbooks) on the 12 highest-traffic free tool pages (market-barometer, rainbow-chart, cycle-phase, halving-countdown, funding-rates, altcoin-season, open-interest, fear-greed, position-calculator, market-rotation, mvrv-zscore, crypto-screener), directly below each page's existing (flat-converting) NewsletterCTA — pure placement, no changes to the already-shipped component's props/copy/tracking; new independent flag NEXT_PUBLIC_TOOLS_QUIZ_CTA_ENABLED (defaults OFF); attribution: leads.source='tool-<slug>' via the existing last-touch va_attr→subscribe.js mechanism, no new attribution code; also fixed a pre-existing smoke.mjs gap (/tools/funding-rates was untested, correctly left /tools/crypto-screener excluded since it's
Market intelCurated newsjack seed queued to `data/newsjack-events.json`: US spot Bitcoin ETFs snapped a 10-day outflow streak with a ~$222M net inflow on 2026-07-02 (Fidelity FBTC-led ~$166M, BlackRock IBIT still -$40.4M), coinciding with a soft June jobs report (+57K payrolls, unemployment 4.2%) and BTC reclaiming $60K; follow-on to the already-queued 2026-07-01 record-June-outflow seed; strictly attributed, non-advice; independent review SHIP; build+smoke GREEN, health GREEN; MONITOR_CURATED_ENABLED still dark — 10 seeds now undrained (flagged for owner)
NewFAQPage schema rollout to 7 tool pages — added schema.org FAQPage JSON-LD + a matching visible "Frequently asked questions" section (sourced from one shared array per page so markup and visible copy can never drift, per the lib/seo.js:126-129 reuse contract) to cycle-phase, altcoin-season, nupl, halving-countdown, market-rotation, funding-rates, open-interest (fear-greed already had it — backlog note was stale); every FAQ answer traces to grounded existing on-page copy (weights/formulas/zone thresholds/data sources), zero fabricated claims; followed the fear-greed.js pattern (schema + visible copy), explicitly avoiding the schema-only gap found on mvrv-zscore.js/market-barometer.js (left untouched, out of scope); reach/visibility-class thesis (AEO/rich-result lift on existing traffic, not a new lead mechanism) — same class as the 3 reference pages' precedent; no checkout, no AI, no flag; self-grade 96/100 MEETS-BAR yes; independent 4-agent panel (correctness/security/brand-UX/thesis-mechanism) unanimous SHIP; build+smoke GREEN, health GREEN
NewX Weekly Market Regime Thread Auto-Poster — Monday 09:00 UTC cron posts a 7-tweet reply-chain thread synthesizing 5 live signals (Barometer, Donchian, funding, open interest, on-chain MVRV/NUPL, realized vol) into a data-driven synthesis sentence ("Donchian is long + funding is negative + OI is compressed = diverging signals") + UTM CTA to /tools/market-barometer; new `postThread()` reply-chain primitive added to lib/x-poster.js (prior posting only did single-tweet + 1 reply); fail-soft floor: refuses to post below 4 composable tweets; zero new deps, zero AI; self-grade 72/100 round 1 (generic synthesis, fixed to reference real signal values); independent 4-agent panel (correctness/security/brand-UX/thesis-mechanism) HELD once on thesis/mechanism (CTA-tweet truncation was silently cutting the UTM query string off the last tweet — the exact mechanism the thesis depends on), fixed via a reserved-budget `ctaTweet()` helper that truncates only the descriptive prefix, never the URL, re-verified unanimous SHIP; build+smoke GREEN, health GREEN
NewBulk Data Export (CSV) — new consumption shape: every prior syndication surface (Public Signal API, RSS, ICS, SVG badges) serves the latest value or a live feed; this is the first that hands a visitor the FULL historical time series as a downloadable file. `/tools/data-export` + always-on `GET /api/data/export?dataset=` (4 datasets: regime history from `market_barometer_snapshots`, options PCR history from `options_pcr_snapshots`, BTC/ETH daily OHLCV from Binance) + new reusable `lib/csv-export.js` primitive; hub card + `/developers` promo section, both UTM-tagged; zero new external dependency, zero AI, fail-soft to a header-only CSV on error; self-grade 92/100 MEETS-BAR yes; independent 3-reviewer board (safety/cost/scope-brand) unanimous SHIP; build+smoke GREEN, health GREEN
NewBrief articles at /brief/[slug] can now embed one live tool widget inline (admin dropdown sourced from `data/embed-tools.js`'s public catalog, new nullable `brief_articles.tool_embed_slug` column) rendered as a chrome-less `?embed=1` iframe positioned before the existing, unmodified `BriefGateOverlay` soft-gate — thesis is an indirect/secondary mechanism (engagement upstream of an existing capture point, not a new capture form, flagged explicitly in the blueprint's §0); no checkout, no AI, no new deps, zero DOM change for briefs that don't set the field; self-grade 94/100 MEETS-BAR yes; independent 4-agent panel (correctness/security/brand-UX/thesis-mechanism) unanimous SHIP; build+smoke GREEN, health GREEN; owner must run supabase/migrations/20260703_brief_tool_embed.sql
NewGitHub-README-style SVG status badges — new `lib/badge.js` (shields.io-style flat SVG builder, no deps) + `GET /api/badge/[metric]` (friendly URL `/badge/<metric>.svg`, 5 metrics: regime/cycle-phase/funding/ssr/dvol) wrapping the already-shipped Signal Scorecard aggregation, zero new external data source; the first plain-`<img>` embed format on the site (every prior embed is an iframe or JS/JSON feed, which GitHub READMEs and most forums don't allow); UTM-tagged copy-Markdown snippets on a new `/developers` "Status badges" section (`NEXT_PUBLIC_BADGES_ENABLED`) — badge route itself always-on/read-only/fail-soft (stale-cache-first on a transient miss, never a broken image); self-grade 88/100 MEETS-BAR yes (one gap fixed pre-review: stale-cache fallback on transient signal miss); independent 3-reviewer board (safety/cost/scope-brand) unanimous SHIP; build+smoke GREEN, health GREEN
2026-07-02
SEOAdded FAQPage JSON-LD + a matching visible "Frequently asked questions" section to `/tools/fear-greed` (4 Q&A pairs: what the Fear & Greed Index is, what the Liquid State Barometer is + how it differs, what a divergence means, whether F&G is a reliable signal) — targets the high-volume "crypto fear and greed index" query cluster, same Option-E pattern as the rainbow-chart (06-30) and stock-to-flow (07-01) wins; content reuses facts already established on-page (methodology table, divergence copy), no fabricated numbers; metadata/JSON-LD/static-JSX only, no data-fetching or state logic touched; self-grade 92/100 MEETS-BAR yes; independent reviewer SHIP; build+smoke GREEN, health GREEN
Market intelCurated event seed: SBI Crypto shutting down its Bitcoin mining pool (~2% network hashrate, 20.9 EH/s, 12th-largest globally) on July 31, 2026 — appended to data/newsjack-events.json for the autonomous monitor-curated/process-events pipeline to drain (still
New/member/alert-preferences lets members opt which of 4 alert types (regime-change, Donchian flip, signal watch, address watch) they receive, filtered by trading_style with genuine hint copy (neutral state for no-profile members); Reserve-only Donchian-flip row renders locked with an explicit-benefit upgrade CTA to /access#pricing for Intel/Feed members; new `member_alert_preferences` table (default-true every column — zero regression for the 100% of members who never visit); 2 existing crons (regime-change-alert.js, donchian-signal-flip.js) filtered via new lib/alert-preferences.js, fail-soft to today's exact behavior until the owner runs the migration; Signal Watch/Address Watch deliberately left untouched (push-endpoint-keyed, not member-email-keyed — scope correction from the spec, documented in the blueprint); self-grade 89/100 MEETS-BAR yes (2 cheap gaps fixed pre-panel); panel: security/brand/thesis SHIP on first pass, correctness HELD once (missing neutral-hint state for no-profile members) — fixed + re-verified SHIP; health GREEN; gate NEXT_PUBLIC_ALERT_PREFERENCES_ENABLED (+ owner must run supabase-schema-alert-preferences.sql)
ProductRefined the first-session guide-rec panel (`NEXT_PUBLIC_ONBOARD_GUIDE_REC_ENABLED`) to use `primary_focus` (already captured, already fetched, previously unused) as a secondary signal: `getGuideRecs(trading_style, primary_focus)` swaps in `guide-altcoin-season` for alts-focused members across all 3 trading styles, no behavior change for btc_eth/both; pure-function change in `lib/activation/guide-recs.js` + one-line call-site update in `pages/the-edge.js`; no new flag, no new endpoint, no new dependency; deferred twice by the 2026-06-29 and 2026-06-30 onboard reports before landing this cycle; self-grade 92/100 MEETS-BAR yes; independent reviewer SHIP; health GREEN
NewNew `components/GuideCrossSellCTA.js` inserted between the existing Reserve-upgrade CTA and `NewsletterCTA` on 14 verified tool pages (altcoin-season, bollinger-squeeze, cycle-phase, donchian-channel, eth-btc-ratio, market-barometer, on-chain-pulse, open-interest, position-calculator, price-heatmap, realized-volatility, seasonality, social-sentiment, stress-test) — a topic-matched one-time guide offer ($19-29) filling the gap between "free email" and "$149/mo Reserve"; reads title/price/pages live from `data/guides-config.js` by `guideSlug` (no drift risk), UTM-tagged link (`utm_campaign=guide-crosssell`) rides the existing `va_attr`→checkout-metadata attribution pipe with zero new tracking code; `market-barometer.js` correctly suppressed in embed mode; ships dark behind `NEXT_PUBLIC_TOOL_GUIDE_CROSSSELL_ENABLED`; self-grade 87/100 MEETS-BAR yes (1 cheap gap fixed: link tap-target padding); panel 4/4 SHIP (correctness, security, brand/UX, thesis/mechanism); health GREEN
NewBTC & ETH Options Max Pain (nearest-expiry strike-level positioning view) — Deribit public API (zero new dependency, same endpoint as Options PCR), call/put OI-by-strike chart + max-pain marker; closes the derivatives cluster's last gap (PCR + DVOL + max pain); self-grade 93/100 MEETS-BAR yes; reviewer board 3/3 SHIP; health GREEN
Market intelCurated event seed queued in data/newsjack-events.json: California's Digital Financial Assets Law entered force July 1, 2026 — state-level crypto licensing enforcement begins, up to $100K/day civil fines for unlicensed activity; purely descriptive, sourced to Decrypt/TechTimes/DFPI 2026-07-01 coverage; drains via the existing (dark) monitor-curated → process-events → generate pipeline once the owner enables MONITOR_CURATED_ENABLED; self-grade 94/100 MEETS-BAR yes; reviewer SHIP; health GREEN
Market intelCurated event seed queued in data/newsjack-events.json: US spot Bitcoin ETFs closed June 2026 with a record $4.5B monthly outflow (29% above the prior record, IBIT ~79% of redemptions); purely descriptive, sourced to CoinDesk's 2026-07-01 coverage; drains via the existing (dark) monitor-curated → process-events → generate pipeline once the owner enables MONITOR_CURATED_ENABLED; self-grade 92/100 MEETS-BAR yes; reviewer SHIP; health GREEN
NewNew /extension: Manifest V3 Chrome/Edge/Firefox extension (extension/) shows the live Liquid State Barometer regime score as a color-coded toolbar badge, polling the already-public GET /api/tools/current-regime every 15 min (fail-soft, matches its 15-min server cache); popup renders regime + 1-line non-advice description + 2 UTM-tagged CTAs (→/tools/market-barometer, →/access); zero competing extension shows a systematic regime read (confirmed via WebSearch, every top result is a raw price ticker); landing page /extension explains it + serves a self-built zip (scripts/build-extension-zip.mjs, hand-rolled PKZIP via node:zlib, no new dependency) so it's installable today with no Chrome Web Store review needed; hub card + sitemap entries added purely additively; ships
2026-07-01
NewFixed `/refer`'s ~0% referral-signup conversion: added a real (non-fabricated) aggregate share-count strip (floor-gated, only shows once ≥5 real shares exist) + reused the existing personal progress bar, plus 2 new peak-intent CTA placements linking to `/refer?src=...` on `/welcome` (post-subscribe) and `/download-success` (guide-purchase confirmation, all 4 ready-state branches); new `GET /api/refer` (no PII) serves the cached aggregate (`lib/referrals.js` `getTotalReferrals()`, 5-min `withCache`); `src` attribution captured via a best-effort `access_log` row on first-time code creation only; no new table, no checkout, no AI; self-grade 95/100 MEETS-BAR yes, panel 4/4 SHIP; health GREEN
NewAsset Comparison Tool at /tools/asset-compare — first PICKER-driven comparison surface on the site: pick any 2 of 24 curated assets, get a 90-day rebased performance overlay + rolling 30-day Pearson correlation reading; every prior compare page (btc-eth-compare, btc-gold) is a fixed pair, correlation-matrix is a fixed grid with no chart; reuses lib/tools/binance.js binanceKlines() (same helper as 10+ shipped tools, free/no-key) and the btc-eth-compare chart/layout pattern almost entirely; per-pair 4h in-memory cache; embeddable + UTM-tagged; self-grade 91-94/100 MEETS-BAR yes (2 trivial nits: missing explicit GET-method guard, 400 vs 200 on invalid-symbol validation — both harmless, left as-is), board 3/3 SHIP; health GREEN; flag NEXT_PUBLIC_ASSET_COMPARE_ENABLED=1
New"Ask The Vault" question-submission form (components/AskVaultForm.js) on /vault-answers + every /vault-answers/[slug] page — direct lead-capture mechanism (source='vault-answers-question') independent of whether the question is ever answered, targeting the flywheel's 2026-06-30 STOP-SHIPPING finding (view→lead conversion, not more content, is the bottleneck); new vault_answers_questions table + admin "Submitted Questions" queue in pages/admin/answers.js with a "Publish as Answer" prefill that fires a one-off transactional email via lib/resend.js sendEmail() on publish (source_question_id passthrough on the existing action=publish, backward-compatible); extracted the existing lead-upsert logic out of pages/api/newsletter/subscribe.js into lib/leads.js upsertLead() (behavior-identical refactor) so both surfaces share one path; no flag (always-on, matches tool-signal-alert-optin precedent), no checkout, no metered AI; self-grade 95/100 MEETS-BAR yes (one nit fixed: duplicate formatDateTime helper deduped), panel 4/4 SHIP (security noted a low-severity non-blocking nit: visitor question text is interpolated unescaped into the notification email HTML, self-XSS-into-own-inbox risk, admin-reviewed before publish); health GREEN
NewNew /tools/crypto-screener: first sortable/filterable multi-asset table on the free tool suite — 24 major perpetuals, click any column to sort (price, 24h %, funding rate, annualized funding, 24h volume), filter chips (Top Movers/Long-Heavy/Short-Heavy); every prior multi-asset view (funding-heatmap, correlation-matrix) is a fixed non-interactive grid, this is a client-driven query surface closing a named CoinGlass-screener gap; zero new data source (Binance spot 24hr ticker batched + futures premiumIndex via existing lib/tools/binance.js), API route fails soft to HTTP 200 (whale-alerts.js convention, not funding-heatmap.js's 503, since this route is in the smoke allowlist); hub card + sitemap + smoke + FEATURE-FLAGS.md updated; ships
Market intelcurated newsjack seed: Nasdaq distributes its flagship TotalView order-book data feed through the Pyth Network oracle for the first time — TradFi/crypto data-infrastructure convergence story, drains into the autonomous Brief pipeline
NewFree developer API-key registration for the Public Signal API (`POST /api/v1/register` → key-aware rate limit on `GET /api/v1/signals`, 1,000/hr vs 120/hr anonymous; `/developers` UI section behind `NEXT_PUBLIC_API_KEY_REGISTRATION_ENABLED`); re-attempt of a round-1 HELD build — fixed the scope/brand bug where `subscribe.js`/`preview-gate.js`/`trader-assessment-submit.js` silently reclassified `status:'developer'` leads into the full Brief nurture sequence by narrowing their resubscribe branch to `existing.status === 'unsubscribed'` explicitly; self-grade 96/100, board 3/3 SHIP; health GREEN
NewAdded one vercel.json cron entry (`/api/repurpose/generate`, `30 */4 * * *`, 30min ahead of the existing `drain` cron) to unblock the already-built, dark-flagged repurpose content-multiplication pipeline that has been inert since merge because nothing ever called `generate`; no route code touched, REPURPOSE_GENERATE_ENABLED stays unset; self-grade 98/100, panel 4/4 SHIP; health GREEN
NewFree embeddable /tools/trend-backtest — Donchian(20) long-only backtest vs buy-and-hold for BTC, reusing lib/donchian-signals.js's exact rolling-window convention; CAGR/max-drawdown/win-rate/trade-count stats + log-scale dual-line equity chart; 1Y/3Y/5Y timeframe selector; 6h per-timeframe Supabase cache (compute-on-read, graceful degrade without Supabase/Binance); guide-conversion CTA into Training Terminal's "Trading with the Trend" guide (fixed a dead #guide-trend-mastery anchor found in self-grade by adding id={book.id} to pages/guides.js) + embed/backlink mechanism; targets ~16K/mo "bitcoin trend following"/"donchian channel backtest" search cluster; self-grade 82/100, panel 4/4 SHIP; health GREEN; gate NEXT_PUBLIC_TREND_BACKTEST_ENABLED=1
NewMarket Regime Alert RSS feed at /feeds/regime.xml — push-style, no-email alt to email SignalAlertCTA; one item per Barometer regime flip, pure read of existing market_barometer_snapshots; new reusable lib/rss.js + lib/regime-series.js infra; UTM-tagged; board 3/3 SHIP; health GREEN
2026-06-29
NewFunding Rate Regime Score — composite 0-100 from 8 major perps (BTC/ETH/SOL/BNB/XRP/DOGE/ADA/AVAX); tanh-normalized per-coin scores, market-cap-weighted; SVG gauge + 30-day sparkline + per-coin breakdown + embed mode; free Binance fapi
DistributionRepurpose staging queue infra: repurpose_queue table (SQL), lib/repurpose-variants.js (batch LLM+template generator, compliance-gated), pages/api/repurpose/drain.js (X+Telegram+Shorts+recap card delivery, all
NewNewsletterCTA added to 18 tool pages missing it — contextual headline per tool (e.g. "Get free funding rate alerts for perpetual traders"), backward-compatible headline prop on component, all embed modes guarded
NewBitcoin Stablecoin Supply Ratio (SSR) — SSR = BTC mcap ÷ stablecoin mcap; 90-day chart; regime label + velocity; embeddable; free CoinGecko + DefiLlama data; ~2-3K/mo underserved keyword cluster; flag NEXT_PUBLIC_STABLECOIN_SSR_ENABLED
NewCurated event queue (data/newsjack-events.json) + monitor-curated drain cron → brief_events_log; enables loop-newsjack to publish timely Briefs from repo-committed events (dark: MONITOR_CURATED_ENABLED=1)
NewCrypto Market Breadth & Advance-Decline Dashboard — top 100 alts vs BTC over 24h/7d/30d; breadth score 0–100; regime label; top 5 winners/losers; embeddable; free CoinGecko data; 29K/mo keyword cluster; flag NEXT_PUBLIC_MARKET_BREADTH_ENABLED
ProductDismissible personalized guide-rec panel on /the-edge: 3 guides matched to member's trading_style (swing/position/day) via deterministic lookup; ships
SEOAdded realized-volatility glossary entry (HV30/90/180 definition, variance risk premium, bidirectional link to volatility); targets "realized volatility crypto" / "historical volatility bitcoin"
DesignAdded hover states to /tools index cards: persistent gold left-border accent (0.10→0.45), 1px lift + box-shadow deepening, 4px arrow nudge — consistent with homepage card language
2026-06-28
SEOAdded Cumulative Volume Delta (CVD) glossary entry with 2 inbound links from order-book + long-short-ratio; targets "cumulative volume delta crypto" / "cvd indicator"
2026-06-25
New/embed gallery: 35 free embeddable tools, category filters (All/Sentiment/On-Chain/Derivatives/Volatility/Cycle/Distribution), copy-paste iframe codes, JSON-LD WebPage, sitemap + footer link (NEXT_PUBLIC_EMBED_GALLERY_ENABLED)
New/tools/mvrv-zscore: free embeddable MVRV Z-Score indicator, 5-zone label (Deep Value→Extreme Overvaluation), 365d SVG chart with zone bands, embed code, CoinMetrics Community API (no key); completes on-chain cluster; targets "bitcoin mvrv z-score" ~10.5K/mo Glassnode premium gap
NewHub-and-spoke SEO topic cluster pages at /vault-answers/topic/[cluster] targeting broad crypto keywords (12K–35K/mo); topic_cluster column migration + admin dropdown; cluster tabs on /vault-answers index; cluster back-links on answer pages; guide CTAs + NewsletterCTA lead capture; sitemap integration; ships
NewPublic ISR /briefs archive: coin-filter card grid of all published Liquid State Briefs, load-more pagination, NewsletterCTA lead capture, JSON-LD ItemList (50 entries) + BreadcrumbList, /briefs added to sitemap at priority 0.8, footer link gated behind NEXT_PUBLIC_BRIEF_ARCHIVE_ENABLED=1; internal link hub distributes equity to all /brief/[slug] pages
NewFree embeddable /tools/halving-overlay: all 4 BTC halving cycles (H1 2012, H2 2016, H3 2020, H4 2024) normalized to halving day = 100 and overlaid on one log-scale SVG chart; live H4 cursor dot at current day; hover tooltip per day showing indexed value for all 4 cycles; hero stats grid (H4 Day, H4 Index, H3 Peak, H4 Return); "Where We Stand" narrative callout; cycle stats table; ?embed=1 stripped view + copy-embed-code; NewsletterCTA source=halving-overlay-tool; JSON-LD Dataset+BreadcrumbList; cross-promo: halving-countdown/stock-to-flow/cycle-phase/btc-ath-tracker; hub card
NewFree embeddable /tools/trading-sessions: live session status for Asia/London/NY/CME BTC Futures with countdown timers, London+NY overlap callout, 24-bucket hourly volatility bar chart from 90d Binance 1h klines; ?embed=1 stripped view + copy-embed-code; NewsletterCTA source=trading-sessions-tool; JSON-LD Dataset+BreadcrumbList; hub card
NewAtom 1.0 feed at /api/atom (/atom.xml rewrite); RSS+Atom auto-discovery `<link rel="alternate">` tags in `_document.js` (all pages); /api/rss + /api/atom added to smoke gate; teaser-only (email gate preserved); enables CryptoPanic/Feedly/Google News indexing of Liquid State Briefs
NewFree embeddable /tools/nvt-signal: NVT Signal = NVTAdj / 90-day MA from CoinMetrics Community API; 4-zone label (Undervalued → Overbought) + 365-day SVG line chart with zone bands + dashed thresholds at 0.8/1.5; stats row; zone reference table; ?embed=1 + copy-embed-code; NewsletterCTA source=nvt-signal-tool; JSON-LD Dataset; cross-links to NUPL/SOPR/Puell/On-Chain-Pulse + back-links added to all 4 sibling pages; hub card
New/tools/donchian-channel — live BTC + ETH Donchian(20) channel signal page: upper/lower/mid stat cards, 7-state regime labels, SVG channel snapshot, signal legend, educational copy, embed mode (?embed=1) + copy-embed button, NewsletterCTA source=donchian-channel-tool, CTA rail → /access, JSON-LD Dataset; hub card
NewDaily cron detects BTC/ETH Donchian(20) flip → emails Reserve members (full signal + channel levels) + Intel/Feed teaser (upgrade CTA) + @VaultFeed Telegram; ships dark (DONCHIAN_FLIP_ALERT_ENABLED=1); fixed futures-basis 404 pre-existing smoke bug
New/tools/futures-basis — live annualized BTC quarterly futures basis vs spot, 60-day chart, contango/backwardation zones, embed + NewsletterCTA; targets ~22K/mo (bitcoin futures premium / btc basis trade)
NewTag-aware live-regime banner on all /guides/[slug] + /guides/[slug]/preview pages: `getContextTip()` selects guide-topic-specific tip (risk-management vs momentum vs generic) based on guide tags from data/guides-config.js; tags added to all 21 guide entries; `guideConfig.tags` threaded into banner props
NewFree embeddable /tools/puell-multiple: daily miner revenue (IssContNtv × PriceUSD) ÷ 365d MA from CoinMetrics Community API; 5-zone label (Miner Capitulation → Extreme Bubble) + 365-day SVG chart with zone bands + hover tooltip; embed mode (?embed=1) + copy-embed-code button; NewsletterCTA source=puell-multiple-tool; zone reference table; cross-links to on-chain-pulse/nupl/sopr; JSON-LD Dataset+BreadcrumbList; hub card
NewPersonalized regime-change alert email: cron now batch-fetches member_profiles for Intel/Feed recipients and injects a "Strategy context" block (1 sentence + 2 bullets per trading_style × regime; 15 variants) + style-matched subject suffix + subscriber-specific "SEE THE FULL REGIME BREAKDOWN →" CTA to /the-edge; leads/unprofile recipients receive unchanged default copy
NewFree embeddable /tools/btc-momentum: RSI(14) + SMA alignment (Golden/Death Cross) + ROC across 4 timeframes (1D/3D/1W/1M) for BTC and ETH; composite Alignment Score 0–100 ArcGauge (5-zone: Strong Bearish→Strong Bullish); TF grid per coin; embed mode (?embed=1) + copy-embed; narrative callout; NewsletterCTA source=btc-momentum; JSON-LD Dataset+BreadcrumbList; hub card
NewFree embeddable /tools/correlation-matrix: 6×6 Pearson correlation heatmap for BTC/ETH/SOL/BNB/POL/DOGE from Binance 1D klines; 7d/30d/90d timeframe selector (client-side); color-coded grid (navy=uncorrelated, gold=highly correlated); diversification insight callout (lowest-correlated pair); embed mode (?embed=1) + copy-embed-code button; NewsletterCTA source=correlation-matrix-tool; JSON-LD Dataset+BreadcrumbList; hub card
THE BRIEF · FREE

Get new Liquid State tools + market reads in your inbox

Free market reads — plus the Three-Lens Framework the desk runs on every chart. No spam. Unsubscribe anytime.

🔒 No spam. One-click unsubscribe. Free framework on signup.

Explore the free tools · Liquid State Index · The Edge. Information, not financial advice.