{
  "version": "1.0",
  "schema": "https://entitymap.org/spec/v1.0",
  "publisher": {
    "name": "Chudi Nnorukam",
    "url": "https://chudi.dev",
    "sameAs": [
      "https://x.com/chudinnorukam",
      "https://www.linkedin.com/in/chudi-nnorukam",
      "https://contra.com/chudi_nnorukam_r81ryz4s",
      "https://www.instagram.com/herochiii/",
      "https://medium.com/@nnorukamchudi",
      "https://chudinnorukam.substack.com",
      "https://dev.to/chudi_nnorukam",
      "https://hashnode.com/@chudinnorukam",
      "https://www.freecodecamp.org/news/author/chudinnorukam/",
      "https://hackernoon.com/u/chudinnorukam",
      "https://www.youtube.com/@ContextWindow26",
      "https://citability.dev",
      "https://www.reddit.com/user/Unlikely_Ad_8060",
      "https://www.upwork.com/freelancers/~019ba44c5aa989b359"
    ]
  },
  "generated": "2026-10-08",
  "entities": [
    {
      "entityId": "e_001",
      "@type": "Person",
      "name": "Chudi Nnorukam",
      "description": "AI systems engineer in the SF Bay Area. Builds Claude Code tooling and AI search systems, and publishes free tools and paid kits for developers who ship with Claude Code.",
      "sameAs": "https://chudi.dev/about",
      "relations": [
        {
          "predicate": "created",
          "targetId": "e_002",
          "targetName": "chudi.dev"
        },
        {
          "predicate": "created",
          "targetId": "e_003",
          "targetName": "citability.dev"
        },
        {
          "predicate": "authors",
          "targetId": "e_018",
          "targetName": "Claude ADHD Skills: The 3 I Run, Plus the i-have-adhd Install"
        },
        {
          "predicate": "authors",
          "targetId": "e_019",
          "targetName": "Opus 5.5 vs Fable 5.1: My Cost Per Turn Gap Went From 1.4x to 2.3x"
        },
        {
          "predicate": "authors",
          "targetId": "e_020",
          "targetName": "Fable 5 vs Opus 4.8: Every Reasoning Tier Benchmarked"
        },
        {
          "predicate": "authors",
          "targetId": "e_021",
          "targetName": "Claude Code 'Compaction Failed': Causes and 3 Fixes"
        },
        {
          "predicate": "authors",
          "targetId": "e_022",
          "targetName": "Claude Trading Bot in Production: 36,000 Lines, 1-in-40 Error Rate"
        },
        {
          "predicate": "authors",
          "targetId": "e_023",
          "targetName": "How to Build a Polymarket Arbitrage Bot in Python"
        },
        {
          "predicate": "authors",
          "targetId": "e_024",
          "targetName": "AI Citation Audit: What Predicted Citations Across 7 Sites"
        },
        {
          "predicate": "authors",
          "targetId": "e_025",
          "targetName": "How ChatGPT and Perplexity Decide Which Sources to Cite"
        },
        {
          "predicate": "authors",
          "targetId": "e_026",
          "targetName": "How to Measure Your AI Citation Rate Across ChatGPT, Perplexity, and Claude"
        },
        {
          "predicate": "authors",
          "targetId": "e_027",
          "targetName": "A Developer's Guide to WebMCP"
        },
        {
          "predicate": "authors",
          "targetId": "e_028",
          "targetName": "How to Run an AI Extractability Audit on Your Site"
        },
        {
          "predicate": "authors",
          "targetId": "e_029",
          "targetName": "How to Tell if Search Console Impressions Are Human or Machine"
        },
        {
          "predicate": "hosts",
          "targetId": "e_033",
          "targetName": "Context Window"
        }
      ]
    },
    {
      "entityId": "e_002",
      "@type": "WebSite",
      "name": "chudi.dev",
      "description": "Free tools and paid kits for developers who ship with Claude Code, plus writing on Claude costs and limits, ADHD-friendly Claude workflows, AI trading bots and AI search visibility.",
      "sameAs": "https://chudi.dev",
      "relations": [
        {
          "predicate": "publishedBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "offers",
          "targetId": "e_004",
          "targetName": "Claude Code Runway Kit"
        },
        {
          "predicate": "offers",
          "targetId": "e_005",
          "targetName": "Production Trading Bot Kit"
        },
        {
          "predicate": "offers",
          "targetId": "e_006",
          "targetName": "Claude Code Project Memory Kit"
        },
        {
          "predicate": "offers",
          "targetId": "e_008",
          "targetName": "ADHD Engineer's Productivity System"
        },
        {
          "predicate": "hosts",
          "targetId": "e_010",
          "targetName": "Claude Token Counter and Cost Calculator"
        },
        {
          "predicate": "hosts",
          "targetId": "e_011",
          "targetName": "Claude Code Runway Audit"
        },
        {
          "predicate": "hosts",
          "targetId": "e_012",
          "targetName": "Kelly Criterion Calculator"
        },
        {
          "predicate": "hosts",
          "targetId": "e_013",
          "targetName": "ADHD Scorecard"
        },
        {
          "predicate": "hosts",
          "targetId": "e_014",
          "targetName": "Claude Code Assessment"
        },
        {
          "predicate": "hosts",
          "targetId": "e_015",
          "targetName": "Context-Switch Cost Calculator"
        },
        {
          "predicate": "hosts",
          "targetId": "e_016",
          "targetName": "AEO Audit Tool"
        },
        {
          "predicate": "hosts",
          "targetId": "e_017",
          "targetName": "Signal Threshold Slider"
        }
      ]
    },
    {
      "entityId": "e_003",
      "@type": "Organization",
      "name": "citability.dev",
      "description": "An AI visibility audit tool by Chudi Nnorukam. It checks whether ChatGPT, Perplexity and Claude can find, recommend and cite a website.",
      "sameAs": "https://citability.dev",
      "relations": [
        {
          "predicate": "foundedBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_004",
      "@type": "Product",
      "name": "Claude Code Runway Kit",
      "description": "Templates, a status line and a before-and-after script that trim what each Claude Code session carries while keeping work state. 29 US dollars, paid once.",
      "sameAs": "https://chudi.dev/products/claude-code-runway-kit",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "pairsWith",
          "targetId": "e_011",
          "targetName": "Claude Code Runway Audit"
        }
      ]
    },
    {
      "entityId": "e_005",
      "@type": "Product",
      "name": "Production Trading Bot Kit",
      "description": "A starter repository with a project scaffold, a websocket feed, risk controls and a VPS deploy setup. It runs in dry-run mode first. 49 US dollars.",
      "sameAs": "https://chudi.dev/products/trading-bot-kit",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_012",
          "targetName": "Kelly Criterion Calculator"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_022",
          "targetName": "Claude Trading Bot in Production: 36,000 Lines, 1-in-40 Error Rate"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_023",
          "targetName": "How to Build a Polymarket Arbitrage Bot in Python"
        }
      ]
    },
    {
      "entityId": "e_006",
      "@type": "Product",
      "name": "Claude Code Project Memory Kit",
      "description": "Four Claude Code skills, an install script and a CLAUDE.md template for keeping a knowledge base in your repo. 29 US dollars.",
      "sameAs": "https://chudi.dev/products",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_008",
      "@type": "Product",
      "name": "ADHD Engineer's Productivity System",
      "description": "Notion templates with a daily dashboard, energy-based task management and a brain dump capture system. 19 US dollars.",
      "sameAs": "https://chudi.dev/products",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_013",
          "targetName": "ADHD Scorecard"
        }
      ]
    },
    {
      "entityId": "e_010",
      "@type": "SoftwareApplication",
      "name": "Claude Token Counter and Cost Calculator",
      "description": "Free. Estimates the tokens in a prompt in your browser and prices them across Claude models, GPT and Gemini.",
      "sameAs": "https://chudi.dev/tools/claude-token-counter",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_011",
      "@type": "SoftwareApplication",
      "name": "Claude Code Runway Audit",
      "description": "Free local script that shows where your Claude Code sessions spend tokens and how often they compact.",
      "sameAs": "https://chudi.dev/tools/claude-code-runway-audit",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "pairsWith",
          "targetId": "e_004",
          "targetName": "Claude Code Runway Kit"
        }
      ]
    },
    {
      "entityId": "e_012",
      "@type": "SoftwareApplication",
      "name": "Kelly Criterion Calculator",
      "description": "Free. Finds a bet size with the Kelly criterion, with growth rate charts and edge analysis.",
      "sameAs": "https://chudi.dev/tools/kelly-criterion",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_005",
          "targetName": "Production Trading Bot Kit"
        }
      ]
    },
    {
      "entityId": "e_013",
      "@type": "SoftwareApplication",
      "name": "ADHD Scorecard",
      "description": "Free scorecard for neurodivergent developers that shows which ADHD traits help your work and which cost you time.",
      "sameAs": "https://chudi.dev/tools/adhd-scorecard",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_014",
      "@type": "SoftwareApplication",
      "name": "Claude Code Assessment",
      "description": "Free check of a Claude Code setup against hooks, memory, CLAUDE.md and workflow practices.",
      "sameAs": "https://chudi.dev/tools/claude-assessment",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_015",
      "@type": "SoftwareApplication",
      "name": "Context-Switch Cost Calculator",
      "description": "Free. Estimates what interruptions cost in time and money per day, week and year.",
      "sameAs": "https://chudi.dev/tools/context-switch-calculator",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_016",
      "@type": "SoftwareApplication",
      "name": "AEO Audit Tool",
      "description": "Free quick check of a page against answer engine readiness criteria.",
      "sameAs": "https://chudi.dev/tools/aeo-audit",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_003",
          "targetName": "citability.dev"
        }
      ]
    },
    {
      "entityId": "e_017",
      "@type": "SoftwareApplication",
      "name": "Signal Threshold Slider",
      "description": "Free interactive chart of how a signal threshold changes trade frequency.",
      "sameAs": "https://chudi.dev/tools/signal-threshold",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_018",
      "@type": "Article",
      "name": "Claude ADHD Skills: The 3 I Run, Plus the i-have-adhd Install",
      "sameAs": "https://chudi.dev/blog/claude-code-skills-adhd-developers",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_019",
      "@type": "Article",
      "name": "Opus 5.5 vs Fable 5.1: My Cost Per Turn Gap Went From 1.4x to 2.3x",
      "sameAs": "https://chudi.dev/blog/claude-opus-5-5-vs-fable-5-1",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_020",
      "@type": "Article",
      "name": "Fable 5 vs Opus 4.8: Every Reasoning Tier Benchmarked",
      "sameAs": "https://chudi.dev/blog/claude-fable-5-vs-opus-4-8",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_021",
      "@type": "Article",
      "name": "Claude Code 'Compaction Failed': Causes and 3 Fixes",
      "sameAs": "https://chudi.dev/blog/claude-context-management-dev-docs",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_022",
      "@type": "Article",
      "name": "Claude Trading Bot in Production: 36,000 Lines, 1-in-40 Error Rate",
      "sameAs": "https://chudi.dev/blog/claude-code-production-trading-bot",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_005",
          "targetName": "Production Trading Bot Kit"
        }
      ]
    },
    {
      "entityId": "e_023",
      "@type": "Article",
      "name": "How to Build a Polymarket Arbitrage Bot in Python",
      "sameAs": "https://chudi.dev/blog/how-i-built-polymarket-trading-bot",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "relatedTo",
          "targetId": "e_005",
          "targetName": "Production Trading Bot Kit"
        }
      ]
    },
    {
      "entityId": "e_024",
      "@type": "Article",
      "name": "AI Citation Audit: What Predicted Citations Across 7 Sites",
      "sameAs": "https://chudi.dev/blog/ai-citability-audit-what-predicts-citations",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "about",
          "targetId": "e_003",
          "targetName": "citability.dev"
        }
      ]
    },
    {
      "entityId": "e_025",
      "@type": "Article",
      "name": "How ChatGPT and Perplexity Decide Which Sources to Cite",
      "sameAs": "https://chudi.dev/blog/aeo-answer-engine-optimization-explained",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_026",
      "@type": "Article",
      "name": "How to Measure Your AI Citation Rate Across ChatGPT, Perplexity, and Claude",
      "description": "Published on freeCodeCamp.",
      "sameAs": "https://www.freecodecamp.org/news/how-to-measure-your-ai-citation-rate-across-chatgpt-perplexity-and-claude/",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "about",
          "targetId": "e_003",
          "targetName": "citability.dev"
        }
      ]
    },
    {
      "entityId": "e_027",
      "@type": "Article",
      "name": "A Developer's Guide to WebMCP",
      "description": "Published on freeCodeCamp.",
      "sameAs": "https://www.freecodecamp.org/news/a-developers-guide-to-webmcp/",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_028",
      "@type": "Article",
      "name": "How to Run an AI Extractability Audit on Your Site",
      "description": "Published on freeCodeCamp.",
      "sameAs": "https://www.freecodecamp.org/news/how-to-run-an-ai-extractability-audit/",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "about",
          "targetId": "e_003",
          "targetName": "citability.dev"
        }
      ]
    },
    {
      "entityId": "e_029",
      "@type": "Article",
      "name": "How to Tell if Search Console Impressions Are Human or Machine",
      "description": "Published on freeCodeCamp.",
      "sameAs": "https://www.freecodecamp.org/news/how-to-tell-if-search-console-impressions-are-human-or-machine/",
      "relations": [
        {
          "predicate": "authoredBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_030",
      "@type": "SoftwareApplication",
      "name": "Polyphemus",
      "description": "Chudi's Polymarket trading bot, built with Claude Code. Written up as infrastructure, not as a performance record.",
      "sameAs": "https://chudi.dev/portfolio/polyphemus",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        },
        {
          "predicate": "documentedIn",
          "targetId": "e_022",
          "targetName": "Claude Trading Bot in Production: 36,000 Lines, 1-in-40 Error Rate"
        },
        {
          "predicate": "documentedIn",
          "targetId": "e_023",
          "targetName": "How to Build a Polymarket Arbitrage Bot in Python"
        }
      ]
    },
    {
      "entityId": "e_031",
      "@type": "SoftwareApplication",
      "name": "Tradeify MES Trading System",
      "description": "A Micro E-mini S&P 500 futures trading system Chudi built. Written up as infrastructure, not as a performance record.",
      "sameAs": "https://chudi.dev/portfolio/tradeify-mes",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_032",
      "@type": "SoftwareApplication",
      "name": "Bulenox CME Crypto Futures Bot",
      "description": "A CME Micro Bitcoin futures bot Chudi built for a prop firm account. Written up as infrastructure, not as a performance record.",
      "sameAs": "https://chudi.dev/portfolio/bulenox-bot",
      "relations": [
        {
          "predicate": "createdBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    },
    {
      "entityId": "e_033",
      "@type": "CreativeWorkSeries",
      "name": "Context Window",
      "description": "A podcast co-hosted by Chudi Nnorukam and Tony Blount.",
      "sameAs": "https://chudi.dev/podcast/context-window",
      "relations": [
        {
          "predicate": "hostedBy",
          "targetId": "e_001",
          "targetName": "Chudi Nnorukam"
        }
      ]
    }
  ]
}
