Designed and built Kalce, an open-core web app for creating visual workflows that generate AI content through external APIs, self-hosted models, or third-party providers with a bring-your-own-key approach.
AI content, by design. An open-core canvas for building visual workflows that generate images, video and text with any model you choose.
Responsibilities: Product, research, architecture, UI/UX, engineering
Stack: Next.js, Supabase
Year: 2026
New image and video models were shipping every few weeks, and each one lived behind its own app, its own credit system and its own monthly plan. To compare three models on the same prompt I needed three accounts, three token balances and a spreadsheet to remember which output came from where.
Most of those providers also expose an API. Paying per generation with my own key was cheaper and had no artificial limits. What was missing was a place to use those APIs together.
Kalce started as that place, for me only.
The first version was deliberately rough. A few hardcoded calls to the models I wanted to test, a prompt box, and a grid of results. No accounts, no storage, keys in a local config file.
It did its job, and it showed me the real pattern in how I worked. I rarely ran a single prompt. I chained steps: write a prompt, generate an image, upscale it, animate it into a short clip. I was building pipelines by hand, one copy-paste at a time.
That pattern became the product: a visual canvas where each step is a node, and a workflow is just nodes connected together.
Before scaling the idea, I mapped the space. Node-based tools for AI generation already existed, but they split into two camps:
Nobody was combining a hosted, designer-friendly canvas with full freedom over where the generation actually runs. That gap defined Kalce's position: provider-agnostic, bring your own key. Use an external API, your own model instance, or a third-party provider, and pay them directly.
Once the canvas worked, the scope grew in steps, each one forced by the previous:
What began as a weekend utility became a full-featured open-core product, built with a Series A trajectory in mind.
Kalce was built with AI agents doing most of the implementation. The work that mattered most happened before any code was written.
For every feature I wrote a plan: the goal, the architectural constraints, the interfaces it touches, and what it must not break. Bigger changes got a written architecture decision first, so the agent worked inside boundaries I had already set rather than inventing new ones. Plans were split into small, verifiable steps, each with a clear definition of done.
That discipline is what let the codebase grow from a script into a multi-provider platform without collapsing. Agents are fast, but they follow the shape you give them. The architecture had to be explicit enough to be followed.
The core decisions:
Kalce is coming to GitHub soon, along with a hosted alpha.
Your models. Your keys. Your workflow.