# AI Workflow Note — 2026-05-15

**Project:** ajaia — AI Translator for Healthcare
**Brief:** Part 2 — Product UI Flow ("Create a UI flow for AI Translator for Healthcare")
**Author / driver:** Kaung Myat (Harry Hein)
**AI collaborator:** Claude (Opus 4.7, 1M context, via Claude Code)
**Total iterations:** ~12 design pivots, 4 working app rewrites, 3 FigJam diagrams

---

## 1. Goal of the day

Take the brief *"AI Translator for Healthcare — real-time, medically accurate translation that improves patient communication and clinical workflows"* and produce a portfolio-quality submission containing:

- Strong UX rationale grounded in competitive research
- A real working interactive prototype (not just static screens)
- FigJam diagrams that explain the flow at a glance
- Documented assumptions and trade-offs

What we actually shipped exceeded the brief — instead of static screens we built a **dual-device interactive demo** (iPhone + iPad mockup) with the full clinician + patient journey running in browser.

---

## 2. Stack used

| Layer | What |
|---|---|
| Reasoning + writing | Claude Code (Opus 4.7, 1M context) |
| Competitor research | WebSearch + WebFetch through Claude Code |
| Mobbin (UI references) | Mobbin MCP via `claude mcp add` (HTTP transport) |
| Design diagrams | Figma `generate_diagram` MCP → FigJam board |
| Implementation | Next.js 16 (App Router, Turbopack) + React 19 + TypeScript |
| Design system iterations | shadcn/ui → Mantine v9 → custom iOS-native primitives |
| Icons | Lucide → Tabler |
| Final UI tokens | iOS Human Interface Guidelines (system blue #007AFF, green, orange, purple) |
| Local dev | pnpm + macOS, port 3002 |

---

## 3. Process timeline

### Phase 1 — Research (chat hour 1)

**Output:** [`RESEARCH.md`](RESEARCH.md) — 17 KB competitive intel
**Coverage:**
- 8 competitor scans (Canopy Speak, Care to Translate, Martti / UpHealth, Jeenie, Voyce, LanguageLine, DeepL Voice, Google Interpreter)
- 5 archetypes mapped (verified phrasebook, VRI human, AI horizontal, AI consumer, our "AI clinical-grade" wedge)
- UX patterns to steal (verified-translation badge, face-to-face split, smart replies, auto-populate from EHR, one-click save)
- HIPAA / trust-signal UX table
- 5 candidate flow opportunities ranked by clinical value × design defensibility

**Strategic insight that shaped everything after:** the market is bimodal — **slow but trusted humans** (Martti, Jeenie, Voyce) vs **fast but clinically unvalidated AI** (DeepL, Google). DeepL explicitly *avoids* recommending its product for clinical conversation. The defensible wedge is *AI-first + clinically validated + HIPAA + human-interpreter escalation* — and that became the spine of every subsequent design decision.

**Friction:** Mobbin's public web pages 403'd through plain `WebFetch`. Solved later in Phase 4 by installing the Mobbin MCP via `claude mcp add mobbin --transport http https://api.mobbin.com/mcp` (next session would have full access).

### Phase 2 — UI flow documentation (chat hour 2)

**Output:** [`UI_FLOW.md`](UI_FLOW.md) — 35 KB, 9 sections
**Includes:**
- Hero flow choice + supporting flows
- Target Platforms & Form Factors (iOS native primary, web co-launch, Android post-MVP)
- User journey snapshot (Maya RN + Jorge ED patient, 8-step table)
- 8 key screens with ASCII wireframes + Intake kiosk bonus
- Cross-cutting states & interactions
- 10 numbered assumptions
- Out-of-scope deliberate omissions
- Open stakeholder questions
- Next iterations plan

The ASCII wireframes were a key forcing function — they made the design concrete without committing to pixels, and made it easy to spot UX problems early (e.g., where exactly the mic button lives in a face-to-face split).

### Phase 3 — Diagrams (chat hour 3)

**Output:** 3 FigJam diagrams on [board `VhpAsEOz7Wdo6xuiJ7Rw8v`](https://www.figma.com/board/VhpAsEOz7Wdo6xuiJ7Rw8v/ajaia)
1. Bedside flowchart (decisions, escalations, save paths)
2. Sequence diagram (6 actors: Clinician, EHR Epic, Translator App, AI Engine + Clarity Filter, Patient, Human Interpreter Service)
3. Final user flow (added later in Phase 4) — dual-device journey

Generated via Figma `generate_diagram` MCP (Mermaid.js syntax → editable FigJam). Wrote Mermaid carefully observing the tool's constraints: no emojis, no `\n` in labels, no HTML tags, camelCase node IDs.

### Phase 4 — Working app (chat hours 4–12) — 4 full rewrites

This was the longest and most iterative phase. Every rewrite was driven by *specific user feedback*, not invented requirements.

#### 4.1 — shadcn workstation Dashboard / Sessions / Detail

- Scaffolded Next.js 16 + Tailwind 4 + shadcn/ui (radix base)
- Built 3 pages: Dashboard, Sessions list, Session detail
- All running at `localhost:3002`, type-checked clean

**User feedback:** *"looks too wireframe-y"*

**Decision:** Swap design system. shadcn's neutrals + utility-only ethos produced a placeholder feel for a polished healthcare context.

#### 4.2 — Mantine v9 migration

- Stripped Tailwind 4 + shadcn theme tokens
- Added `@mantine/core` `@mantine/charts` `@mantine/notifications`
- Configured `postcss-preset-mantine`
- Healthcare-tuned theme: `clinical` (teal) + `trust` (blue) MantineColorsTuples
- DonutChart for language mix, RingProgress for compliance pulse
- Real iOS-style sidebar via Mantine AppShell

**User feedback:** *"styles, padding, colors aren't consistent"*

**Decision:** Create explicit design tokens + reusable primitives instead of inline values. Built `ui-kit.tsx` with `TOKEN`, `UiLabel`, `KpiCard`, `SectionCard`. Tightened Mantine theme defaults (Badge size, Button radius, Anchor color, etc.).

#### 4.3 — Translator route + iPhone mockup

**User pivot:** *"we need AI translator flow"*

Realised we'd built the audit/review side (Dashboard, Sessions, Detail) but never the *actual translator*. Added `/translator/[id]` with phase state machine: Setup → Consent → Live → End + Clarity & Human modals.

**Next user pivot:** *"if iPhone metaphor, then use iPhone mockup"*

Built `iphone-frame.tsx` — Dynamic Island, status bar (custom SVG signal/wifi/battery), bezel gradient, home indicator. Wrapped the translator inside it. Used the face-to-face split metaphor with the top half rotated 180° (clinician across the bed reads upright).

#### 4.4 — Apple-native UI + 4 missing features

**User feedback:** *"HIPAA-Ready, Cross-Device Access, Clinical Clarity Filters, Workflow-Optimized Communication — these 4 are still missing. And switch the UI to Apple-native UI."*

Spotted that 4 of the 6 core features in the brief were either invisible or only inferred. Created `ios-ui.tsx` with iOS Human Interface Guidelines primitives:
- `IOS` color constants (#007AFF blue, #34C759 green, #FF9500 orange, #FF3B30 red, #AF52DE purple)
- `IOSNavBar` `IOSLargeTitle` `IOSSection` `IOSCell` `IOSButton` `IOSToggle` `IOSSegmented` `IOSSheet` `IOSChip` `IOSCallout` `IOSStatusDot`

Mapped the 4 features into the UI:
| Feature | Where it shows |
|---|---|
| HIPAA-Ready | Header lock chip, Setup "Security" section, End audit hash |
| Cross-Device Access | Header iPad chip, Setup "Cross-device" toggle |
| Clinical Clarity Filters | Inline ⚠ chip on flagged bubbles, Setup "Strict mode" toggle, Clarity sheet |
| Workflow-Optimized Communication | Smart replies, EHR-linked patient name, "Show patient" action |

#### 4.5 — Face-to-face split abandoned

**User question:** *"so right now they're talking back-and-forth on one screen? Does the Talk button switch between the two sides?"*

This question exposed a real design flaw. The face-to-face split had only one mic button on the patient half — Maya had nowhere to tap. I patched it by adding a symmetric mic button to the clinician half (rotated section, near her edge).

**Then user said:** *"rethink the whole design"*

This was the most valuable critique of the day. The face-to-face flat-phone metaphor felt clever but failed three tests:
1. The clinician is **walking around the bed with the phone in hand** — not laying it flat on a table
2. The patient is often **lying down, in pain, possibly intubated** — they can't reliably interact with a screen
3. A workstation screenshot of an upside-down half **looks confusing** to portfolio viewers

Redesigned around a simpler mental model: **The phone is the clinician's tool. The patient hears audio. The patient might briefly read big Spanish text when needed.**

Switched to an **iMessage-style chat UI**:
- Blue bubbles (clinician's English + small Spanish translation)
- Gray bubbles (patient's Spanish + small English translation)
- Big single mic button at bottom
- Smart replies above input
- "Show patient" action per clinician bubble → full-screen Spanish overlay for moments when the patient does need to read

This was the right design.

#### 4.6 — Full Home → End mobile journey

**User pivot:** *"need the journey to start from the mobile app's Home page and run end-to-end"*

Right — I'd only built the live conversation. Real apps start at a Home / Today list. Restructured to a single-file state machine at `/page.tsx`:

```
Home (Today's patient list)
  → tap patient
  → Setup (Pre-flight)
  → Consent
  → Live (chat)
  → End (Saved + audit)
  → back to Home
```

Plus 4 sheets (Settings, Clarity, Human, End-confirm) and 1 full-screen overlay (Mirror).

Deleted the old `/translator/[id]` route. Cleaned up.

#### 4.7 — Cross-Device dual-mockup

**User pivot:** *"show 2 mockups when Cross-Device is on"*

Built `ipad-frame.tsx` (iPad Pro 11" form factor, side buttons, camera dot, status bar). Added an `IPadPatientView` component that mirrors the patient-facing state across all phases.

When Cross-Device toggle is ON, the page renders **iPhone + iPad side by side**.

**User clarifying question:** *"if the phone is on the patient side, shouldn't one half be English and the other Spanish? Would it be better to give the iPad to the patient side?"*

This was the device-assignment moment. We made it explicit:
- Added **device owner labels** above each mockup ("Clinician · English / Maya Rodriguez, RN" + "Patient · Spanish / Jorge Ortiz")
- Updated iPhone chat bubbles to **lead with English** regardless of speaker (clinician's reading language)
- iPad stays Spanish-led
- Each device monolingual to its owner

**User caught a remaining bug** via screenshot: during Consent + Cross-Device ON, the iPhone was still showing patient Spanish consent. Fixed: split `ConsentView` to render a clinician-facing **"Waiting for patient consent"** state in English when Cross-Device is ON. The iPad runs the patient consent independently. Setup CTA also changed copy dynamically: "Hand phone to patient" → "Send consent to iPad".

### Phase 5 — Final user flow diagram

Added the third FigJam diagram (this time covering the dual-device journey end-to-end including the Cross-Device decision branch and the 4 sheet overlays returning to Live).

---

## 4. Key UX decisions, ranked

| # | Decision | Why it matters |
|---|---|---|
| 1 | **Abandon face-to-face split metaphor** | The phone is in the clinician's hand, not laid flat between two people. This was the biggest pivot of the day — wiped away a clever-but-wrong abstraction. |
| 2 | **Lead with the owner's language on each device** | Clinician sees English first on iPhone. Patient sees Spanish first on iPad. Translation is the *secondary* line for audit. |
| 3 | **iPhone for clinician, iPad for patient** | One device per role, monolingual UI, clear ownership. No more "whose screen is this?" ambiguity. |
| 4 | **Single big mic button per device, not two** | Apple Translate Conversation pattern. Each user has their own affordance on their own device. |
| 5 | **Audit trail visible in-app, not buried in admin** | Hash, consent timestamp, encryption verified — visible on the End screen. Trust signal *to the clinician*, not just compliance. |
| 6 | **Cross-Device as a switchable mode, not the default** | Toggle off → falls back to single-device hand-over (smaller hospitals). Toggle on → dual mockup. Real product also needs both modes. |
| 7 | **Clarity Filter as inline chip + sheet** | Bubble gets a small orange chip. Tap to disambiguate. Clinician sees their chosen meaning recorded on the bubble afterward. Auditable. |
| 8 | **Skip the patient-app paradigm** | Patient never authenticates. iPad is a passive bedside display. Cuts a huge auth/onboarding surface. |
| 9 | **"Show patient" action on clinician bubbles** | When the patient does need to read (e.g., a discharge instruction), one tap flips the iPhone into a full-screen big-Spanish view. Acknowledges the edge case without polluting the main flow. |
| 10 | **"Verbal consent given · proceed" override** | Sometimes the patient is too distressed to interact with iPad. Clinician can manually attest verbal consent. Captured in audit log. |

---

## 5. AI collaboration patterns that worked

### What worked
- **Specific, short feedback drove the best pivots.** *"still not right"* + a screenshot was 100× more useful than abstract feedback.
- **Iterative throw-aways.** I rewrote the translator page ~7 times. Each version was disposable; the design *converged*.
- **Splitting "research" from "design" from "build".** First we agreed on a design (UI_FLOW.md), then started coding. Coding-first would have produced a beautiful wireframe of the wrong thing.
- **FigJam diagrams as alignment checkpoints.** The flowchart was generated *after* the chat-style redesign, so it captured the right flow.
- **Living docs alongside code.** RESEARCH.md, UI_FLOW.md, WORKFLOW.md — the rationale travels with the code.

### What didn't work
- **Initial Mobbin attempt** via plain WebFetch hit a 403 paywall. Should have asked the user about the MCP earlier — installing `mobbin` via `claude mcp add` was a one-line fix that unlocked the right tier.
- **Building the workstation Dashboard first.** It was a beautiful audit/review interface that wasn't actually the brief. Should have started with "the actual translator screen" and built backwards.
- **Calling the face-to-face split "the hero".** Spent multiple iterations refining a metaphor that didn't survive contact with the question *"who's holding the phone?"*. Should have stress-tested the metaphor on day one.
- **Inconsistent spacing/colors** in early Mantine version. Without explicit design tokens, each card drifted slightly. The `ui-kit.tsx` primitives fixed it.

### Friction worth fixing in future sessions
- **GateGuard hook** required facts before every Bash/Edit/Write — slowed iteration significantly. Worth disabling for fast prototype sessions: add `pre:edit-write:gateguard-fact-force` to `ECC_DISABLED_HOOKS`.
- **Disk space hit ENOSPC twice mid-session.** node_modules + .next cache filled the volume. Set up `du -sh node_modules .next` monitoring next time.
- **No git init** in the workspace meant zero rollback safety net. Should `git init && git add . && git commit -am "phase: ..."` after every major rewrite.

---

## 6. Final artifacts inventory

### `/Users/harryhein/Desktop/ajaia/`

| File | What |
|---|---|
| `RESEARCH.md` | 17 KB — competitive landscape, UX patterns, trust signals, flow opportunities |
| `UI_FLOW.md` | 35 KB, 9 sections — hero flow choice, platforms, journey, 8 screens with ASCII wireframes, states, assumptions, open questions, next iterations |
| `WORKFLOW.md` | This file — process retrospective |
| `workstation/` | Next.js 16 + React 19 + TypeScript working app |

### Working app at `localhost:3002`

| File | What |
|---|---|
| `src/app/page.tsx` | The whole mobile journey (Home → Setup → Consent → Live → End + sheets + Mirror overlay) |
| `src/app/layout.tsx` | MantineProvider + Notifications + soft gradient backdrop |
| `src/components/iphone-frame.tsx` | iPhone 16 Pro device chrome |
| `src/components/ipad-frame.tsx` | iPad Pro 11" device chrome |
| `src/components/ios-ui.tsx` | iOS-native UI primitives (NavBar, Section, Cell, Button, Toggle, Segmented, Sheet, Chip, Callout) |
| `src/lib/mock-data.ts` | Synthetic encounters, sessions, transcripts (no PHI) |
| `src/lib/types.ts` | TypeScript types for Encounter, Session, TranscriptLine |
| `src/lib/theme.ts` | Mantine theme override (kept for sheet portals & notifications) |

### FigJam board

[ajaia board (VhpAsEOz7Wdo6xuiJ7Rw8v)](https://www.figma.com/board/VhpAsEOz7Wdo6xuiJ7Rw8v/ajaia) contains three diagrams:
1. ajaia — Bedside Translator UI Flow (flowchart)
2. ajaia — Bedside Translator Sequence (sequence diagram)
3. ajaia — Mobile User Flow (dual-device) (final user flow)

---

## 7. What I would do differently next time

1. **Lead with the use case, not the metaphor.** "Who is holding the phone? Who is reading the screen?" should be question one, not question 12.
2. **Validate the design system choice with one component** before scaffolding pages. Mantine vs shadcn vs custom iOS — should have spiked all three at *Card + Button + Cell* level in 30 minutes.
3. **Install all MCPs at session start.** Mobbin, Figma, Notion, Linear — they pay back immediately. The Mobbin MCP install was a one-liner that I should have done before research started.
4. **Start with the mobile, not the workstation.** The brief said *"AI translator"* and *"intake/bedside/telehealth"* — all mobile-first. I built workstation Dashboard first and had to dismantle it.
5. **Keep one source-of-truth design doc**, edit it as decisions land. UI_FLOW.md was that doc here; it should be updated *during* the rewrites, not just at the start.

---

## 8. Submission checklist

What this body of work fulfills against the brief:

- [x] Key screens for the flow (5 phases × 2 devices = 10 screens, plus 4 sheets, plus 1 full-screen overlay)
- [x] Brief explanation of the user journey (UI_FLOW.md §3 + FigJam flowchart + final user flow)
- [x] Important states & interactions (UI_FLOW.md §5 + the running prototype itself, every state reachable)
- [x] Assumptions documented (UI_FLOW.md §6 — 10 numbered)
- [x] Strong UX thinking (RESEARCH.md strategic-wedge analysis + Clarity Filter + dual-device split)
- [x] Clean information hierarchy (iOS HIG primitives + device-owner labels)
- [x] Trust & clarity in healthcare context (encryption chips, audit trail card, hash on End screen)
- [x] Realistic workflow design (Today list → encounter → consent → live → save to chart)
- [x] Speed (smart replies + auto-populated language) + usability (single mic, big tap targets) + compliance (audit visible in-app)
- [x] **Bonus: working interactive prototype** at `localhost:3002`

---

*Notes from a single working day with Claude as the design partner.*

---
---

# AI Workflow Note — Marketing Landing Page Track — 2026-05-15

**Project:** ajaia — Public marketing site recreation (parallel track to the Translator UI work above)
**Brief:** *"analyze https://ajaia.ai/ and recreate the landing page using the same content, in multiple design tastes that don't look AI-generated — make it look like a website for AI tools"*
**Author / driver:** Kaung Myat (Harry Hein)
**AI collaborator:** Claude (Opus 4.7, 1M context, via Claude Code)
**Total iterations:** 10 distinct design variants + 1 chosen hybrid that absorbed ~18 refinement passes

---

## 1. Goal of the day

Recreate the Ajaia marketing landing page — but instead of a single faithful clone, explore the *visual identity space* with multiple design directions, then converge on the most effective hybrid. Constraints:
- Same copy as the original ajaia.ai (verbatim where possible)
- Must read as "designed for an AI consultancy" — not the generic purple-gradient-on-black template that signals "AI-generated"
- Once the brand DNA surfaced, lock to it: navy `#001d6b`, sky-blue accent `#97c2f8`, pale-blue surface `#e1eeff`, Montserrat 600 / Poppins, 13–24px radius, 20px grid

What we shipped: 10 hand-coded standalone HTML files + a navigable gallery, ending in a polished hybrid that combines a Brutalist hero, an Apple sequential body, and a PlayStation immersive CTA — all using the real Ajaia palette, real logos, and real pillar illustrations from Framer CDN.

---

## 2. Stack used

| Layer | What |
|---|---|
| Content extraction | WebFetch on https://ajaia.ai/ |
| Brand DNA source | `DESIGN-ajaia-ai.md` (auto-extracted spec) |
| Implementation | Plain HTML + CSS + ~100 LOC inline JS — no framework, no build step |
| Typography | Google Fonts: Montserrat (headings), Poppins (body), JetBrains Mono (technical accents), Fraunces (Editorial Magazine variant) |
| Icons (final pass) | Phosphor via Iconify (`api.iconify.design/ph:*`) |
| Brand logos | Iconify `logos:` collection (full-color SVG) + `simple-icons:` for niche brands; multi-color logos on dark chips wrapped in white badges for contrast |
| Real Ajaia assets | Framer CDN (`framerusercontent.com/images/*`) — logos, favicons, pillar illustrations |
| Asset discovery | curl + Python regex parsing of ajaia.ai source HTML |
| Verification | curl `-w "%{http_code}"` for asset URL liveness; Read tool on downloaded PNG for visual content |
| Preview | Launch panel via file:// |

---

## 3. Process timeline

### Phase 1 — Five visually distinct directions (chat hours 1–2)

Built 5 separate complete landing pages, each with a different visual language:

| # | Direction | DNA borrowed from |
|---|---|---|
| 01 | Editorial Swiss | Stripe / Linear / Vercel — strict 12-col grid, mono accents |
| 02 | Soft Brutalist | OpenAI / v0 / Cursor — oversized type, raw blocks |
| 03 | Editorial Magazine | Anthropic / Pitch / Read.cv — Fraunces serif, drop caps, chapter dividers |
| 04 | Terminal Dark | Supabase / Replicate / Resend — dot grid, mono everywhere |
| 05 | Glass Aurora | Apple / Mercury / Arc — liquid gradients, frosted surfaces |

Each had its own typography pairing and color palette. Plus a navigable `index.html` gallery with live iframe previews.

**Friction:** All five used non-brand colors (cream, rust, olive, orange). The brand DNA spec arrived later.

### Phase 2 — Brand DNA application (chat hour 3)

User uploaded `DESIGN-ajaia-ai.md` with the actual Ajaia brand:
- Navy `#001d6b` primary canvas
- Sky-blue `#97c2f8` single dominant accent
- Pale-blue `#e1eeff` for secondary surfaces
- Montserrat 600 / Poppins, 13px+ radius, 20px base spacing

Rewrote all 5 designs + gallery using only this palette. Each variant stayed visually distinct via composition/layout despite the locked color/font system. Variety from *paintings*, not *paints*.

### Phase 3 — Real-brand-pattern variants (chat hour 4)

Added 4 more variants borrowing **layout DNA** (not just visual style) from real consumer products:

| # | Layout reference | Result |
|---|---|---|
| 06 | Spotify | Left sidebar + "Your Engagements" library + album-grid product cards + track-list service rows + "Now Playing" status bar |
| 07 | Apple | Thin top nav + product subnav + centered hero with device mockup + sequential story sections + compare table |
| 08 | PlayStation | Immersive radial hero + product card + filter chips + featured-band uneven grid + PS-Store-style row list |
| 09 | Linear | Floating pill nav + announcement chip + gradient-clipped hero + bento grid + testimonial section |

Total: **10 designs** + 1 gallery (`index.html`).

### Phase 4 — Hybrid synthesis (chat hour 5)

User picked favorites element-by-element:
- *"I like Apple's overall layout"*
- *"the 'AI moves quickly — and so should you.' from PlayStation is the one I like"*
- *"for the hero section's huge typography, I like the Brutalism direction"*

Built `design-10-hybrid.html`:
- **Hero** — Brutalist Montserrat 220px headline, outlined "curiosity" + filled "capability"
- **Body** — Apple sequential story sections (cream → navy → cream → dark) with tile-row uneven grids, compare table, colorful industry posters
- **CTA** — PlayStation radial-gradient immersive section with "AI moves quickly — and so should you."

### Phase 5 — ~18 refinement passes (rest of the day)

Each pass triggered by a specific user observation. Chronologically:

| # | Pass | What changed |
|---|---|---|
| 1 | Micro-interactions | IntersectionObserver scroll-reveal + cursor-follow tile glow + magnetic buttons |
| 2 | Enterprise Integration Network | Added the missing section from ajaia.ai — two opposite-scrolling marquees of foundation models + enterprise platforms |
| 3 | Real brand logos | Swapped 50 text chips for Iconify `simple-icons:` SVGs |
| 4 | True brand colors | Migrated 23/24 logos to Iconify `logos:` collection (multi-color official marks); Databricks stayed on simple-icons tinted `#FF3621`; ServiceNow/Workday swapped for Jira/Gusto (no logos: match) |
| 5 | Icons reverted from Lucide | User: *"don't use feather icons or the icon pack you just used"* → Phosphor (`ph:*`) across all 19 icon slots |
| 6 | Disk full ENOSPC | Fired twice mid-session. Killed Writes mid-flight. User cleared space; resumed. |
| 7 | Custom illustrations attempt | Built scene-style inline SVG (mountain landscape, training scene). User: *"just switch back to icons"*. Reverted to Phosphor in 14 edits. |
| 8 | Parallax | Hero orbs split apart on scroll, stamp fades up, h1 drifts down for depth, hero-bottom cards have staggered Y multipliers, CTA orb drifts opposite to scroll, h2 floats up |
| 9 | Real impact numbers | "M+" placeholders → "5M+ Lives / $120M+ Annual Savings / 50+ AI Employees Built" |
| 10 | Background blinking nodes | Removed over-designed floating note cards. 20 plain accent dots with `nodeBlink` keyframe + staggered delays. |
| 11 | GovTech card invisible | `.tile.navy` matched section `var(--navy)` → added `linear-gradient(surface→navy-2)` + accent border + shadow |
| 12 | Row 2 carousel contrast | Multi-color brand logos (IBM, SAP) blending into navy chips → wrapped each in a white 32×32 rounded pill backplate |
| 13 | Compare table → "Available services" | Compare-grid → catalog list with left-detail / right-deliverables rows + Track XX/06 numbering + per-track tagline + "Engage track →" CTA |
| 14 | Real Ajaia logo | Found wordmark at `framerusercontent.com/images/1WLelqbeyj7nE3eRuorp4vURh4c.png`. Replaced text "Ajaia" in nav and footer. Added matching light/dark/apple-touch favicons. |
| 15 | Real pillar illustrations | Mapped 4 illustrations to pillars by DOM-order analysis of ajaia.ai source (image → title pattern in raw HTML) |
| 16 | Pillar 1 invisible | Illustration was navy-colored on navy tile. Diagnosed by `Read` on the downloaded PNG. Fix: CSS filter (`brightness(0) invert(1) sepia + hue-rotate + saturate`) re-tints navy → sky-blue only on dark-tile pillars. |
| 17 | Double nav merge | Apple-style global+product double nav was redundant on a single-page site → single 64px nav with logo / centered links / CTA pill |
| 18 | Misc contrast + spacing | Industry card h3/em alignment fix, services-list catalog layout polish, etc. |

---

## 4. Key visual/UX decisions

| # | Decision | Why |
|---|---|---|
| 1 | **Hybrid over single best** | Each style had strengths the others lacked. Combining brutalist visual punch + Apple breathing-room body + PlayStation cinematic CTA gave the best of all three. |
| 2 | **Brand DNA over visual variety** | Once the brand spec arrived, all 10 variants used the same navy/accent/font system. Variety came from composition. |
| 3 | **Real brand logos over icon-marks** | Iconify `logos:` multi-color marks read as "trusted enterprise partners" instantly. Single-color silhouettes read as "stylized icon set." |
| 4 | **White pill behind logos on dark chips** | Preserves brand colors AND solves dark-on-dark contrast. Common pattern on Stripe/Linear customer-logo strips. |
| 5 | **Phosphor over Lucide** | User noticed Lucide. Phosphor's slightly chunkier, rounder strokes feel friendlier without being twee. Visually different. |
| 6 | **Real Ajaia logo from Framer CDN** | Linking direct instead of self-hosting — fast, cached, always tracks production. |
| 7 | **CSS filter to recolor pillar illustrations** | Original PNGs are flat navy. Derived a `brightness(0) invert(1) + hue-rotate` chain that re-tints navy → sky-blue accent only on dark-background tiles. Pillars 2/3 keep the original navy. |
| 8 | **Blinking nodes, not annotated cards** | The annotated cards I added first were too noisy. *"nothing else needs to be added"* was the right edit. 20 plain dots with staggered delays = enough atmosphere. |
| 9 | **Available services catalog, not compare table** | "Compare" implies *which is better?* — wrong frame. "Available services" with left/right detail/deliverables implies *which fits?* |
| 10 | **Parallax intensity tuned per element** | Hero orbs ±90px, h1 +60px, stamp -50px + fade, CTA orb ±140px, CTA h2 ±36px opposite direction. Different speeds = perceived depth. |

---

## 5. AI collaboration patterns

### What worked

- **Variant-first exploration.** Building 5 → 9 → 10 distinct designs in parallel let the user pick *components* across designs rather than give abstract feedback. The hybrid emerged from concrete favorites.
- **Verbatim copy preservation.** WebFetch returned the exact site copy at session start; all 10 variants used identical text. Iteration focused on *layout*, not *messaging*.
- **One-liner critique → focused pivot.** *"just switch back to icons"* (4 words) was clearer than any detailed brief. The single sentence drove a 14-edit reversal.
- **Real-asset upgrade pass at the end.** Once structure was set, swapping in real logos + favicons + pillar illustrations was a 30-minute win that visually elevated everything.
- **Visual debugging via Read tool on PNGs.** When Pillar 1 looked "missing", I downloaded the PNG and read it as an image — revealed navy-on-navy invisibility, not a broken URL.

### What didn't work

- **Custom SVG illustrations attempt.** Spent ~30 minutes building scene-style inline SVG (mountains, training scene). User reverted immediately. Lesson: don't escalate visual complexity faster than the user asks.
- **Over-decorated hero notes.** Built 4 floating annotation cards with connection wires + glass effect. User: *"nothing else needs to be added"*. Lesson: when user says *"blinking nodes"*, they mean *blinking nodes* — not annotated callouts.
- **DOM-order asset mapping ambiguity.** Took 3 analysis passes before the right pattern (image → title in DOM order) crystallized. First heuristic (image follows title) was wrong.
- **Compare table was wrong frame.** Built the original "Compare service tracks" because of the visual pattern, not the actual use case. User reframed as "Available services" and the new layout fell out naturally.
- **GateGuard hook friction.** Every Bash/Edit/Write required "facts before" — slowed every iteration. Mentioned the disable option once mid-session; should have followed up.

### Friction worth fixing for next sessions

- **Disk space discipline.** ENOSPC fired twice mid-session. `du -sh ~/Library/Caches/* | sort -h | tail -10` at session start would have shown the offender.
- **Pre-bake the asset-discovery flow.** Took multiple curl+grep+Python passes to map Ajaia's Framer CDN structure. A reusable "extract brand assets from Framer site" script would save 15 minutes next time.
- **Sed for bulk URL swaps.** Switching the 50 logo URLs from `cdn.simpleicons.org` → `api.iconify.design/simple-icons:` was clean with sed. Same pattern works for any bulk URL migration.

---

## 6. Final artifacts inventory

### `/Users/harryhein/Desktop/ajaia/` (marketing site)

| File | What |
|---|---|
| `index.html` | Navigable gallery with iframe previews of all designs |
| `design-01-editorial.html` | Editorial Swiss (Stripe/Linear DNA, navy palette) |
| `design-02-brutalist.html` | Soft Brutalist (OpenAI/v0 DNA, navy palette) |
| `design-03-magazine.html` | Editorial Magazine (Anthropic DNA, pale-blue canvas) |
| `design-04-terminal.html` | Terminal Dark (Supabase DNA, dot grid + mono) |
| `design-06-spotify.html` | Spotify layout (sidebar + library + Now Playing bar) |
| `design-07-apple.html` | Apple product-page layout (top nav + sub nav + sequential stories) |
| `design-08-playstation.html` | PlayStation Store layout (immersive hero + featured band + filter chips) |
| `design-09-linear.html` | Linear marketing layout (pill nav + bento + testimonial) |
| `design-10-hybrid.html` | **The chosen design** — Brutalist hero + Apple body + PlayStation CTA + real Ajaia brand assets |

### Design 10 — section inventory

| Section | Content |
|---|---|
| Nav | Real Ajaia wordmark + 6 anchor links + sky-blue pill CTA |
| Hero (Brutalist) | 220px outlined+filled headline, JetBrains Mono stamp row, 20 blinking accent nodes scattered in background, 3 info cards bottom |
| Metrics | 3-column big numbers (5M+ / $120M+ / 50+) with sky-blue `+` modifier |
| 4 Pillars | Apple uneven tile grid with real Ajaia illustrations (filter-tinted on dark tiles) |
| Service Offerings | "Available service tracks" catalog list — left detail + right deliverables, 6 tracks |
| Industries | 4 gradient posters with Phosphor icons + Industry XX label + brand sub-line |
| Enterprise Integration Network | 2 opposite-scrolling marquees — 12 foundation models (white chips, multi-color logos) + 13 enterprise platforms (navy chips, white-pill-backed multi-color logos) |
| Products | 5 tiles with Phosphor icons + tagline + Learn-more link; GovTech card with custom gradient background for contrast |
| FAQ | 8 questions on deep-navy background, Apple-style accordion |
| CTA (PlayStation) | Radial-gradient immersive section with parallax orb + h2 + accent CTA + trust strip |
| Footer | Real Ajaia wordmark + brand description + 4-column links + © 2026 |

### Active JS in design 10

```
- IntersectionObserver scroll-reveal across ~25 targets
- requestAnimationFrame parallax handler (hero orbs, h1, stamp, hero-bottom, CTA orb, CTA h2)
- pointermove handler for tile cursor-follow glow + glyph nudge
- pointermove handler for magnetic buttons (.ps-btn, .btn-primary, .btn-ghost, .buy)
- prefers-reduced-motion fallback for all of the above
```

---

## 7. What I would do differently next time

1. **Ask for the brand DNA file before building anything.** Phase 1's 5 variants had to be rebuilt with the brand palette in Phase 2. A 30-second "do you have a brand spec / design tokens / existing site I should match?" at the start would have saved an hour.
2. **Show the gallery preview earlier.** The user picked the hybrid recipe (brutalist + apple + playstation) only after seeing 9 options side by side. Should have built the gallery first, then refined.
3. **Resist visual escalation.** Multiple times I added more than asked (4 floating note cards instead of 20 dots; scene illustrations instead of icons). The user pulled me back each time. Listen to "just the X" literally.
4. **Verify external asset URLs end-to-end with `Read`.** The pillar-1 "missing" was navy-on-navy invisibility. One `Read` on the PNG diagnosed it in 10 seconds. Build that habit earlier.
5. **One source-of-truth for design tokens.** `var(--navy)`, `var(--accent)`, etc. sprinkled across 10 files. A shared `tokens.css` with a `<link>` would have cut total CSS ~30%.

---

## 8. Submission checklist

What this body of work fulfills:

- [x] Faithful content match to ajaia.ai (verbatim copy, all 6 services, 5 products, 4 industries, 10 FAQs)
- [x] On-brand visual identity (navy + sky-blue + pale-blue, Montserrat + Poppins, 13–24px radius, 20px grid)
- [x] Multi-direction exploration (10 distinct design tastes)
- [x] Convergent hybrid (design 10 = best-of synthesis)
- [x] Real brand assets (logo, favicons, pillar illustrations from Framer CDN)
- [x] Real enterprise/foundation-model brand logos (Iconify logos collection)
- [x] Interactive polish (parallax, scroll-reveal, cursor-follow glow, magnetic buttons, blinking nodes, marquee carousels)
- [x] Accessibility courtesy (`prefers-reduced-motion` across all animations)
- [x] Responsive (mobile breakpoints at 900–1100px)
- [x] Zero framework dependency (plain HTML/CSS + ~100 LOC JS, no build step)

---

*Marketing landing page track — same day, same brand, completely different surface area from the Translator workstation track above.*
