Skip to content

Jeremyliu-621/soon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

80 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

AUCTOPUS

Many hands for one big idea.

From a sentence to a stakeholder-ready prototype. Eight stages, eight integrations, three minutes.

Built for the Aucctus AI Hackathon Β· 2026


The thirty-second pitch

A Fortune 500 innovation manager has an idea. By the time they've corralled a brand strategist, a product designer, a 3D artist, a video editor, a research panel moderator, and a brief writer, the moment has passed. Their idea dies in committee.

Auctopus is the missing director. Drop in a brand and an idea. We compose the entire product journey β€” research, spec, mesh, reveal, audience, AR, press kit, distribution β€” into a single guided run. Eight tools running in concert behind one shareable link. Three minutes from a sentence to something a CEO can hold in AR on their iPhone.

The demo is Red Bull β†’ Caffeinated Chewing Gum, but the platform is brand-agnostic. Type any company, any product idea, and Auctopus takes it the rest of the way.


The pipeline, end to end

                          AUCTOPUS Β· innovation-lab OS

    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚                                                                      β”‚
    β”‚   01  Brand research          02  Idea mapping       03  3D model    β”‚
    β”‚   ─────────────────           ─────────────          ─────────       β”‚
    β”‚      Gemini                      Gemini                 Meshy        β”‚
    β”‚      reads docs +                 raw idea β†’             text β†’      β”‚
    β”‚      web research                 structured spec        GLB mesh    β”‚
    β”‚                                                                      β”‚
    β”‚             β–Ό                          β–Ό                    β–Ό        β”‚
    β”‚                                                                      β”‚
    β”‚   04  Reveal video            05  THE PANEL          06  AR Quick    β”‚
    β”‚   ─────────────────           ─────────────          ─────────       β”‚
    β”‚      Veo                         MiroShark              Cloudinary   β”‚
    β”‚      one shot,                   live focus group       USDZ + QR    β”‚
    β”‚      6 seconds                   in 3D + Slack          on iPhone    β”‚
    β”‚                                                                      β”‚
    β”‚             β–Ό                          β–Ό                    β–Ό        β”‚
    β”‚                                                                      β”‚
    β”‚   07  Press kit               08  Distribution       09  Campaign    β”‚
    β”‚   ─────────────                ─────────────          ─────────      β”‚
    β”‚      Cloudinary                   Composio              The brief    β”‚
    β”‚      hero stills +                 Notion / Slack /      one URL     β”‚
    β”‚      360Β° spin                    Google Calendar        ships it    β”‚
    β”‚                                                                      β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Each stage is a real API call. Nothing is mocked. Nothing is staged. The orchestrator streams progress to the browser via Server-Sent Events; the user watches each stage materialize in real time.


The tools, and why each one is there

Eight integrations, six sponsor partners, one engine. We didn't pick these to check boxes β€” every choice is doing real work in the pipeline.

# Stage Tool What it does Where it lives
01 Brand research Gemini Reads uploaded PDFs + web context, distills voice, palette, target segments, positioning. The fingerprint for every downstream stage. pipeline/01-brand-research.ts
02 Idea mapping Gemini Turns "caffeinated gum" into a structured product spec β€” category, form factor, materials, dimensions, competitor map, rationale quote. pipeline/02-idea-mapping.ts
03 3D model Meshy Text-to-3D job β†’ GLB mesh. Topology suitable for both <model-viewer> and AR Quick Look. pipeline/03-3d-model.ts
04 Reveal video Veo Six-second cinematic product reveal animated from the hero render. On-demand to keep cost predictable. pipeline/04-video.ts
05 The Panel MiroShark Synthetic focus group β€” Neo4j-backed personas argue about your product live in a 3D room and mirror to a Slack channel. The centerpiece of the demo. pipeline/05-simulation.ts
06 AR Quick Look Cloudinary GLB β†’ USDZ conversion + QR code generation. iPhone scans, product appears on the conference table at real scale. pipeline/06-ar-quick-look.ts
07 Press kit Cloudinary e_camera 3D transforms generate ten hero stills + a 360Β° spin video from one mesh. Drop straight into a deck. pipeline/07-cloudinary-upload.ts
08 Distribution Composio Files a Google Doc brief, posts a Slack ping in #sim-…, books a Google Calendar review with the team. pipeline/08-distribute.ts

