{
  "$schema": "./projects.schema.json",
  "meta": {
    "owner": "Justin Johnson",
    "alias": "Young Denzel",
    "tagline": "AI engineer, data scientist & musician — I build agents and I make music.",
    "github": "https://github.com/Justinandjohnson",
    "bandcamp": "https://just-inn-case.bandcamp.com",
    "resumeUrl": "/resume.pdf",
    "source": "DEPLOY PLAN - Real Projects Only (finalized 2026-06-01).",
    "lastUpdated": "2026-06-01",
    "note": "status: live = public URL works | ready = runnable, deploy pending | building = in progress | interactive = on-site demo via API."
  },

  "studio": {
    "id": "music-model",
    "name": "Make Music In My Style",
    "tagline": "Prompt an AI trained on my own catalog — it generates a track in my sound.",
    "category": "Music + AI",
    "tech": ["MusicGen", "LoRA", "PyTorch", "FastAPI"],
    "status": "interactive",
    "model": "musicgen-melody-lora-v2",
    "highlight": "A MusicGen-melody LoRA fine-tuned on my own music (Young Denzel). Type a vibe, get a clip in my sound."
  },

  "projects": [
    {
      "id": "transcriptai",
      "name": "TranscriptAI",
      "tagline": "Audio → text with AI notes, summaries, and action items.",
      "category": "AI App",
      "tech": ["OpenAI", "Flask", "macOS"],
      "status": "live",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "spinsight-ai",
      "name": "Spinsight AI",
      "tagline": "AI table tennis video editor — analyze and cut footage with Gemini.",
      "category": "AI App",
      "tech": ["Google Gemini", "React", "FastAPI"],
      "status": "live",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "omnipong",
      "name": "OmniPong",
      "tagline": "Table tennis tournament & player intelligence — ratings, history, caching.",
      "category": "Data + AI",
      "tech": ["Playwright", "Python", "Docker", "Render"],
      "status": "live",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "claude-code-ui",
      "name": "Claude Code UI",
      "tagline": "Desktop & mobile UI for Claude Code — projects, chat, code editor, git.",
      "category": "Developer Tools",
      "tech": ["React", "Vite", "Express", "WebSocket"],
      "status": "live",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "suponea-legal",
      "name": "SuponeaAI Legal Agent",
      "tagline": "Legal document extraction — structured data from PDFs with validation & audit logs.",
      "category": "Enterprise AI",
      "tech": ["AWS Bedrock", "Claude", "Python"],
      "status": "live",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "mvoe",
      "name": "Mvoe",
      "tagline": "Transparent food-bank donation platform with AI matching & tracking.",
      "category": "AI for Good",
      "tech": ["Claude", "OpenAI", "React Native", "Prisma", "PostgreSQL"],
      "status": "building",
      "liveUrl": null,
      "repoUrl": "https://github.com/Justinandjohnson/mvoe-foodbank"
    },
    {
      "id": "rubberr",
      "name": "Rubberr",
      "tagline": "Table tennis rubber & match intelligence — dual-AI parses match reports.",
      "category": "AI App",
      "tech": ["OpenAI", "Claude", "Next.js", "FastAPI"],
      "status": "ready",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "vic",
      "name": "VIC — Pydantic AI Agent",
      "tagline": "Planner/executor agent with multi-MCP tools, voice, and memory.",
      "category": "AI Agent",
      "tech": ["Pydantic AI", "MCP", "Python"],
      "status": "ready",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "project13",
      "name": "Text Analysis Dashboard",
      "tagline": "Topic modeling, sentiment & clustering over text with Bedrock.",
      "category": "Data + AI",
      "tech": ["AWS Bedrock", "BERTopic", "spaCy", "React"],
      "status": "ready",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "tablevisionpro",
      "name": "TableVisionPro",
      "tagline": "On-device ML for table tennis — ball & player detection on iOS.",
      "category": "iOS + ML",
      "tech": ["YOLOv8", "CoreML", "Swift 6", "ARKit"],
      "status": "building",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "voip-ai",
      "name": "VoIP AI App",
      "tagline": "Calling app with auto recording, AI transcription & searchable summaries.",
      "category": "iOS + AI",
      "tech": ["Swift", "AssemblyAI", "Claude", "Twilio"],
      "status": "building",
      "liveUrl": null,
      "repoUrl": null
    },
    {
      "id": "privacyguard",
      "name": "PrivacyGuard",
      "tagline": "Find & remove your personal data from broker sites with AI agents.",
      "category": "AI App",
      "tech": ["OpenAI", "Anthropic", "MCP"],
      "status": "ready",
      "liveUrl": null,
      "repoUrl": null
    }
  ]
}
