Xinlong Bao包新龙

software · 2026

Aisle

A founder desk for weekly catalogue: four agent seats, a human in the loop, and a state machine that can fail a banned claim on purpose.

Next.js · React · Zustand · local LLMs
Aisle founder desk overview

Intro

Aisle is a Next.js desk for a one-person retail marketing company — seed brand Lane & Co. You write a brief. Four seats (trend, creative, compliance, media) plus a founder log move a campaign through research, posters, a revision loop, channels, and a schedule.

It looks like an ads platform. It is a local campaign simulator with a real HITL state machine. ELEC5620 is the course context; the string does not appear in the repo.

Method

Zustand persist key aisle-draft-v2. No database. Agent slots: Trend Analyser, Image Generation, Compliance Checker, Media Manager. The model catalogue lists Local, OpenAI, Anthropic, and Cursor; only the local OpenAI-compatible endpoint actually fetches. Cloud adapters throw a not-wired error and fall through to stubs.

The engine does not parse model JSON into the campaign. After a backend note it runs TypeScript: buildResearch, makeCreatives, reviewCreatives, adapt. v1 copy is written to hit banned terms; v2 is the cleaned rewrite. Compliance is string match on brand.bannedTerms, then revise / escalate / pass. One automatic creative retry, then the founder. Publish numbers are formulae, not ad-network data.

Demo

npm run dev, open localhost:3000. Overview is the founder desk: awaiting-you, agents running, scheduled, synthetic impressions. Watch a live agent run creates a Trail Parka brief and launches the bench.

Walk a campaign: brief, research, studio, compliance, channels, log. Seed data includes a published campus parka and a Week 34 stone-fruit catalogue that still needs judgement. Themes: Simple, Desk, Dev.

Conclusion

Show the banned-claim loop, not a claim that GPT is filling the catalogue. The interesting design is human approval, cost visible before a local call, and compliance that can send work back.

Limits: image/video providers are stubs, metrics are synthetic, and persistence is the browser.