Plus the supporting cast:

Layer Tool Doing what
LLM router OpenRouter One key powers every Gemini call + every MiroShark agent. Keeps the bill on one card.
Voice (optional) ElevenLabs Gives each Panel persona a distinct voice. Hash-derived voiceId per persona; gracefully off when the API key isn't set.
Outbound briefs Pingram Email + phone-call delivery of the final convergence report to a stakeholder.
Investor view Backboard Sponsor track β€” explored as a presentation surface for the press kit.
Code review Polarity Sponsor track β€” end-of-build evaluation pass.
Secrets CyStack Locker Prefetches API secrets from a vault before next dev boots. Keys never sit in plaintext alongside the code.
3D reference Claw3D MIT-licensed inspiration for The Panel's multi-character scene. Pattern adopted: Billboard + Text nameplates, status-driven blinks, lerp-toward-target scaling.

The Panel β€” the heart of the demo

"The room is filling with synthetic consumers. Listen closely β€” objections are usually where the truth hides."

Stage 5 is what separates Auctopus from "a wrapper around a few APIs." The Panel is a live 3D focus group. Each persona generated by MiroShark appears as a stylized character in a half-circle around the product. As the swarm debates the idea, the matching character lights up, scales forward, captions appear, and (with ElevenLabs configured) the persona speaks in their own voice.

What's wired:

  • Deterministic seating. The same persona handle always lands in the same seat. Stable across refresh, share-page revisits, and SSE reconnects.
  • Per-disposition silhouettes. Skeptics get cone-topped heads, enthusiasts have a fluffy crown, pragmatists are clean spheres. You can read the room's stance distribution at a glance.
  • One-by-one drip. New SSE messages arrive on a 700ms beat β€” no PowerPoint-style burst dumps. Live runs catch up to the tail; replays drip from the start.
  • Mirrored to Slack. Every persona utterance also posts to a per-run #sim-… channel via Composio with username + icon_url overrides. The audience can watch the focus group on their own laptop.
  • Convergence report. When the debate closes, a Gemini-distilled verdict appears: buy-intent percentage, headline pull-quote, top objections, unexpected wins, strongest segments, full memo on demand.

Open /run/[id], navigate to chapter 05, and watch eight to fifteen synthetic consumers tear into your idea in real time.


