{
  "$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 Whisper", "Flask", "GPT-4o"],
      "status": "live",
      "liveUrl": "https://transcriptai-sigma.vercel.app",
      "repoUrl": "https://github.com/Justinandjohnson/transcriptai"
    },
    {
      "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": "https://spinsight-ai.vercel.app",
      "repoUrl": "https://github.com/Justinandjohnson/spinsight-ai"
    },
    {
      "id": "omnipong",
      "name": "OmniPong",
      "tagline": "Table tennis tournament & player intelligence — ratings, history, caching.",
      "category": "Data + AI",
      "tech": ["Playwright", "Python", "Docker", "Railway"],
      "status": "ready",
      "liveUrl": null,
      "repoUrl": "https://github.com/Justinandjohnson/omnipong"
    },
    {
      "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": "live",
      "liveUrl": "https://mvoe.vercel.app",
      "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": "live",
      "liveUrl": "https://rubberr.vercel.app",
      "repoUrl": "https://github.com/Justinandjohnson/omnipong"
    },
    {
      "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
    }
  ]
}
