# Creator Profile Enrichment

> Enrich creator profiles and onchain reputation by aggregating Talent Protocol, Guild.xyz, Basenames, Zora, and DeBank portfolio signals. Use when the user mentions creator discovery/ranking, onchain reputation, Talent API, Guild roles, Basename/ENS data, Zora profiles, or DeBank/portfolio activity. Use when this capability is needed.

- Skill: `tomevault-io/creator-profile-enrichment` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/creator-profile-enrichment`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/creator-profile-enrichment/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/creator-profile-enrichment

---


## Quick Start (most common)

- Decide the input type:
  - Creator EOA address
  - Creator coin address (will be resolved to creator address)
- Fetch aggregated reputation using the existing aggregator (read-only, no writes):
  - `frontend/src/lib/reputation-aggregator.ts` → `getOnchainReputation(address)`
- If a source is missing/empty, debug that source’s client + its API key/proxy path (Talent and Neynar are proxied through server routes).
- Treat enrichment as optional: failures should degrade gracefully (no hard crashes, no blocking core flows).

## System Model (how enrichment works here)

- Aggregator (single entrypoint):
  - `frontend/src/lib/reputation-aggregator.ts`
  - Fetches in parallel: Talent passport + Talent socials + Base Guild stats + Basename profile + Zora creator profile + DeBank total balance (optional)
  - Produces a weighted composite score + badges + trust score + social reach estimate
- Source clients:
  - Talent (proxied): `frontend/src/lib/talent-api.ts` → calls `/api/social/talent`
    - Server handler: `frontend/api/_handlers/social/_talent.ts` (requires server env `TALENT_API_KEY`)
  - DeBank (proxied): `frontend/src/lib/debank/client.ts` → calls `/api/debank/totalBalanceBatch`
    - Server handler: `frontend/api/_handlers/debank/_totalBalanceBatch.ts` (requires server env `DEBANK_ACCESS_KEY`)
  - Guild.xyz (direct): `frontend/src/lib/guild-api.ts`
  - Basenames (onchain): `frontend/src/lib/basename-api.ts`
  - Zora (direct): `frontend/src/lib/zora-api.ts`
- Address resolution:
  - `frontend/src/lib/reputation-aggregator.ts` first calls `resolveCreatorAddress(...)` (creator coin → creator address) before fetching sources.

## Required Inputs

- Target identifier: creator EOA address or creator coin address
- Runtime context:
  - local dev vs preview vs production (affects env vars + serverless availability)

Never include secrets (API keys, private keys, full `.env` contents) in responses.

## Repo Map (where to look / what to run)

- Aggregation logic: `frontend/src/lib/reputation-aggregator.ts`
- Talent API client: `frontend/src/lib/talent-api.ts`
- Talent server proxy: `frontend/api/_handlers/social/_talent.ts`
- Guild client: `frontend/src/lib/guild-api.ts`
- Basename client: `frontend/src/lib/basename-api.ts`
- Zora client: `frontend/src/lib/zora-api.ts`
- UI:
  - `frontend/src/components/cca/OnchainReputationCard.tsx`
  - `frontend/src/components/cca/CreatorProfileCard*.tsx`
- System documentation: `frontend/docs/onchain-reputation-system.md`

## Preflight Checks (fast)

- Confirm you’re not trying to call Talent directly from the browser:
  - Client must call `/api/social/talent` (proxy keeps `TALENT_API_KEY` server-only).
- Confirm server env is configured for Talent:
  - `TALENT_API_KEY` must be present in the server environment (Vercel / local env used by Vercel functions).
- Confirm server env is configured for DeBank (if you want portfolio signals):
  - `DEBANK_ACCESS_KEY` must be present in the server environment.
- Confirm expected degradation:
  - Talent 404 is treated as a soft miss (proxy returns `{ success: true, data: null }`).
  - DeBank should be treated as optional (rate limiting / missing key should not break pages).

## Debug Workflows (source-by-source)

### A) Aggregator returns mostly empty / score is 0

1. Confirm input is a creator address (or that resolution worked):
   - Look at `resolveCreatorAddress` usage in `frontend/src/lib/reputation-aggregator.ts`
2. Check each source independently by calling its client function:
   - Talent: `getTalentPassport`, `getTalentSocials`
   - DeBank: `fetchDebankTotalBalanceBatch({ addresses: [...] })`
   - Guild: `getBaseGuildStats`
   - Basename: `getBasenameProfile`
   - Zora: `getZoraCreatorProfile`

### B) Talent is always null / errors

Common causes:
- `TALENT_API_KEY` not set in server environment
- Request is blocked because it’s not going through the proxy

Where to fix:
- `frontend/api/_handlers/social/_talent.ts` (proxy)
- `frontend/src/lib/talent-api.ts` (client uses `/api/social/talent`)

Notes:
- The proxy sets `Cache-Control: public, s-maxage=120, stale-while-revalidate=300` to reduce rate-limit risk.

### C) Guild.xyz roles look wrong or missing

Check:
- `frontend/src/lib/guild-api.ts` uses a heuristic for “Base guild” membership (name includes “base” or guildId match).
- If the Base guild ID changes, update the matching logic there.

### D) Basename missing

Check:
- `frontend/src/lib/basename-api.ts` uses `viem` ENS methods on Base/Base Sepolia.
- Ensure correct chainId and that the address has a primary name set.

## Output Format (when using this skill)

Return a structured result:

- Summary: what enrichment was requested and the outcome
- Inputs: target address/coin, environment (local/preview/prod)
- Data sources:
  - Talent: passport present? verified? score/rank?
  - DeBank: totalUsdValue present? top chains? (if configured)
  - Guild: roles found? key flags (isBuilder/isOnchain/etc)?
  - Basename: name present? key text records?
  - Zora: profile present?
- Aggregated result: totalScore, reputationLevel, trustScore, badges, socialReach
- Issues + fixes: missing env, proxy miswire, rate limits, invalid address resolution

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/wenakita) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

