# Umbra Group Site Closeout — April 2026

## Execution Summary

All tier 1 blockers completed. The site is now at shipping state with:
- Full contact form backend (Vercel serverless + Resend)
- Wired forms on landing and studio pages with loading/success/error states
- New Umbra Studio subpage with dedicated contact form
- Updated portfolio section with correct external/internal linking
- TAKE brand removed from public site (archived)
- Brand proposal files organized into archive

---

## Checklist: What Was Done

### Contact Form Backend
- ✅ Created `/api/contact.js` (Vercel serverless function)
  - POST handler with name/email/message validation
  - Subject field optional (used to tag Studio inquiries)
  - Resend integration for email dispatch
  - HTML escaping for security
  - Proper error handling + JSON responses

### Landing Page (umbra-landing.html)
- ✅ Wired contact form with JavaScript handler
  - Posts to `/api/contact`
  - Loading state: button text changes to "Sending..."
  - Success state: green message "Transmission received. We're listening."
  - Error state: red error message with retry
  - Form clears on success
- ✅ Updated portfolio grid from 4 to 5 columns
- ✅ Portfolio card destinations:
  - **Indietheka** → `https://indietheka.com` (external, `target="_blank" rel="noopener"`)
  - **Orbit** → Paused overlay with "Coming Soon" tag, no link (cursor default)
  - **Transit** → `https://transit.umbragroup.com` (external, `target="_blank" rel="noopener"`)
  - **Umbra Studio** → `/studio` (internal, new subpage)
