AI agents that make ads, landing pages and emails, guide shoppers in a store,
and run errands on your Mac, all starting from what people actually love.
Slice is five AI agents on one taste graph. Each agent starts with a read of its audience from Qloo's cultural taste graph (the artists, films, books, brands and places people love, and what those say about them) and calls Qloo as a tool while it works. That lets it personalize for a city, an audience or a single customer, even on a first visit with no history, and every result shows the evidence behind it.
| Agent | What it makes |
|---|---|
| Media | Posters, ad creatives and short videos for a taste audience |
| Pages | Landing and funnel pages, one per audience or per lead |
| Campaigns with a version for each taste group or person | |
| Concierge | A shopping assistant that recommends from a store's own catalog |
| Slice for Mac | A voice agent in the notch that works across your apps |
Open slice-agents.vercel.app and choose Continue as guest. You get a workspace that already holds two demo brands for every service, no sign-up needed.
Each service stands on its own: a business uses the ones it needs, and each has its own clients and data.
An infinite canvas where a brand makes posters, ad creatives and short videos for one audience at a time. The agent reads the audience's taste, asks a couple of quick questions about the offer, then generates with Nano Banana (Gemini image models) and Veo 3.1. Every creative comes with a Why report built from Qloo signals and a simulated pre-test panel.
Demo brands: Knock, a Los Angeles food delivery app, and Half Moon Coffee, a direct-to-consumer roaster.
Landing and funnel pages built in conversation with an agent, one page per audience: a city, an age group, a set of interests, a cluster of the brand's own customers (from a CSV, HubSpot or Salesforce) or a single lead. The agent studies the brand's live site for its kit (logo, colors, type, buttons), writes the page in HTML and CSS, checks its own render and revises. Pages can be edited by hand, are published at /p/{brand}/{page}, and come with first-party analytics and a heat map.
Demo brands: Tágide Festival, a music festival in Lisbon, and Gwen, a premium credit card.
An AI email builder for campaigns that send a different version to each taste group or person. The agent picks items from the brand's catalog by taste, writes and lays out each version, and checks it on desktop and phone. Sending goes through Resend.
Demo brands: Stackhouse Books, a bookshop, and Covers, a London restaurant booking app.
A shopping assistant a store adds with one script tag. It opens with a short taste questionnaire built from Qloo's view of the shopper's city, then recommends from the store's own catalog with a one-line reason for each pick. Catalogs sync from Shopify or WooCommerce, or load from a CSV in the Slice format. The merchant console shows conversations, taste insights across shoppers, and catalog health.
Demo stores: Marlow, home and living, and Fold, multi-brand fashion.
A personal agent that lives in the MacBook notch. Hold fn + control and talk. A Gemini Live voice handles the conversation, while a background worker and a computer-use operator do the longer tasks across your apps and screen, with your taste in mind. It connects to Gmail, Google Calendar, Drive, Slack, Notion and more through Composio.
Download the notarized DMG (macOS 15 or later).
- Taste is the brief. Before an agent starts, it gets a Qloo read of its audience: the entities and tags that define a city, a demographic, a set of interests, a customer cluster, or a shopper's answers to the questionnaire.
- Qloo is a set of tools. While it works, the agent calls Qloo when it needs more, such as insights for a place, related entities, audience demographics or brand affinities, and decides for itself when and how.
- Every result shows its evidence. Picks, pages, emails and creatives carry the Qloo signals they rest on, so a business can see why the agent chose what it chose.
All Qloo requests go through a cache in Convex (packages/backend/convex/qloo.ts). Responses are stored privately on the server and never committed to this repository.
flowchart LR
shopper(["Shoppers on store sites<br/>(slice.js)"])
business(["Businesses in the console"])
mac(["Slice for Mac"])
web["<b>apps/web</b><br/>Next.js on Vercel"]
agent["<b>apps/agent</b><br/>Python agents on Cloud Run"]
convex["<b>packages/backend</b><br/>Convex"]
vertex["<b>Vertex AI</b><br/>Gemini, Nano Banana, Veo"]
qloo["<b>Qloo</b><br/>Insights API"]
shopper --> web
business --> web
mac -- "voice over WebSocket" --> agent
web -- "server-side" --> agent
web --> convex
agent --> convex
agent --> vertex
convex -- "cached" --> qloo
- apps/web serves the console, the Concierge UI that
slice.jsopens on a store, and published pages. It calls the agents server-side only. - apps/agent runs the Concierge, Pages, Email and Media agents (Google ADK, FastAPI) and the Slice for Mac brain.
- packages/backend holds the data, files and auth checks, and is the only path to Qloo.
| Layer | Built with |
|---|---|
| Web app and demo sites | Next.js 16, React 19, Tailwind CSS 4, shadcn/ui, Clerk |
| Store widget | TypeScript, Vite |
| Backend and data | Convex |
| Agents | Python, Google ADK, FastAPI, Gemini 3.8 Flash on Vertex AI, Playwright |
| Image and video | Nano Banana 2 and Pro, Veo 3.1 |
| Taste | Qloo Insights API |
| Integrations | Composio (Shopify, HubSpot, Salesforce, Google Workspace, Slack, Notion), WooCommerce, Resend, Firecrawl, Pexels |
| Mac app | Swift, SwiftUI, XcodeGen, Gemini Live |
| Hosting | Vercel, Google Cloud Run |
| Monorepo | pnpm workspaces, Turborepo |
apps/
web/ Next.js app: landing page, console (/dashboard), concierge UI (/embed), published pages (/p)
widget/ slice.js, the script tag a store adds
agent/ Python agents and API server: Concierge, Pages, Email, Media, catalog sync, the Mac brain
mac/ Slice for Mac, the Swift notch app
stores/ Demo brand sites: Marlow, Fold, Tágide, Gwen, Knock, Half Moon, Stackhouse, Covers
packages/
backend/ Convex schema, functions, HTTP routes and the Qloo cache
qloo/ Typed client for the Qloo API
demo-catalogs/ Marlow and Fold product catalogs, with validation and export scripts
demo-data/ Customer datasets and a seed script for the Pages demos
docs/ Design notes, contracts and runbooks
- Node.js 20.9 or later and pnpm 10 (
corepack enable) - uv and Python 3.11 or later
- A Convex project, a Clerk application, a Google Cloud project with Vertex AI enabled, and a Qloo API key
- Optional, per feature: Resend (sending email), Composio (Shopify, CRMs, Mac integrations), Firecrawl and Pexels (Pages intake and imagery)
- Optional, for the Mac app: Xcode and XcodeGen (
brew install xcodegen)
pnpm install- In the Clerk dashboard, open your application, go to API keys, and copy the publishable and secret keys.
- On the Convex integration page, select the application and click Activate Convex integration. Copy the Frontend API URL it shows (
https://<name>.clerk.accounts.dev).
pnpm --filter @slice/backend run convex:setupLog in, choose existing project and pick your project. This writes packages/backend/.env.local with CONVEX_DEPLOYMENT and CONVEX_URL.
The first push fails until Convex knows the Clerk issuer. Set it from a second terminal and the running setup retries on its own:
cd packages/backend
npx convex env set CLERK_JWT_ISSUER_DOMAIN https://<name>.clerk.accounts.devThen give Convex the Qloo key and a shared secret for the agent:
npx convex env set QLOO_API_KEY <your-qloo-key>
npx convex env set QLOO_PROXY_SECRET $(openssl rand -hex 32)The agent needs the same secret in step 4; read it back with npx convex env get QLOO_PROXY_SECRET.
To send email, also set RESEND_API_KEY and RESEND_WEBHOOK_SECRET.
cp apps/web/.env.example apps/web/.env.local
cp apps/widget/.env.example apps/widget/.env.local
cp apps/stores/.env.example apps/stores/.env.local
cp apps/agent/.env.example apps/agent/.env| File | Fill in |
|---|---|
apps/web/.env.local |
NEXT_PUBLIC_CONVEX_URL (the CONVEX_URL from step 3) and the two Clerk keys |
apps/agent/.env |
GOOGLE_CLOUD_PROJECT, GOOGLE_APPLICATION_CREDENTIALS (a service account key with the Vertex AI User role), CONVEX_URL, CONVEX_SITE_URL and QLOO_PROXY_SECRET |
apps/widget/.env.local, apps/stores/.env.local |
Nothing; the defaults point at the local servers |
The optional keys (Composio, Firecrawl, Pexels, Shopify, WooCommerce) are documented inline in apps/agent/.env.example. The Google credentials and the Qloo key live only in the agent and in Convex, never in the web app or the widget.
pnpm devThis starts Convex, the web app, the widget, the demo sites and the agent server together.
| Service | Address |
|---|---|
| Web app and console | http://localhost:3000 |
| Demo brand sites | http://localhost:3002/marlow (also /fold, /tagide, /gwen, /knock, /halfmoon, /stackhouse, /covers) |
| Widget playground | http://localhost:5173 |
| Agent server | http://localhost:8000 |
To load the Marlow and Fold catalogs into Convex:
cd packages/backend && npx convex run seedDemo:seed| Command | What it does |
|---|---|
pnpm dev |
Run every app in development |
pnpm build |
Production builds |
pnpm typecheck, pnpm lint, pnpm format |
Type-check, lint and format the whole repo |
pnpm --filter @slice/mac app |
Build Slice for Mac (Debug) and relaunch it |
pnpm --filter @slice/mac release |
Build, sign and notarize the Mac DMG |
pnpm --filter @slice/demo-catalogs validate |
Check the demo catalogs against the schema |
cd packages/backend && npx convex run qloo:warm |
Pre-cache the Qloo requests the demos use |
Create a widget in the console, then paste its snippet into the store's theme:
<script
src="https://slice-agents.vercel.app/slice.js"
data-slice-key="<store-key>"
async
></script>The console's Install tab also has the snippet for Shopify, Next.js and Tag Manager, limits the widget to the store's own domains, and shows every site it has loaded on.
The web app and demo sites deploy to Vercel from main, the agents run on Google Cloud Run, and Slice for Mac ships as a Developer ID signed, notarized DMG. See docs/deploy.md and docs/mac-release.md.
| Topic | Docs |
|---|---|
| Deployment | deploy.md, mac-release.md |
| Pages | pages-plan.md, pages-contracts.md, pages-html-builder.md, pages-crm.md, tagide-eval.md |
| email-plan.md | |
| Concierge | concierge-stores.md, demo-stores.md, test-taste-profiles.md |
| Slice for Mac | mac-plan.md |



