HoldTechHOLDTECH
DOCS

HoldTech Technical Documentation

HoldTech is a Solana token holderbase quality analysis tool. It profiles individual holder wallets, computes quality metrics, detects manipulation patterns, and generates AI-powered verdicts. This documentation covers the architecture, metric definitions, scoring methodology, and API reference.

100
Max wallets analyzed
8
Core metrics
A–F
Grade range

System Architecture

The analysis pipeline runs in four stages, each as an independent API endpoint:

1
Token Info/api/token-info
Fetches metadata, price, liquidity from Pump.fun + DexScreener
2
Holder Analysis/api/analyze
Fetches top N holders, profiles each wallet, computes metrics
3
Holder Count/api/holder-count
Binary search pagination to count non-zero balance holders accurately
4
Deep Scan/api/deep-scan
Bundle detection, funding cluster tracing, buy timeline, concentration analysis
5
AI Verdict/api/ai-verdict
Passes metrics to LLM for score, grade, and written assessment

Stages 1–3 run in parallel. Stage 4 (deep scan) runs after stage 2 completes. Stage 5 (AI verdict) runs after stage 3 (holder count) completes to ensure accurate holder count in the verdict.

Metrics Reference

Fresh Wallet %freshWalletPct> 40%

Percentage of holders whose wallets are less than 7 days old. High values suggest wallets created specifically to buy this token.

count(walletAge < 7d) / totalAnalyzed × 100
Very Fresh Wallet %veryFreshWalletPct> 20%

Wallets less than 24 hours old. Extreme risk signal.

count(walletAge < 1d) / totalAnalyzed × 100
Veteran Holder %veteranHolderPct

Wallets older than 90 days. Indicates experienced traders holding.

count(walletAge > 90d) / totalAnalyzed × 100
OG Holder %ogHolderPct

Wallets older than 180 days.

count(walletAge > 180d) / totalAnalyzed × 100
Low Activity %lowActivityPct> 40%

Wallets with fewer than 10 lifetime transactions. Low activity typically indicates burner wallets.

count(txCount < 10) / totalAnalyzed × 100
Single-Token Holder %singleTokenPct> 30%

Wallets holding only this token (or this + 1 other). High values suggest manufactured holderbases.

count(otherTokenCount ≤ 1) / totalAnalyzed × 100
Diamond Hands %diamondHandsPct

Wallets holding for more than 2 days. Indicates conviction.

count(holdDuration > 2d) / totalAnalyzed × 100
Avg SOL BalanceavgSolBalance< 0.5 SOL

Average SOL balance across holder wallets. Low balances indicate underfunded burner wallets.

sum(solBalance) / totalAnalyzed

Grading Scale

The AI verdict generates a numerical score (0–100) and a letter grade (A–F). Scoring is based on holistic analysis of all metrics, not simple weighting.

A
80–100
Excellent holderbase. Aged wallets, high activity, low concentration.
B
65–79
Good holderbase. Some fresh wallets but generally healthy.
C
50–64
Average. Mixed signals, warrants further investigation.
D
35–49
Poor. Multiple red flags, high manipulation risk.
F
0–34
Failing. Holderbase is likely manufactured.

Deep Scan

The deep scan runs after the base analysis, providing deeper on-chain intelligence. It analyzes the token's transaction history (up to 300 transactions) and traces funding sources for holder wallets.

Bundle Detection

3+ unique wallet buys in the same slot (~400ms) are flagged as potential bundle transactions.

Funding Clusters

Traces the first 5 transactions of each holder wallet looking for SOL funding source. Same source funding 2+ wallets = cluster.

Buy Timeline

Maps when each holder first bought. Buys within 5 minutes of the first transaction are flagged as insider risk.

Concentration Metrics

Computes Top 5/10/20 holder percentages, Gini coefficient, and Herfindahl-Hirschman Index, excluding liquidity pools.

Concentration Analysis

Gini Coefficient

Measures inequality of token distribution across holders. 0 = perfectly equal distribution, 1 = one wallet holds everything. Used to detect whale-dominated tokens.

math
Gini = Σ|xi - xj| / (2 * n * Σxi)

Where:
  xi, xj = individual holder balances
  n = number of holders analyzed

Interpretation:
  < 0.6  → Well distributed
  0.6-0.8 → Moderately concentrated  
  > 0.8  → Highly concentrated ⚠️

Herfindahl-Hirschman Index (HHI)

Standard measure of market concentration. Sum of squared market shares for each holder. More sensitive to large holders than Gini.

math
HHI = Σ(si)²

Where:
  si = holder i's balance / total supply

Interpretation:
  < 0.01   → Highly competitive (diversified)
  0.01-0.15 → Moderate concentration
  0.15-0.25 → High concentration
  > 0.25   → Very high concentration ⚠️

Bundle Detection

Bundle transactions occur when multiple wallets buy the same token in the same Solana slot (~400ms). This typically indicates a single entity coordinating multi-wallet buys using Jito bundles or similar tools to manufacture fake holder growth.

text
Detection algorithm:
1. Fetch token's transaction history (3 pages × 100 = 300 txs)
2. Group transactions by slot number
3. Extract fee_payer as the buying wallet
4. Flag slots with 3+ unique wallets as potential bundles
5. Sort by wallet count descending, return top 10