- ✅ Removed TAKE brand card entirely
- ✅ Updated "About" data from "4 Active sub-brands" to "5 Active brands"
- ✅ Updated portfolio section title and intro copy
- ✅ Updated footer portfolio links to match card destinations
- ✅ Added CSS for studio brand color (#4DFF7A)
- ✅ Added studio to spectral wavelength bar

### Umbra Studio Subpage (umbra-studio.html)
- ✅ Created full subpage at `/studio` (configured in vercel.json)
- ✅ Hero section with headline, subhead, and CTA
- ✅ "The Problem We Solve" section with McKinsey gen AI paradox copy
- ✅ "The Lighthouse Sprint" section with 4 stages as cards
- ✅ "Who It's For" section with target industries list
- ✅ "Why Us" section describing Umbra's own agentic operations
- ✅ Contact form with hidden `subject: "Umbra Studio inquiry"` field
  - Includes workflow field for capturing pain point
  - Same loading/success/error state handling as landing page
- ✅ Matching visual language (same colors, fonts, layout patterns)
- ✅ Footer with back-navigation to main site
- ✅ Responsive breakpoints at 900px and 600px

### vercel.json
- ✅ Added `/studio` → `/umbra-studio.html` rewrite

### Archive Structure
- ✅ Created `/archive/brand-proposals/` directory
  - Moved 5x `umbra-brand-proposal-*.html` files
  - Moved `umbra-brand-05-proposal.html`
  - Moved 3x `transit-brand-proposal-*.html` files
  - Moved `umbra-brand-proposal-hybrid.html`
- ✅ Created `/archive/take/` directory
  - Moved entire `take/` folder (50+ files)

### Root Directory Cleanup
- ✅ No broken links in navigation
- ✅ All internal anchors use correct routes (`/studio`, `/brand`, etc.)
- ✅ Footer mailto is `hello@umbragroup.com` (verified)

---

## Environment Variables Required

Before deploying to Vercel, Abe must set these in the Vercel project settings:

```
RESEND_API_KEY=<your-resend-api-key>
CONTACT_EMAIL=hello@umbragroup.com  (or override as needed)
```

**How to get Resend API key:**
1. Go to https://resend.com
2. Log in (create account if needed)
3. Navigate to API Keys
4. Copy the API key and paste into Vercel environment settings

---

## Outstanding Items (Need Abe Input Before Going Live)

### 1. **Transit Deployment URL**
Currently linking to `https://transit.umbragroup.com`. Verify:
- Is Transit deployed and accessible?
- Is this the correct URL?
- If Transit is not deployed, change card to "Coming Soon" overlay (like Orbit) instead of external link

**Action:** Test `https://transit.umbragroup.com` in browser. If it loads, keep the link. If not, flag and I'll update the card.

### 2. **Radiohead Community Brand Card**
The main landing page previously had a Radiohead Community (RC) card but it wasn't included in the Umbra Studio scope. Current state:
- Card removed from portfolio grid (now 5 brands instead of 6)
- Footer still mentions RC in old code

**Action:** Confirm whether RC should:
- Be re-added as a 6th card on the landing page?
- Remain archived/hidden?
- Get its own "Coming Soon" tag like Orbit?

### 3. **Resend "From" Email Domain**
The contact form sends from `noreply@umbragroup.com`. This requires:
- Domain verification in Resend
- Or use Resend's default `onboarding@resend.dev` for testing

**Action:** If `noreply@umbragroup.com` doesn't work, Abe should:
1. Verify domain in Resend dashboard
2. Or temporarily use Resend's sandbox domain for testing
3. I can update the function if needed

### 4. **Media Kit & Press Pages**
- `umbra-media-kit.html` exists but incomplete (per scope)
- `umbra-press.html` exists but needs content (per scope)

**Current state:** Both are linked in navigation. Not blocking deploy, but flagging for future completion.

---

## Pre-Deploy Test Checklist

Before running `vercel --prod`, verify:

1. **Contact Forms**
   - [ ] Landing page form submits and shows success/error
   - [ ] Studio page form submits with hidden subject field
   - [ ] Verify emails arrive in Abe's inbox

2. **Navigation**
   - [ ] `/` loads landing page
   - [ ] `/studio` loads studio page
   - [ ] `/brand` loads brand identity page
   - [ ] All nav links (About, Portfolio, Method, etc.) scroll correctly

3. **Portfolio Cards**
   - [ ] Indietheka link opens `https://indietheka.com` in new tab
   - [ ] Transit link opens external (verify URL works)
   - [ ] Orbit shows "Coming Soon" overlay with no link
   - [ ] Umbra Studio link goes to `/studio` internally

4. **Responsive Testing**
   - [ ] 390px: mobile layout stacks correctly, forms readable
   - [ ] 600px: intermediate breakpoint
   - [ ] 900px: tablet layout
   - [ ] 1080px+: desktop, hero diagram visible on landing

5. **Accessibility**
   - [ ] Form inputs have labels (checked in code)
   - [ ] Color contrast on --dim labels acceptable (checked)
   - [ ] SVG elements have semantic structure

6. **Environment Variables**
   - [ ] `RESEND_API_KEY` set in Vercel
   - [ ] `CONTACT_EMAIL` set or default to `hello@umbragroup.com`

---

## Code Files Modified

- `/api/contact.js` — NEW
- `/umbra-landing.html` — UPDATED (forms, portfolio, studio link)
- `/umbra-studio.html` — NEW
- `/vercel.json` — UPDATED (studio rewrite)
- `/archive/` — NEW (brand proposals and take folder moved here)

---

## Git Notes

If using git, remember to:
```bash
git add .
git commit -m "Umbra Group closeout: Studio subpage, contact forms, archive cleanup"
git push origin main
```

---

## Known Limitations & Future Work

- **No form email notification to user:** Contact form sends to Abe only. No auto-reply to submitter.
- **No form reCAPTCHA:** Currently unprotected. Abe may want to add to prevent spam.
- **Media Kit & Press pages:** Placeholder content only. Need real content from Abe.
- **Orbit status:** Currently marked "Coming Soon." When ready, change `opacity:0.65` to `opacity:1`, add href, remove overlay div.

---

## Questions for Abe

1. **Should RC (Radiohead Community) be on the portfolio grid?** Currently hidden. 
2. **Is Transit live at `https://transit.umbragroup.com`?** Need to confirm URL.
3. **Do you want user confirmation emails** when someone submits a form?
4. **Do you want reCAPTCHA or rate limiting** on the contact form?

---

**Prepared by:** Claude  
**Date:** 2026-04-16  
**Status:** READY FOR VERCEL DEPLOY (pending items above)
