Built in public · Changelog
How Supernova learned the job.
Product panorama
One deal, one continuous operating loop.
Six agents live in the product today, propose-only, a named human at every gate. Everything below ships; nothing is a mock.
Brief
The Daily Brief opens each cockpit: meetings with exact times, deals needing a touch, the one move.
Draft
The Email Drafter investigates the thread through scoped tools, then a fresh-context critic verifies every claim.
Qualify
Deal Check scores MEDDPICC with the evidence that earned each score, never vibes.
Prep
Meeting Prep briefs every call: who is in the room, where it stands, what to ask.
Track
The Promise Tracker extracts what each side committed to, source attached, resolved in place.
Audit
Every run costed and receipted: model, tokens, verdict, the audit trail behind every artifact.
14
Jul 2026
Tuesday
4 shipped
DesignEvery page polished for espresso: two systemic sweeps + borderless chips
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
Every page polished for espresso: two systemic sweeps + borderless chips
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
Getting every app page to the landing's bar, by fixing the SYSTEM rather than 30 screens:
- Shadow sweep: 111 hardcoded shadow literals (93× the same raised string) across 50+ files replaced with the theme-aware
shadow-rest / raised / floattokens, so every card now has real depth on espresso and the warm tint on cream. Only deliberate one-offs remain (sidebar ring, the changelog glow, kbd inset). - Central dark tint layer (globals.css): the ~110 light-assuming status tints (
bg-amber-100 text-amber-700chips, icon tiles, banners) are remapped once, in one place, for.dark/.section-dark— pale washes become translucent hue washes, emphasis text brightens to shades tuned to the dark Daylight palette. The shared status maps (leadStatus/leadTemp/dealStage) ride it with zero call-site changes. - Chips lose their borders (Daylight rule): Badge
outline→ tone wash; Buttonoutline→ raised tone step + shadow (no hairline); Kbd and Alert borderless. Badge grew semantic tones (success/warning/danger/info/clay/neutral) so pages converge on ONE chip language instead of hand-rolled spans.
Verified on the espresso app: Pipeline (kanban chips as hue washes), the deal hub (stage gate, MEDDPICC, timeline), Accounts. Also fixed a banned em dash in the pipeline briefing sentence.
DesignRecording page v3: three jobs, three tabs (10/10 pass)
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three…
Recording page v3: three jobs, three tabs (10/10 pass)
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three…
The single-scroll rebuild still read poorly (lopsided hero cards, a wall of 9 uniform risk bullets, a starved rail, no visual anchor). The insight that fixed it: a recorded call has three different jobs — act on it, mine it, read it — so the page is now Overview / Signals / Transcript tabs with a persistent context rail. What made it sing:
- Parse the structure inside insight strings instead of dumping flat bullets. "Owner (Org) — task" → numbered checklist with initials avatars (clay = Antino, sky = prospect); "Title — detail" → semibold lead-in + muted detail. Same
InsightTextparser across Signals. - Talk time / share of voice — computed from the word-level timestamps (
proshort_transcript_segments): a stacked bar + % per speaker (e.g. prospect 55% — a healthy discovery signal). Duration ("24-min call") now in the header sentence and on the video card. - Turns, not fragments — 272 utterances merged into 69 speaker turns, per-speaker stable colors, timestamps; transcript flows on the surface in its own tab (no boxed inner scroll).
- The video is the anchor — the rail leads with a real thumbnail card (play overlay + duration badge → recording URL), then Linked in CRM, then participants with avatars + external count.
getRecordingTranscript gained end_sec. Register: product (earned familiarity — Gong-class patterns, Daylight language).
DesignApp-wide em-dash sweep (design copy rule 17)
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code…
App-wide em-dash sweep (design copy rule 17)
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code…
Replaced 402 prose em dashes ( — inside rendered strings) with commas across 148 files, enforcing the no-em-dash copy rule everywhere, not just the Briefer. The sweep protected code comments (skipped lines starting //, *, /*, and em dashes sitting in trailing line comments) and left the empty-value '—' table glyphs alone (a legit convention, not prose). Builds clean (tsc 0). A few start-of-text-node cases ({' '}— …) the line sweep missed are being caught by hand as spotted.
DesignLead-hub polish + the company→account reality
Fixes from a live QA pass on the AE lead hub:
Lead-hub polish + the company→account reality
Fixes from a live QA pass on the AE lead hub:
Fixes from a live QA pass on the AE lead hub:
- Company is clickable, and never dead-ends. A lead's
companyis free text; only 44% map to a real Account (measured: 8,528 of 19,476; 56% don't). So the company links to the account hub when one exists (getLeadnow returnscompanyAccountId), otherwise to that company's leads (/ae/leads?q=). The accounts search also got a real empty state: "No account named X, see leads at X →" instead of a blank. - Details shows only fields that have a value (the
Fieldprimitive returns null when empty, and renders internalhrefs vianext/linksame-tab). - Right-rail cards are equal width —
LeadActionshadlg:self-start, which shrank it to content inside the flex column; noww-full. - Design-system exemplar: the daily briefing elevated (hero headline, ladder body tones, tone-wash separation not
border-b), a toast standard (src/lib/ui/toast.ts), and a deterministic em-dash sanitizer on the Briefer. See DESIGN.md 16-18.
12
Jul 2026
Sunday
3 shipped
DesignThe page philosophy: whole app re-skinned to the landing (ultracode)
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every…
The page philosophy: whole app re-skinned to the landing (ultracode)
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every…
The app didn't read like the marketing landing — garish chart colors, flat surfaces, KPI-tile scoreboards, no motion, espresso buttons. Codified a page philosophy and rolled it across every app page via ultracode workflows.
The philosophy (now the app-wide rule): a page header is a mono eyebrow (clay dot) → a big font-light title → one full-width briefing sentence weaving the key numbers as prose (clay for the key metric) — not a grid of KPI stat-tiles (DESIGN principle 10, "briefing > scoreboard"). Attention is a Pulse only on what's wrong/slipping — never an alarm-number board. Cards lift, never border; sections carry mono eyebrows; numbers are font-mono tabular-nums; entrance/hover motion is reduced-motion-safe (animate-in, never the buggy Reveal wrapper).
Color: the 8-hue entity palette was bright/saturated/cool (#008300 green, #2a78d6 blue, #e34948 red…), clashing on warm cream. Retuned all three sources — the --color-entity-* CSS vars, the JS base/text hexes in entity-colors.ts, and the ENTITY_RAMPS pie ramps in charts.tsx — to muted, cohesive Daylight hues (deal=clay, lead=sage, account=slate-blue, task=amber + muted violet/teal/rose/rust). Buttons: the Button default variant is now the landing's clay pill, so auth + app primary CTAs match the site.
Rollout (workflows): the command page as the exemplar (briefing header + pulses + warm charts + a real horizontal-stacked-bar RepScoreboard) → batch 1 (10 home/admin pages) → batch 2/3 (17 SDR+AE pages) → settings (5 role pages). Every batch preserved functionality — verified in-browser as Anisha (AE): the AE Desk, Pipeline (deal peek still opens), the Deal hub (peek timeline + stage-gate + action rail all intact, "Advance stage" now clay), and settings (change-password form intact). ~40 pages, TSC clean throughout. Note: keep concurrent workflow count modest — running several at once alongside the sibling session starved the dev server once.
DesignLanding rebuilt as the founding-story arc (Company Brain), 10/10 polish
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM…
Landing rebuilt as the founding-story arc (Company Brain), 10/10 polish
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM…
The landing sold a narrow slice ("agentic sales OS"). Grounded in the two source docs the user supplied — antino-supernova-deck.pdf (the founding story: services→outcomes, the 11:47 PM resignation, four fault lines, the harness, the Company Brain, "priced like bread not oven-hours") and artifacts-library.html (the real product: a contract-to-production platform, Stages 0→6, maker→gate→checker, artifacts pinned to real standards) — rebuilt / as the full narrative arc: Hero → 11:47 email → four fault lines → the harness (translation chain) → the Company Brain reveal → the living pipeline (0→6 + HITL evidence gate) → the Rosetta-Stone moat → proof (85%+, ontology beats model) → new-world finale + CTA → Apple-style FAQ. Retired the sales-only sections; retitled "Sales OS" → "the Company Brain". Built + polished via two ultracode workflows (5-section build, then a 9-agent 10/10 polish pass against a shared design rubric). Hard lesson: the Reveal scroll-wrapper left sections invisible — all landing sections are now plain server components. Verified end-to-end: zero inter-section gaps (measured via DOM), TSC clean, every section renders. New ember starburst brand mark + favicon (clay→amber on espresso, the deck's collapse→burst motif) replaces the violet nova. Design language unified — app now shares the landing's warm Daylight tokens (.app-theme = :root).
DesignOne design language: app adopts the landing's Daylight tokens
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the…
One design language: app adopts the landing's Daylight tokens
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the…
The logged-in app and the marketing site had diverged — landing warm Daylight (cream #edeae0, espresso ink, clay accent), app cool shadcn-zinc via the .app-theme scope. User: "why is the design language of app pages and landing page different — merge this; I want the landing's design language in all the pages." So .app-theme in globals.css now mirrors the :root Daylight layer: cream page, warm #fbfaf4 cards, espresso ink, clay `#c2613f` on primary/ring/links. One softening — --accent (dense shadcn hover surface) stays a warm neutral #efece2, not clay, so dropdown/ghost hovers don't flare orange. .app-canvas warmed (espresso dots + cream wash). Landing look unchanged (merge, not restyle). Verified on /design: raw tokens render the full warm Daylight palette + clay. Prior "app = shadcn zinc" decision reversed (memory + design-page copy updated); DESIGN.md "Daylight" now governs the app too.
07
Jul 2026
Tuesday
3 shipped
DesignSidebar app shell, shadcn light theme, org chart redesign, full company mapped, Zoho + sales-process absorbed
Sidebar app shell for every role (AppSidebar + AppShell rewrite): shadcn Sidebar (collapsible to an icon rail), role-aware nav with icons from ROLE_NAV (src/lib/nav.ts), an inline SVG logo…
Sidebar app shell, shadcn light theme, org chart redesign, full company mapped, Zoho + sales-process absorbed
Sidebar app shell for every role (AppSidebar + AppShell rewrite): shadcn Sidebar (collapsible to an icon rail), role-aware nav with icons from ROLE_NAV (src/lib/nav.ts), an inline SVG logo…
- Sidebar app shell for every role (
AppSidebar+AppShellrewrite): shadcnSidebar(collapsible to an icon rail), role-aware nav with icons fromROLE_NAV(src/lib/nav.ts), an inline SVG logo mark (components/logo.tsx) +src/app/icon.svgfavicon, breadcrumbs in the header (AppBreadcrumbs), and a user dropdown with sign-out. Replaces the old top-nav;nav-links.tsxdeleted. All five role layouts now just render<AppShell user={user}>. - Pure shadcn LIGHT theme for the app, scoped to
.app-themeon the shell wrapper (globals.css): redefines the standard shadcn tokens and the legacy antino tokens (--ink*,--panel*,--clay*,--sage/rust/amber, sidebar tokens) to zinc/neutral light values. The marketing landing + public pages (:root,.dark,.section-dark) are untouched. Deep Daylight styling is deferred; DESIGN.md's warm-cream rules now apply to marketing only, not the app. - All logged-in pages are full width — removed every
mx-auto max-w-*wrapper (admin home/users/org/audit/settings, role homes, settings panel). - Admin home rebuilt into a real overview (people counts briefing + recent-activity + pending-invites cards; no placeholder). Audit/settings full-width; audit maps
::1/127.0.0.1→localhost. - Users table: sortable columns, shadcn
Selectfor role, a searchable combobox (select2-style) for manager across all people. - Org chart redesigned as a top-down boxed hierarchy (
org-tree.tsx): level-colored boxes + connector lines, leaf reports grouped into bulleted boxes, search with highlight, collapse/expand + expand-all/collapse-all, auto-collapse on large trees.page.tsxnow roots founders/admins (fixes the bug that hid Radhakanth & Rajesh). - Notification bell golden rule:
recentNotifications()returns the latest 5 unread only (badge still shows total unread). - Full company reporting tree loaded (
scripts/apply-designation-tree.ts, idempotent + audited): reads the HR designation sheet's RM column (scripts/data/reporting-lines.json), setsmanager_idfor IT/Operations/Product while sales keeps the org-chart image tree (Sales/Marketing rows skipped). Aligned the two founder codes (RadhakanthANTINO306, RajeshANTINO57) so their reports resolve. 210 manager changes applied; org chart went from 20 → 230 of 234 placed. - Sales domain absorbed into
docs/SALES-PROCESS.md(statuses, temperature, opportunity stages, 8-phase flow, processes, tasks, SLAs, RACI) and linked in the docs index. - Zoho CRM explored (read-only) and stress-tested against the doc — fault lines found: missing Discovery/Solution-Validation deal stages, temperature ~8% populated, forecast discipline unused (Best Case=1 / Committed=0), 77% of leads stuck in
Open, a parallel undisciplined Contacts-status funnel, and bulk-enriched data vs. curated ICP. Zoho OAuth creds stored in.env(gitignored). - Fixes found via live Chrome verification: root-layout inline
<script>→<noscript>fallback (kills the React-19 script error + the original hydration warning);TooltipProvideradded to the shell (sidebar tooltips were crashing); org-tree invalid<li>-in-<li>nesting → divs. tsc green; interactive checks (sorting, bell, dropdown) verified. - Monochrome cleanup pass: replaced every leftover warm token in the app (
sage/rust/amber/clay) with shadcn-native patterns — status chips →Badgevariants (secondary / destructive / outline), form errors + delete →destructive, success →foreground, notification badge/dot/link →primary/muted-foreground, audit action pill →secondary. Org chart stays intentionally color-coded by level. The scalable win: statuses now render through the sharedBadgecomponent, not hand-rolled colored spans. - Org chart made scalable for the full 234-person tree (
org-tree.tsx), and turned horizontal (left-to-right): root on the left, each level a column to the right, siblings stacked vertically, so a large org grows down the page (natural scroll) instead of sprawling sideways. Auto-collapse to the top 3 tiers on large trees (opens as an overview, not a wall), Expand-all / Collapse-all controls, stray leadership split into their own row, and single leaf reports render as boxes instead of a "Reports (1)" list. Large report groups flow into multiple columns (2 at >10, 3 at >24) so a 40-person team is a compact card, not a tall strip, with no internal scrollbars. Fixed the.orgchartconnector CSS hijacking the inner report lists (they were laid out sideways). - Calendar hydration fix (
ui/calendar.tsx):data-dayis now a deterministicYYYY-MM-DDid instead of localetoLocaleDateString(), which mismatched between Node SSR and the browser on every day cell (surfaced on/design). - `/design` showcase reskinned to the app's shadcn-light theme (scoped
.app-themeon its root); intro copy updated. It was still rendering the old cream Daylight tokens.
DesignMicro-interactions on every component, tested live on /design
18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files: ui/ bases + /design section demos), on the product motion voice — 100–250ms,…
Micro-interactions on every component, tested live on /design
18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files: ui/ bases + /design section demos), on the product motion voice — 100–250ms,…
- 18-agent workflow: per-component micro-interaction pass across all 60 shadcn components (79 files:
ui/bases +/designsection demos), on the product motion voice — 100–250ms, ease-out-quart/quint, transform/opacity only, reduced-motion safe, purely presentational (no API changes; the polish reaches every app surface). - Highlights: checkbox check pops in + indeterminate now renders a minus; radio dot zooms in; switch thumb eases across and compresses on press; slider thumb grows on hover/grab; select/combobox chevrons rotate open and their check indicators pop; OTP digits pop in; input-group copy button flashes a sage confirmation; kbd chips got keycap depth; button trailing icons nudge on hover; toggles scale on press (suppressed in fused segments); avatar images fade in on load; badges-as-links sink on press; field errors rise in; and equivalent passes across feedback, navigation, overlay, and data components.
- Every one of the 62 /design sections functionally tested in Chromium (Playwright): toggles flipped, overlays opened and Escape-closed, sliders dragged, tabs switched, toasts fired — state asserted via aria/data attributes, console errors collected, screenshots reviewed.
- 3 real issues found, all fixed and re-verified: CommandDialog crashed the page when opened (missing cmdk
<Command>root inside the dialog — real bug, now fixed inui/command.tsx); split-dropdown menu rendered at min-width; line-chart x-axis dropped its first tick. Build green.
DesignAudit trail page, integrations keys, org chart, audit geo-context, UI polish
/admin/audit — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request…
Audit trail page, integrations keys, org chart, audit geo-context, UI polish
/admin/audit — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request…
- `/admin/audit` — the audit spine gets its read surface: filterable trail (action select from the registry, actor/entity search), expandable rows with before/after payloads and full request context.
- Audit context enrichment —
recordAudit()now captures ip, raw user agent plus parsed browser/OS/device (ua-parser-js), geography (Vercel/Cloudflare headers when deployed; null locally), referer, and accept-language on every event, automatically for all call sites. - Integrations (
/admin/settings, admin-only) — Resend + Anthropic API keys stored AES-256-GCM encrypted (key derived fromSESSION_SECRET); format-validated (re_…/sk-ant-…); masked previews only (re_••••••cdef) in UI, audit (SETTING_UPDATED), and admin notifications. Newapp_settingstable +SETTING_KEYS/getSetting/setSettinginsrc/lib/settings.ts. - `/admin/org` — org chart from
users.manager_id: CEO → Director → Heads → Key Accounts tree with role badges, report counts, suspended dimming, and the unmapped-people count. - UI sweep: show/hide toggle on every password field (shared
PasswordInput); every button now carries an icon; nav gained an active state (clay underline +aria-current); users table gained an empty state for no-match searches. - Tested in real Chromium (Playwright): 16-check flow suite (sign-in incl. show-password toggle, add person → invite accept → bell → change password → suspend/blocked-sign-in → reactivate → forgot-password) plus org/integrations checks — all green, screenshots delivered.
- Known hydration warning on
<html>(jsclass script from the landing work) noted for a future fix.
06
Jul 2026
Monday
2 shipped
DesignDocs refresh + full-width /design
Root README.md rewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL, SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs…
Docs refresh + full-width /design
Root README.md rewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL, SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs…
- Root
README.mdrewritten from create-next-app boilerplate to a real project readme: stack, env setup (APP_DATABASE_URL,SESSION_SECRET), seeding scripts, dev sign-in, house rules, docs pointers. ENTITIES.mdbrought current: two-pass seeding story (sheet import + org tree), 232-user total, full audit action list.TASKS.md: committed batch (90edadf) moved to Done./designmain column is now full width (dropped themax-w-4xlcap) — component sections fill the viewport beside the sidebar.
DesignLanding page, design system port, /design showcase, polish pass
Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark + .section-dark island) into globals.css (Tailwind v4 @theme),…
Landing page, design system port, /design showcase, polish pass
Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark + .section-dark island) into globals.css (Tailwind v4 @theme),…
- Design system ported from antino.nuvio.dev (our own production site): full token set (warm cream/espresso/clay, light + dark +
.section-darkisland) intoglobals.css(Tailwind v4@theme), IBM Plex Sans/Mono vianext/font, radius 14px, warm elevation scale (shadow-rest/raised/float). - shadcn/ui installed — all 60 components at
src/components/ui, restyled by the token layer. - Landing page (`/`) rebuilt from the live site, sections 00–09 verbatim: dark hero with typewriter briefing card, sample email with numbered receipts, eight-agents grid, animated counters, principles, how-it-works tabs, stop/start diff, built-by stats, FAQ accordion, pilot CTA. Built via a 10-agent ultracode workflow (theme → build → assemble → verify → 3 reviewers → fixer; 12/13 findings fixed).
- `/design` showcase — 62 sections, every installed component with variants, foundations (tokens/type/radius), scrollspy sidebar, dark-preview strip. All 78 sidebar links verified against section ids.
- Lift, not borders (rule locked): ~60 card containers across 35 files converted from hairline outlines to tone step + warm shadow +
card-lifthover. - Polish pass (browser-audited on the production build): hero headline geometry fixed to match source (3 lines),
text-balanceon display headings, terminal-style caret blink, breathing LIVE dots, feed-row hovers, button press states + arrow nudges, nav underline slides, FAQ numbers turn clay when open, and annotation-cards ↔ email-superscript hover linking. All motion ease-out, reduced-motion safe. Verified live: agents grid, counters (1/15/8/0.59/0), accordion, scrollspy; zero console errors. - Stub
/privacy+/termspages; playwright added as devDep (used for full-page captures).