How it actually works

                                                        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                        β”‚   Cloudinary  β”‚
                                                        β”‚  Meshy Β· Veo  β”‚
                                                        β”‚   ElevenLabs  β”‚
                                                        β””β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    POST /api/pipeline    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚   Landing page    β”‚ ─────────────────────▢ β”‚   Orchestrator         β”‚
   β”‚   ComposeFirstIdeaβ”‚                        β”‚   (linear async chain  β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                        β”‚    over 8 stages)      β”‚
             β”‚                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚ runId                                      β”‚
             β–Ό                                            β”‚ stage events
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    SSE: /stream      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚   /run/[id]       β”‚ ◀─────────────────── β”‚   PipelineEvent emitter β”‚
   β”‚   Chapters deck   β”‚                      β”‚   (run store + sse.ts)  β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚                                           β”‚
             β”‚ usePanelStream + SSE                      β”‚
             β–Ό                                           β–Ό
   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β”‚   The Panel       β”‚                      β”‚   MiroShark      β”‚
   β”‚  (3D + captions   β”‚ ◀─ persona events ─ β”‚   (Docker, Neo4j β”‚
   β”‚   + voice)        β”‚                      β”‚    + OpenRouter) β”‚
   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                       β”‚
                                                       β”‚ persona Slack relay
                                                       β–Ό
                                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                              β”‚   Composio       β”‚
                                              β”‚   #sim-<runId>   β”‚
                                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • One Next.js 15 app at the root. App Router, TypeScript, single-app-at-root (no monorepo). React 19. Tailwind for layout, drei + R3F for 3D scenes, three.js underneath.
  • A real fire-and-forget orchestrator. Each stage is an async function run(input, ctx) in src/pipeline/0X-*.ts. Inputs and outputs are zod-validated. Failures throw a typed PipelineError with stage attribution and an actionable hint that surfaces in the UI.
  • State streamed live via SSE. No polling treadmill. The browser opens an EventSource to /api/pipeline/<runId>/stream and receives stage:start / stage:progress / stage:complete / stage:error / sim:message / pipeline:complete events. The Panel's transcript merges live SSE messages with the persisted server copy via a stable composite-key dedupe so reconnects don't double-add.
  • Run state persisted to disk at .cache/runs/<runId>.json with atomic writes. Refresh, kill the dev server, come back the next morning β€” the share URL still works.
  • Manual stage-to-stage navigation. The pipeline runs ahead in the background; the user controls when they advance between chapters via keyboard arrows, the rail, or touch swipe. Stage 5 completing does not auto-advance to Stage 6. The "auto" you see is the intro reveal within a chapter, never between chapters.
  • Reduced motion respected. Every keyframe in globals.css is gated by prefers-reduced-motion: reduce. Animation-heavy polish (3D scenes, ambient drift, ken burns zoom) drops to zero-duration; textual polish (typing indicators, finale checklist) stays visible.

Quick start

# 1. Clone, install
git clone https://github.com/Jeremyliu-621/soon.git
cd soon
npm install

# 2. Configure
cp .env.example .env.local
# Fill in: GOOGLE_GENERATIVE_AI_API_KEY, MESHY_API_KEY, CLOUDINARY_*,
# COMPOSIO_API_KEY, OPENROUTER_API_KEY, ELEVENLABS_API_KEY (optional),
# LOCKER_ACCESS_KEY_ID + LOCKER_SECRET_ACCESS_KEY (optional fallback vault)

# 3. Start MiroShark β€” the audience-simulation engine
cd services/miroshark
cp .env.example .env
# Paste your OpenRouter key into the LLM_API_KEY / SMART_API_KEY /
# NER_API_KEY / OPENAI_API_KEY / EMBEDDING_API_KEY slots (same key, 5 places)
docker compose up -d

# 4. Back to the root and boot the app
cd ../..
npm run dev
# β†’ http://localhost:3000

predev runs scripts/locker-prefetch.mjs (CyStack vault β†’ .env.local fallback) and then scripts/check-env.mjs (fail-fast key validation).

For the live demo: open http://localhost:3000, click Try it on Red Bull, and watch the eight stages roll. Use arrow keys to step through chapters, Home/End to jump to the beginning or end, Space to advance.


Repo layout

