Void Crystal is an internal AI R&D lab we have been building for over two years. It started in 2023 when we kept needing a frontend layer to test AI capabilities in web workflows — and kept rebuilding the same pieces. Chat interfaces, authentication, session management, model selectors. Every new experiment required the same scaffolding before we could get to the actual idea.
Rather than rebuild from scratch each time, we started investing in a shared, componentised platform where frontend interfaces and backend AI tools could be mixed and matched. That platform became Void Crystal — a single codebase that now hosts many different AI agents, tools, and demos, all reusing the same core patterns.
Problem
Marketing, sales and ops leaders know they need to adopt AI to keep up with time pressures, potential value and competitors. The blocker is the lack of fast, low-risk proofs that show where AI actually improves daily workflows. Building those proofs is slowed by many technical moving parts and subtle interface and agent-like behaviours that create brittle pilots.
Solution
We run Void Crystal as a demo engine that proves what AI can do for marketing, sales and ops today.
Each demo focuses on a single workflow problem and shows a clear outcome: less manual work, faster decisions, or better signals. Because every demo runs on the same platform, the pieces compound — a capability built for one agent can be reused in the next, which spawns new ideas and speeds delivery.
We also publish Void Fragments, a companion solution that distils proven AI capabilities into compact, reusable Python scripts developers can explore and extend.
How it works
Void Crystal is a componentised framework — one codebase that hosts many AI-powered apps from chat assistants and strategy agents to lightweight tools.
Frontend. Next.js with React and TypeScript. Apps share a common chat UI, input handling, model selector, and session management. Each app can override its own layout and components where needed, but the core interaction patterns are consistent across the platform.
Backend. FastAPI (Python) with PostgreSQL (Supabase) for data. Each app has its own API endpoint and service logic. Conversation sessions and messages are stored per app, and the backend sends history (full or truncated for cost control) to the AI layer on each turn.
AI layer. The platform does not force a single AI pattern. Some apps use the OpenAI Responses API with File Search and function calling for advanced agentic behaviour. Others use standard Chat Completions or LangChain flows depending on what the task requires. This flexibility means we can pick the right tool for each demo without rearchitecting the platform.
Config-driven discovery. Apps and tools are defined in a central configuration. Adding a new app is a config entry plus a backend router and service — the homepage and navigation update automatically. This keeps the overhead of launching a new experiment low, which is the whole point: test ideas quickly, learn, and move on or invest further.
Auth. Supabase Auth handles user sessions. The frontend sends a JWT token and the backend verifies it on protected routes.
Agents and tools
Void Crystal draws a distinction between agents and tools. Agents are full app experiences with sessions, history, and sometimes document editing or file search. Tools are lighter-weight, single-purpose capabilities that can run standalone or be composed into agent workflows. Both follow the same routing and configuration patterns.
The most advanced agents — like the AI Marketing Agent — use the OpenAI Responses API with vector stores, function calling, and section-scoped document editing. Simpler agents and tools use standard completions or custom API integrations. The framework accommodates both without architectural changes.
What we learned
The biggest return on the platform investment is speed. A new demo idea can go from concept to working prototype in hours rather than days because the frontend scaffolding, authentication, session management, and API patterns are already in place. This compounds: every demo we build adds components and patterns that make the next one faster.
The config-driven approach also changed how we think about experiments. When the cost of launching a new app is a config entry and a service file, we test more ideas and discard the ones that do not work without feeling the sunk cost. That bias toward trying things quickly has produced several capabilities we would not have built if each one required a standalone project.
Read more
See individual demos and experiments in the Lab, or explore reusable scripts in Void Fragments.
Implemented solutions
Used technologies
Demos
Demos and case studies for this project.
Want to build something like this?
Lab projects often become production solutions. Share your idea and we'll help you turn it into a real product.