{"slug": "dogevault-stylist-ai-dog-fashion-stylist", "title": "DogeVault Stylist — AI Dog Fashion Stylist", "summary": "A developer built DogeVault Stylist, a Next.js app that turns a single dog photo into a shopping experience, using AI to enhance the image, generate a profile, fetch real products via Apify MCP, and approve budget-limited USDC transfers on Solana devnet. The app chains six providers, including YouCam, Gemini, and ElevenLabs, with graceful degradation for missing keys, and includes a custom hybrid virtual try-on for dogs since YouCam's API is human-only.", "body_md": "*This is a submission for Weekend Challenge: Dog Days Edition*\n\n**DogeVault Stylist** is a Next.js app that turns a single photo of your dog into a full shopping experience. You upload a dog photo, and the app:\n\nThe goal was to build something that feels like a real product — not a demo with hardcoded data. Every product card links to a live listing. Every transaction hits Solana devnet. Every voice line is synthesized.\n\n[Video demo placeholder — upload and link your demo video here]\n\nAI dog stylist + autonomous shopper for the Dog Days hackathon. Upload a dog photo, get a YouCam studio portrait, hear an ElevenLabs stylist reaction, fetch real products through Apify MCP, and approve a budget-limited USDC transfer on Solana devnet.\n\n`apps/web`\n\n)`programs/doge_vault`\n\n)`apify/e-commerce-scraping-tool`\n\n```\napps/web                  Next.js app\n  src/lib                 Server/client libraries\n  src/app/api/agent        Upload -> YouCam -> Gemini -> Apify orchestration\n  src/app/api/voice        ElevenLabs text-to-speech\n  src/components           DogeVault UI and Solana wallet flows\nprograms/doge_vault       Anchor vault program\nPLAN.md                   Full hackathon plan and decisions\n```\n\nCopy `.env.example`\n\nto `.env`\n\nand fill in keys.\n\nImportant values already configured for devnet:\n\nThe repo is a pnpm monorepo:\n\n`apps/web`\n\n— Next.js 16 frontend and API routes`programs/doge_vault`\n\n— Anchor 0.32.1 Solana program`adk-apify-sample/`\n\n— Standalone Google ADK agent (Python)Everything starts with one API call to `/api/agent`\n\n. The server-side orchestrator chains six providers in sequence, streaming progress back to the UI via SSE:\n\n```\nUpload → YouCam enhance → YouCam background replace → Gemini profile\n→ Apify product search → Virtual try-on → ElevenLabs voice\n```\n\nEach step is isolated in its own module under `apps/web/src/lib/`\n\n, so a missing API key degrades gracefully instead of crashing the whole pipeline. The UI shows a status badge per provider (`ok`\n\n/ `missing_key`\n\n/ `error`\n\n).\n\nThis was the hardest part to get right. The [Apify MCP server](https://docs.apify.com/integrations/mcp) solved my product extraction problem. It exposes Apify Actors as tools over the Model Context Protocol. I call the `apify/e-commerce-scraping-tool`\n\nActor from my Next.js backend using the official MCP TypeScript SDK:\n\n``` js\nconst client = new Client({ name: \"dogevault-stylist\", version: \"0.1.0\" });\nconst transport = new StreamableHTTPClientTransport(\n  new URL(\"https://mcp.apify.com/?tools=apify/e-commerce-scraping-tool,get-actor-run,get-dataset-items\"),\n  { requestInit: { headers: { Authorization: `Bearer ${APIFY_TOKEN}` } } }\n);\nawait client.connect(transport);\n```\n\nActor runs are async — the server returns a `runId`\n\n, and I poll `get-actor-run`\n\nuntil `SUCCEEDED`\n\n, then read `get-dataset-items`\n\n. The whole flow returns normalized product cards with images, prices, ratings, and direct URLs from Amazon, eBay, and other marketplaces.\n\nGemini handles three jobs:\n\nThe profile also tags the subject as `dog`\n\nor `human`\n\n, which determines which virtual try-on path the app takes downstream.\n\nYouCam's virtual try-on API is human-only (I just knew about it during development) — it works great for clothes, hats, and shoes on people, but can't dress a dog. So I built a hybrid:\n\n`cloth-v3`\n\n, `hat`\n\n, `shoes`\n\n) with the Apify product image as the garment reference.`qwen-image-3.0-pro`\n\n) edits the dog portrait to wear the selected product, using both the dog photo and product image as references.The stylist script from Gemini gets sent to ElevenLabs for text-to-speech. One gotcha: free ElevenLabs plans can't use library voices via the API (returns HTTP 402 `paid_plan_required`\n\n). The app catches this and falls back to the browser's built-in `SpeechSynthesis`\n\n— so the feature still works, just with a less polished voice.\n\nThe on-chain piece is an Anchor program that acts as a spending guardrail:\n\n`initialize_vault`\n\n`approve_spend`\n\nThis means even if the AI recommends a $500 Gucci dog collar, the vault won't let it through. After approval, the app mints a **compressed NFT (cNFT)** via Metaplex Bubblegum V2 as a receipt — containing the portrait, try-on image, product details, and transaction reference.\n\n**Best Use of ElevenLabs** — The AI stylist's reaction script (generated by Gemini) is converted to speech via the ElevenLabs text-to-speech API. The app handles the free-plan 402 error gracefully, falling back to browser `SpeechSynthesis`\n\nso the voice feature always works.\n\n**Best Use of Google AI** — Gemini powers three core features: dog breed/style profiling from the uploaded photo, stylist script generation for the voice reaction, and product search query planning that feeds the Apify scraper. Gemini is the decision-making layer that ties the entire pipeline together.", "url": "https://wpnews.pro/news/dogevault-stylist-ai-dog-fashion-stylist", "canonical_source": "https://dev.to/gungz/dogevault-stylist-ai-dog-fashion-stylist-1clg", "published_at": "2026-08-17 06:55:20+00:00", "updated_at": "2026-08-17 07:12:36.748565+00:00", "lang": "en", "topics": ["artificial-intelligence", "generative-ai", "ai-agents", "ai-products", "developer-tools"], "entities": ["DogeVault Stylist", "Next.js", "Apify", "Gemini", "ElevenLabs", "YouCam", "Solana", "Anchor"], "alternates": {"html": "https://wpnews.pro/news/dogevault-stylist-ai-dog-fashion-stylist", "markdown": "https://wpnews.pro/news/dogevault-stylist-ai-dog-fashion-stylist.md", "text": "https://wpnews.pro/news/dogevault-stylist-ai-dog-fashion-stylist.txt", "jsonld": "https://wpnews.pro/news/dogevault-stylist-ai-dog-fashion-stylist.jsonld"}}