← Back

Amplifier

2025

An AI-powered design reference system that connects intelligent image tagging with automated client briefings.

Review-centric tagging interface — flat tag summary at top, Accept & Next as primary action, full palette collapsed below

The Problem

Design studios face two recurring pain points:

The Solution

Amplifier is two connected systems:

  1. AI Image Tagger — Upload reference images in bulk. Claude Sonnet analyzes each image and suggests tags across dynamic categories (industry, style, mood, color, etc.). The designer reviews AI suggestions in a flat summary view, corrects if needed, and accepts with a single keystroke. Over time, the AI learns from corrections to improve future accuracy.
  2. Visual Briefing Tool — Clients fill out a 10-step brand questionnaire. Claude Haiku extracts visual keywords from their responses. Those keywords automatically search the tagged reference library and surface relevant images ranked by match score. Clients favorite the ones that resonate. The complete brief — answers, keywords, selected references — is packaged into an HTML email and sent to the studio.

The tagger builds the library. The briefing tool makes it useful.

Image upload with duplicate detection — side-by-side comparison with Upload Anyway option Reference image gallery with filter and search controls

Key Features

Review-Centric Tagging Interface

AI-Powered Image Analysis

Smart Duplicate Detection

Dynamic Vocabulary System

Dynamic vocabulary management — categories, tags, and usage counts

Guided Briefing Workflow

Client-facing brand questionnaire with step indicator and progress tracking AI-curated visual gallery showing matched reference images scored by keyword relevance

Analytics Dashboard

Dashboard showing overview stats — total images, vocabulary size, AI accuracy, and storage AI Learning Analytics — prompt learning status, per-category accuracy, correction patterns

Architecture

Client (React)
  ├── Briefing Flow (public)
  │     ├── Questionnaire → /api/extract-keywords (Claude Haiku)
  │     ├── Keywords → /api/search-references (weighted DB search)
  │     └── Submit → /api/send-briefing (HTML email)
  │
  └── Tagger System (auth-protected)
        ├── Upload → Duplicate Detection (SHA-256 + pHash)
        ├── Review → /api/suggest-tags (Claude Sonnet Vision + prompt cache)
        ├── Save → Supabase (images + tags + corrections)
        └── Analytics → /api/retrain-prompt (correction analysis)

Supabase
  ├── PostgreSQL (reference_images, tag_vocabulary, tag_corrections)
  ├── Auth (email/password, RLS policies)
  └── Storage (originals + thumbnails)

Engineering Highlights

Prompt Caching Strategy

The vocabulary (which can be large) is placed in the system message with Anthropic's ephemeral cache. The first request in a session pays the full cost, but subsequent image analyses reuse the cached vocabulary — reducing latency by 60-70% and cutting token costs.

Correction-Based Learning

Every time a designer overrides the AI's suggestions, the delta is recorded. The analytics engine aggregates corrections to identify patterns — "you frequently miss the 'tech' tag" or "you over-suggest 'minimal' in 40% of images." These insights are injected into the system prompt for future requests, creating a feedback loop without fine-tuning.

Modular Hook Architecture

The tagger UI orchestrates 9 custom hooks (useAISuggestions, useImageUpload, useDuplicateDetection, etc.) that each own a single concern. When the entire UI was redesigned from checkbox-based to review-centric, only the view layer changed — every hook stayed untouched.

Security Hardening

Tech Stack

FrameworkNext.js 15 (App Router), React 19, TypeScript
StylingTailwind CSS 4
AIClaude Sonnet 4 (vision), Claude 3.5 Haiku (text)
DatabaseSupabase (PostgreSQL + Auth + Storage)
ValidationZod schemas on all API inputs
EmailNodemailer with HTML templates
HashingWeb Crypto API (SHA-256), custom perceptual hash
Next.js 15React 19TypeScriptSupabasePostgreSQLClaude Sonnet 4 (Vision)Claude 3.5 HaikuCanvas APIZodNodemailerWeb Crypto API

Results