Inspiration

Most people know what they want to say — they just don't know how to say it. Whether it's texting someone you like, setting a boundary with a friend, or breaking the ice after an awkward silence, the gap between feeling and expression is where relationships get stuck. We built Pixie API because we wanted to give people a social co-pilot that actually understands context, emotion, and human nuance — not just a chatbot that spits out generic lines.

What it does

Pixie API is an AI-powered social intelligence platform built around Lumi, a persona-driven companion. It exposes three core capabilities via a simple REST API:

  • Emotion Analysis — detects emotions, tone, and social risk level from any text input
  • Reply Suggestion — analyses a message's true intent and generates a suggested reply with three style variants (playful, softer, casual)
  • Private Chat (Lumi Chat) — a multi-turn conversation channel where Lumi provides emotionally intelligent coaching across 14 detected social scenarios

On top of that, Smart Planner matches two people's personality profiles and current mood to recommend the best activities for them to do together — using a deterministic 5-dimension scoring algorithm (Vibe, Interest, Relevance, Distance, Cost).

How we built it

  • Stack: React 19 + Tailwind 4 + Express + tRPC (full-stack TypeScript, end-to-end type safety)
  • LLM: Zhipu AI GLM-4.5 — all inference runs server-side, API keys never exposed to clients
  • Database: MySQL/TiDB via Drizzle ORM — stores activity plans, user sessions, and memory consent records
  • Auth: Manus OAuth for web users; API key middleware for external app integrations
  • Prompt system: A multi-layer prompt architecture with 15 scenario templates, 3 response modes (Soft Hug / Cute Roast / Gentle Action), and a memory consent UX that lets Lumi remember patterns only with explicit user approval

Challenges we ran into

The hardest part was making Lumi feel human without feeling fake. Generic AI responses are easy to spot — they're too smooth, too balanced, too safe. We went through multiple iterations of the prompt system to get Lumi to respond with genuine personality: knowing when to be playful, when to be serious, and when to just sit with someone in their discomfort.

We also had to design a clean API layer that works for both the web app (tRPC) and external apps (REST + API key) without duplicating business logic — keeping the prompt assembly and LLM calls in one place while serving two different transport layers.

Accomplishments that we're proud of

  • A 5-dimension scoring algorithm for activity matching that produces genuinely useful, personalised recommendations without any ML training
  • A memory consent system where Lumi only remembers what users explicitly allow — privacy-first by design
  • 9 REST API tests + 20+ unit tests all passing, with TypeScript zero errors across the entire codebase
  • A working public API integration that external apps (like Shake Shake) can call with a single API key — no OAuth dance required

What we learned

Building emotionally intelligent AI is less about the model and more about the prompt architecture. The same GLM-4.5 model produces wildly different results depending on how you frame the user's context, what you ask it to detect, and what output schema you enforce. We learned to treat prompts as first-class code — versioned, tested, and iterated like any other module.

We also learned that the best AI features are the ones that disappear — where the user feels more capable, not more dependent.

What's next for Pixie API

  • Persistent memory — wire the memory consent UI to the database so Lumi genuinely recalls saved patterns across sessions and injects them into future prompts
  • Streaming responses — enable SSE so Lumi's bubbles appear word-by-word for a more natural conversation feel
  • Shake Shake integration — deploy the REST API as the intelligence layer powering real-time social coaching inside the Shake Shake app
  • Voice input — use the built-in Whisper transcription to let users speak their message and get Lumi's coaching back as audio

Built With

Share this project:

Updates