src/
β”œβ”€β”€ app/                          Next.js App Router
β”‚   β”œβ”€β”€ page.tsx                  Landing β€” hero, pipeline, intake, sponsor strip
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ pipeline/             Run creation + SSE stream
β”‚   β”‚   β”œβ”€β”€ share/                Public run dossier JSON
β”‚   β”‚   β”œβ”€β”€ panel/voice/          ElevenLabs TTS proxy (optional)
β”‚   β”‚   └── pingram/              Outbound email + phone briefs
β”‚   β”œβ”€β”€ run/[id]/                 Live run experience (renders Chapters)
β”‚   └── share/[id]/               Final dossier (renders Chapters)
β”‚       β”œβ”€β”€ Chapters.tsx          Master orchestrator β€” SSE + posters + nav
β”‚       β”œβ”€β”€ PersonaPanelScene.tsx 3D Panel scene
β”‚       β”œβ”€β”€ Crowd.tsx             Persona crowd visual
β”‚       └── …                     One poster file per stage
β”œβ”€β”€ components/                   React UI
β”‚   β”œβ”€β”€ BrandIntake.tsx           "Compose your first idea" form
β”‚   β”œβ”€β”€ BuiltWithSection.tsx      Sponsor / partner credits
β”‚   β”œβ”€β”€ Pipeline.tsx              Landing pipeline strip
β”‚   β”œβ”€β”€ mascot/                   Aucto, your lab guide
β”‚   └── arena3d/                  Walking-crowd 3D scene
β”œβ”€β”€ pipeline/                     Numbered stage modules (01-…-08)
β”œβ”€β”€ integrations/                 One folder per vendor
β”‚   β”œβ”€β”€ gemini/, meshy/, veo/, cloudinary/, composio/, miroshark/,
β”‚   β”œβ”€β”€ elevenlabs/, pingram/, backboard/
β”œβ”€β”€ lib/                          Types, store, sse, orchestrator, parsers
└── prompts/                      Prompts as .md files

services/miroshark/              Forked MiroShark β€” Docker, Neo4j, OpenRouter
public/mascot/                   Mascot pose PNGs (Aucto in seven states)
research/                        Sponsor-tool deep research (read before integrating)
docs/                            Architecture, pipeline, demo runbook, slack bridge

The Aucto mascot

Meet Aucto β€” the lab assistant, brand whisperer, and product strategist who walks you through each chapter. First-person voice, slightly mysterious, never says "processing…". Eight CSS-driven tentacle tips drift around the avatar (because of course an Auctopus mascot has tentacles).

  • Chapter-aware dialogue (running / complete / failed states for all eight stages, plus prologue and finale)
  • Collapsible bubble that respects your reading flow
  • Localstorage persistence for the collapse state
  • Status-tinted halo that pulses with the active stage
  • Reduced-motion users get a static orb with the same dialogue

Edit src/lib/mascotDialogue.ts to retune Aucto's tone before a demo.


The team

Six commits, twenty integrations, one ambitious deadline.

Who Shipped
Jeremy Liu The pipeline scaffold, MiroShark wiring, Composio Slack + Docs distribution, the Story Mode β†’ Chapters refactor that became the new UI. The orchestrator is his fingerprint.
Chloe Houvardas The Panel as a 3D focus group. Persona avatars, the Crowd scene, the brief intake β†’ draft β†’ run flow, Veo image-to-video, structured convergence reports. The audience-simulation showpiece is hers.
Darsh Shah Story Mode UX. The launch dossier. Auctopus rebrand from soon β†’ Palette β†’ Auctopus. The mascot system. Live-update fixes for The Panel after a major UI rebase. The chapter-deck transitions and demo polish.
Caellum Yip Hoi-Lee Backend hardening β€” error model, run-state persistence, Composio v3 migration, MiroShark hybrid mode. The "doesn't crash mid-demo" person.

Plus a code-quality review pass from Polarity Paragon (the bot, but it caught real bugs).

The branches tell the story: main is the production-shaped trunk, palette-rename was the deep-feature spike, panel was the 3D Panel R&D, reworkPanel is the live demo target. We left old branches in place because hackathon git history is the changelog.


What's deferred

  • Polarity Paragon β€” code-quality pass beyond the one already merged
  • Multi-tenant deploy β€” single-user demo for now
  • Auth β€” single-user demo for now
  • Database β€” disk-persistent JSON store; the store.ts interface was designed for a five-line swap to Vercel KV / Supabase / Redis when this becomes a real product

License

TBD β€” pre-submission. All rights reserved by the project authors.


Built for the Aucctus AI Hackathon Β· May 2026

Drop in a brand. Walk out with a launch packet.

auctopus.demo

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors