Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# DOOM INDEX

A decentralized archive of financial emotions. AI generates one painting every hour, translating the collective psychology of trending tokens into visual art.
A perpetual engine that turns market history into onchain paintings.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Confirm whether “onchain” is intentional branding (vs “on-chain”).
LanguageTool flags spelling here; if intentional, consider adding it to your accepted terminology/style guide to avoid recurring lint noise.

🧰 Tools
🪛 LanguageTool

[grammar] ~3-~3: Ensure spelling is correct
Context: ...l engine that turns market history into onchain paintings. ## Overview DOOM INDEX dyn...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🤖 Prompt for AI Agents
In README.md around line 3, the term "onchain" is flagged by LanguageTool;
confirm whether this is intentional branding or a typo and take one of two
actions: if it is branding, update the project's style guide/term list to
include "onchain" and add a lint exception or .dictionary entry so the checker
stops flagging it; if it is not intentional, change the copy to "on-chain" and
run a repository-wide search/replace to update other occurrences and ensure the
README and contributing docs reflect the corrected term.


## Overview

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "doom-index",
"version": "2.0.0",
"description": "A decentralized archive of financial emotions. AI generates one painting every minute, translating the collective psychology of 8 pump.fun tokens into visual art.",
"description": "A perpetual engine that turns market history into onchain paintings.",
"private": false,
"engines": {
"node": ">=24.11.1"
Expand Down
5 changes: 2 additions & 3 deletions src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,12 @@ const cinzelDecorative = Cinzel_Decorative({
* Fallback to production URL if NEXT_PUBLIC_BASE_URL is not set.
*/
export function generateMetadata(): Metadata {
const description =
"A decentralized archive of financial emotions. AI generates one painting every hour, translating the collective psychology of trending tokens into visual art.";
const description = "A perpetual engine that turns market history into onchain paintings.";
const title = "DOOM INDEX";
// Use environment-based URL
const metadataBase = new URL(getBaseUrl());
const ogImageUrl = new URL("/opengraph-image", metadataBase).toString();
const ogImageAlt = "DOOM INDEX - A decentralized archive of financial emotions.";
const ogImageAlt = "DOOM INDEX - A perpetual engine that turns market history into onchain paintings.";

return {
metadataBase,
Expand Down
2 changes: 1 addition & 1 deletion src/app/opengraph-image.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const dynamic = "force-dynamic";
export const revalidate = 3600; // 1 hour
export const size = { width: 1200, height: 630 };
export const contentType = "image/png";
export const alt = "DOOM INDEX - A decentralized archive of financial emotions.";
export const alt = "DOOM INDEX - A perpetual engine that turns market history into onchain paintings.";

const FRAME_ORIGINAL_SIZE = 500; // frame.png dimensions
const FRAME_INNER_WIDTH = 250;
Expand Down
63 changes: 54 additions & 9 deletions src/assets/whitepaper/v2.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<span className="paper-author">DOOM INDEX Research Team</span>
</div>
<div className="paper-epigraph">
<em>"A decentralized archive of financial emotions."</em>
<em>"A perpetual engine that turns market history into onchain paintings."</em>
</div>
Comment on lines +11 to 12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Epigraph update matches new one-liner; double-check quote styling consistency.
If the project prefers “on-chain”, this is one of the canonical places to standardize it.

🤖 Prompt for AI Agents
In src/assets/whitepaper/v2.mdx around lines 11 to 12, the epigraph uses
"onchain" and has quoted text—update the inner string to the project's canonical
hyphenation "on-chain" and normalize quote styling to match the repo convention
(use the same straight or typographic quotes as other epigraphs), keeping the
existing <em> wrapper and surrounding markup intact.

</div>

Expand All @@ -30,24 +30,30 @@ DOOM INDEX was born to **archive these emotions**—transforming raw market data

## 2. What DOOM INDEX Is

**DOOM INDEX is a decentralized archive of financial emotions—an onchain system where AI generates paintings every hour, translating the collective psychology of trending memecoins into visual art.**
**DOOM INDEX is a perpetual engine that turns market history into onchain paintings.**

The system dynamically selects the most culturally dominant memecoin each hour. When a token captures the zeitgeist—through viral marketing, celebrity endorsements, or genuine innovation—it becomes the protagonist of that hour's painting.
Every hour, the protocol captures a snapshot of the internet capital market—price movement, volatility, and trading volume—then translates it into a single painting and publishes it as an onchain artifact on Solana.

The system selects a culturally dominant token (and broader market context) as the protagonist of that hour. When a token captures the zeitgeist—through memes, narratives, launches, or liquidity—it becomes the subject of the next painting.

**Market emotion becomes visual emotion.** Every painting is a timestamp of collective psychology—a permanent record of how thousands of traders felt at that exact moment in time.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Tighten redundant phrasing (“moment in time”).

Line 39: “moment in time” is redundant; consider “moment” (or drop “in time”).

🧰 Tools
🪛 LanguageTool

[style] ~39-~39: This phrase is redundant. Consider writing “moment” or “time”.
Context: ...thousands of traders felt at that exact moment in time. Each hour becomes a DOOM Painting ent...

(MOMENT_IN_TIME)

🤖 Prompt for AI Agents
In src/assets/whitepaper/v2.mdx around line 39, the phrase "moment in time" is
redundant; edit the line to remove "in time" (e.g., "at that exact moment") or
simply use "moment" so the sentence reads smoothly without redundancy.


Each hour becomes a DOOM Painting entry that can be collected, indexed, and minted as an NFT.

The system already runs in production and has generated thousands of hourly entries—evidence that traders and collectors resonate with preserving market time as a cultural object.

Comment on lines +43 to +44
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Avoid unverifiable absolutes (“runs in production”, “generated thousands”) or add attribution.

Lines 43-44 read like factual claims; if this whitepaper isn’t going to cite a public dataset/dashboard, soften/qualify (e.g., “has been running” / “has generated over X entries as of YYYY-MM-DD”, or add a link/citation).

🤖 Prompt for AI Agents
In src/assets/whitepaper/v2.mdx around lines 43 to 44, the sentence makes
absolute claims ("runs in production", "generated thousands") without
attribution; change the wording to a verifiable or qualified claim or add a
citation. Either replace with softer language (e.g., "has been running in
production" or "has generated over X entries as of YYYY‑MM‑DD") or append a
footnote/link to a public dataset/dashboard or internal metric that
substantiates the numbers; ensure any numeric claim includes the source and
date.

---

## 3. How the Painting Is Generated

Every hour, the system captures trending token data and translates it into a painting through a weighted composition algorithm:
Every hour, the system captures trending token data and global market context, then translates it into a painting through a weighted composition algorithm:

![Painting generation pipeline](/diagrams/generation-process.svg)

### The Algorithm

**1. Market Observation & Token Selection**
The system monitors CoinGecko trending data and selects the most culturally dominant memecoin through a weighted scoring algorithm:
The system monitors CoinGecko trending data and selects the most culturally dominant token through a weighted scoring algorithm:

```
finalScore = 0.50*trend + 0.35*impact + 0.15*mood
Expand Down Expand Up @@ -100,8 +106,41 @@ Charts display numbers. Prices show transactions. These are valuable, but they'r

When AI interprets market data through symbolic mapping, you experience the market from a different angle—not as data, but as **atmosphere**.

**Deterministic Output**
Same market state = same painting. The system uses a hash of the rounded market caps to skip regeneration when nothing significant has changed, ensuring consistency.
---

## 4. Protocol Design: The Hourly Archive

DOOM INDEX is designed as an **archive-first protocol**: every hour produces a verifiable entry that can be stored, indexed, and reused by anyone building on Solana.

### The Hourly Entry (Open Format)

Each hour produces a structured record (in addition to the image) so the moment can be reproduced and analyzed:

- **Timestamp and slot/time anchors** (when generated)
- **Selected token** and **candidate set** (what the system considered)
- **Market snapshot** (price change, market cap, volume, volatility proxies, and global context like risk sentiment)
- **Scoring breakdown** (trend / impact / mood / final)
- **Prompt context** (the 10 components and their weights)
- **Model + parameters** (model ID/version, seed/hash, any style adapters)
- **Content addressing** (hashes for the image and metadata)

This format is intentionally open so wallets, explorers, dashboards, and artists can treat each hour as a composable building block.

### Storage and Availability

The archive is built to be durable:

- **Fast access layer** for browsing and apps (object storage + indexed metadata)
- **Permanent layer (planned)** via IPFS / Arweave for long-term preservation
- **Integrity checks** so external builders can verify that a painting matches its recorded inputs

### Access: SDK and API

DOOM INDEX is not only a gallery—it is an interface. A public API/SDK enables:

- Listing hourly entries by time range, token, or market regime
- Fetching the full entry (image + metadata + provenance)
- Building derivatives: moment cards, analytics overlays, curated collections, and research datasets

---

Expand All @@ -111,7 +150,13 @@ Same market state = same painting. The system uses a hash of the rounded market

DOOM INDEX proves that markets can be art. But there's room to evolve. Right now, every painting is archived but the community has no voice in what matters most.

**Future versions will introduce DOOM DAO and Season NFTs** to address this.
Future versions will focus on durability and composability:

- **Decentralized GPU compute** (e.g., Render Network) for resilient hourly generation
- **Permanent storage** (IPFS / Arweave) so the archive outlives any single provider
- **Market-adaptive models** (LoRA/style adapters) and a prompt engine that responds to volatility regimes
- **Open hourly NFT format + SDK** so integrations become first-class
- **DOOM DAO and Season NFTs** for community governance and historical curation

### DOOM DAO: Community Governance (Coming Soon)

Expand Down Expand Up @@ -171,5 +216,5 @@ In crypto culture, strong context creates art value while strong memes create cr

<div className="mt-16 text-center text-sm opacity-60">
<p>DOOM INDEX v2.0 — November 2025</p>
<p>A decentralized archive of financial emotions.</p>
<p>A perpetual engine that turns market history into onchain paintings.</p>
</div>
2 changes: 1 addition & 1 deletion src/lib/metadata-builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ export function buildNftMetadata(params: BuildMetadataParams): NftMetadata {
name: `DOOM INDEX #${truncatedHash}`,
symbol: "DOOM",
description:
"A generative artwork from DOOM INDEX - an AI-powered decentralized archive of financial emotions. " +
"A generative artwork from DOOM INDEX - a perpetual engine that turns market history into onchain paintings. " +
"This 3D painting translates the collective psychology of cryptocurrency markets into visual art.",
image: `ipfs://${cidGlb}`,
external_url: `https://doomindex.fun`,
Expand Down
2 changes: 1 addition & 1 deletion tests/unit/app/opengraph-image.component.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ describe("OGP Image Generation Components", () => {
});

test("should have correct alt text", () => {
expect(alt).toBe("DOOM INDEX - A decentralized archive of financial emotions.");
expect(alt).toBe("DOOM INDEX - A perpetual engine that turns market history into onchain paintings.");
});
});

Expand Down