Thresholds:
  3-4 wallets/slot → Possible bundle
  5-9 wallets/slot → Likely bundle  
  10+ wallets/slot → Confirmed bundle ⚠️

Funding Cluster Tracing

Funding cluster analysis traces the SOL funding source for each holder wallet. If multiple holder wallets were funded by the same wallet, this strongly suggests they're controlled by the same entity.

text
Tracing algorithm:
1. For each holder wallet, fetch 20 most recent signatures
2. Sort by blockTime ascending (oldest first)
3. Check first 5 transactions for incoming SOL > 0.01
4. The fee_payer of the funding transaction = funding source
5. Group holders by common funding source
6. Flag groups of 2+ as clusters, 3+ as RED FLAG

Limitations:
- Only traces 1 hop back (direct funding)
- Only checks top 10 non-pool wallets (rate limit constraint)
- CEX withdrawals may create false clusters

API Reference

All endpoints accept POST requests with Content-Type: application/json.

POST/api/analyze

Analyze token holder wallets. Returns metrics, distributions, and holder details.

Request Body
json
{
  "mint": "TokenMintAddress...",
  "limit": 20  // 20, 50, or 100
}
Response
json
{
  "mint": "...",
  "tokenName": "Example",
  "tokenSymbol": "EX",
  "totalHolders": 20,
  "analyzedHolders": 20,
  "totalSupply": 1000000000,
  "metrics": {
    "freshWalletPct": 35.0,
    "veryFreshWalletPct": 10.0,
    "veteranHolderPct": 25.0,
    "ogHolderPct": 15.0,
    "lowActivityPct": 40.0,
    "singleTokenPct": 20.0,
    "diamondHandsPct": 60.0,
    "avgWalletAgeDays": 45.2,
    "medianWalletAgeDays": 30.1,
    "avgTxCount": 156,
    "avgSolBalance": 2.5
  },
  "distribution": { ... },
  "topHolders": [ ... ],
  "wallets": [ ... ]
}
POST/api/deep-scan

Run deep on-chain analysis: bundle detection, funding tracing, concentration.

Request Body
json
{
  "mint": "TokenMintAddress...",
  "wallets": [ ... ],  // from /api/analyze
  "totalSupply": 1000000000
}
Response
json
{
  "txHistoryCount": 300,
  "bundles": [{ "slot": 12345, "wallets": [...], "txCount": 5 }],
  "bundleCount": 2,
  "bundledWalletCount": 8,
  "concentration": {
    "top5Pct": 15.2,
    "top10Pct": 28.4,
    "top20Pct": 45.1,
    "giniCoefficient": 0.72,
    "herfindahlIndex": 0.035
  },
  "fundingClusters": [{ "funder": "...", "wallets": [...], "count": 3 }],
  "buyTimeline": [{ "wallet": "...", "minutesAfterFirst": 2.5 }],
  "solDistribution": { "dust": 20, "low": 30, "medium": 35, "high": 10, "whale": 5 }
}
POST/api/holder-count

Accurately count non-zero balance holders via binary search pagination.

Request Body
json
{
  "mint": "TokenMintAddress..."
}
Response
json
{
  "holderCount": 10828
}
POST/api/ai-verdict

Generate AI verdict from metrics.

Request Body
json
{
  "metrics": { ... },
  "totalHolders": 10828,
  "analyzedHolders": 20,
  "tokenSymbol": "EX"
}
Response
json
{
  "score": 72,
  "grade": "B",
  "verdict": "This holderbase shows moderate quality...",
  "flags": [
    "⚠️ 35% fresh wallets — elevated sybil risk",
    "✅ Strong veteran presence at 25%"
  ]
}
POST/api/token-info

Fetch token metadata, price, and market data.

Request Body
json
{
  "mint": "TokenMintAddress..."
}
Response
json
{
  "name": "Example",
  "symbol": "EX",
  "image": "https://...",
  "price": 0.00123,
  "mcap": 1234567,
  "volume24h": 56789,
  "liquidity": 98765,
  "holderCount": null,
  "sparkline": [0.001, 0.0012, ...]
}

Data Sources

Helius RPCHolder fetching (getTokenLargestAccounts, getTokenAccounts), wallet profiling (getSignaturesForAddress, getTransaction), enhanced transaction historyFree tier rate limits
DexScreenerToken price, market cap, liquidity, 24h volume, price changes30 req/batch, adaptive backoff
Pump.funToken metadata (name, image, description), social linksUndocumented public API
GeckoTerminalOHLCV candle data for sparkline charts30 req/min
OpenAIGPT-4o-mini for verdict text generationPay per usage

Limitations

Only analyzes top 20/50/100 holders — small holders are not included in metrics
Wallet age is based on first on-chain transaction, not wallet creation time
Funding tracing only goes 1 hop back — multi-layered obfuscation is not detected
CEX withdrawals may create false positive funding clusters
Bundle detection requires transactions to still be in on-chain history (recent 300 txs)
AI verdicts are probabilistic — same metrics may produce slightly different scores
Pool/LP detection uses a known AMM address list — new DEXes may not be recognized
Helius free tier rate limits may cause incomplete analysis during high usage
HOLDTECH
know before you ape