EWYN
AI email platform — create branded emails in minutes, not days. I built the brand-kit agent that crawls any website and extracts logo, palette, typography and voice, and the generation agent that turns a plain-language prompt into on-brand email templates.

- Role
- Built end to end, solo, with early input from one collaborator
- Timeline
- From first commit to a public site in about ten weeks
- Live
- ewyn.ai · @ewyn/client SDK on npm
- AI from day one
- Generation was the first line of the spec; the sending layer is deliberately thin
Teams that ship product email spend days copying HTML from the last campaign and still end up off-brand. The design lives in one person's head, the templates in another's inbox, and every new email starts from a stale copy.
- Brand-kit extraction. Give it a website URL: a scraper renders the site and an AI model extracts colors, fonts, logo, tone and assets into a workspace brand kit that every template inherits.
- Template generation. Describe the goal and tone and a full branded HTML email streams live into the editor, with placeholders like the recipient's name filled in per person. The brand styling is frozen into the template when a draft is saved, so what was sent can never change afterwards.
- Conversational editing. Ask for a change in plain language and the AI edits just that part of the template in place — replace, insert, remove, ask the user, finalize — instead of rewriting the whole email.
- Sending through the provider a team already uses: a public API and a TypeScript SDK on npm, a queue worker that respects each provider's rate limits, and delivery tracking.
- Automated quality scoring: a separate model call grades every generated template against the brand kit, with every AI call logged and traceable.
Designed and built as one codebase with six parts — the web app people use, an admin tool, a worker that sends the mail, a scraper that reads websites, an SDK for developers, and the engine that renders the final email — and taken from first commit to a public site in about ten weeks. AI was never bolted on: the generation step is the product, and everything else exists to get its output into an inbox.
- Next.js 16 App Router, React 19, TypeScript, Tailwind 4, shadcn/ui
- tRPC 11 with SSE streaming · Hono 4 public REST API · Prisma 7 on Supabase Postgres
- Vercel AI SDK with Claude and OpenAI models, tool calling, Langfuse
- BullMQ + Redis mail worker · Playwright scraper service · React Email + custom renderer
- pnpm + Turborepo · Vercel + Railway