·View Live ↗

Prompt Enhancement Engine

Next.jsTypeScriptOpenRouterGeminiDeepSeekVercelPrompt EngineeringAI Product

An AI tool that turns a creative brief and reference images into a full set of optimised, consistent prompts.

Prompt Enhancement Engine

What it does

You give it a creative brief and reference images. It gives you back an art direction brief (the kind an experienced art director would write) plus a full set of structured prompts for image generation, image editing, and video tools.

The prompts stay consistent with each other, so you can iterate on a visual concept across tools without losing coherence. The goal: less distance between a creative idea and a usable AI output.

Who it's for

AI artists and creative teams iterating on generative visual projects. Also useful if you're not deeply fluent in prompt writing but still need reliable output.

Why I built it

Mostly to speed up my own workflow. Prompt engineering is one of the most useful skills in AI visual production right now, but writing prompts by hand across several tools is slow and repetitive. Automating the structured part (brief interpretation, prompt formatting, consistency between shots) frees up attention for the decisions that actually matter.

It also became a testing ground for engineering patterns I now use in client work: streaming responses, multi-model orchestration, structured JSON validation from LLM output, and keeping a UI fast without reaching for a component library.

The stack

  • Framework: Next.js (App Router, server routes, Turbopack) · React 19 · TypeScript
  • Styling: Tailwind CSS v4. All UI hand-rolled, no component library.
  • LLM / API: OpenRouter, raw fetch, no SDK. Primary models: Gemini 2.5 Flash (vision) and DeepSeek v3.2 (briefs and prompts). Fallbacks: Gemma 4 31B and Qwen 3.
  • Validation: Zod for runtime validation of all LLM JSON responses.
  • Deployment: Vercel, serverless, SSE streaming via ReadableStream.
  • Notable: No database, no auth, no state management library. Zero dependencies beyond React. All state is held with the built-in React primitives.