Back to portfolio
OrigenOSCase Study

I couldn't find a system that fit my café. So I built one.

What started as an internal POS/KDS evolved into a multi-tenant hospitality operating system — built through an AI-native development workflow and tested every day inside the business it was designed for.

6 daysFirst functional version
~500Real orders processed
5Current team users
Day OneRunning Origen 22 since opening
01 — The Problem

The system I wanted didn't exist

I was preparing to open my own coffee shop, Origen 22. I looked at the POS and hospitality systems available to me, but none matched exactly how I wanted the business to operate.

Instead of adapting the café to the software, I decided to build the software around the café.

OrigenOS started as a relatively small internal tool to control the essentials:

POSKitchen display (KDS)RecipesCostingInventoryMenu

The initial goal was never to build a huge SaaS. It was to solve my own problem. As new operational needs appeared, the system grew with them.

02 — Six Days

First functional version in 6 days

OrigenOS wasn't built in six days — the first functional version was. The repository's first six consecutive days contain 173 commits. By day six, working software existed:

Payments / checkoutRecipesCostingInventoryMenu managementCore operational flow
173 commits in the first 6 days

That version worked. It was also nowhere near the product OrigenOS would eventually become.

03 — Scope

From POS to operating system

The scope didn't grow because of a roadmap. It grew because running the café kept surfacing the next real need.

POS + KDS
Recipes + Costing
Inventory
Staff & Operations
Finance & Fiscal
Customers & Loyalty
Integrations
ORIGENOSHospitality Operating System
04 — Product Thinking

Building the product from inside the business

OrigenOS is developed inside the same business that uses it. Most features don't start in a backlog — they start behind the counter.

ObserveIdentify frictionRedesignBuildTestUse in productionIterate

Counter vs. table service

Counter

  1. Order
  2. Pay
  3. Prepare
  4. Deliver

Table service

  1. Open table
  2. Send items
  3. Prepare
  4. Add more items
  5. Close table
  6. Pay
The problemA single POS workflow couldn't represent two fundamentally different physical workflows.
The decisionModel both explicitly. The POS has two modes, and each device remembers its station's mode.
The principleThe software should follow how the staff works — not force the staff to follow the software.

One order, multiple stations

A single order can include a cappuccino and a plate. The bar prepares one, the kitchen prepares the other — so the system routes each item only to the station that has to prepare it, in real time. The bar display also runs on tighter timing than the kitchen, because drinks should come out faster than plates.

Order #142 — cappuccino + toast

Kitchen KDS

Toast

Bar KDS

Cappuccino

The combo engine

Take a real offer: coffee of choice + 2 medialunas. For the customer it's one simple product. For the system it means representing fixed items and customer choices inside a single commercial entity — which then flows into pricing, order representation and station routing.

COMBO

├── 2 × Medialunas — fixed

└── Coffee — customer choice

├── Espresso

├── Cappuccino

├── Latte

└──

Simple customer experiences often require non-trivial product models underneath.

05 — AI-Native Development

AI didn't define the product. It changed how fast I could build it.

Every feature follows the same path — from a real need observed in the café to validated software in production. AI accelerates the middle of that path, not the ends.

Real problemHuman product decisionAI-assisted specificationAI-accelerated implementationTestingReal-world validationIteration
01

Real need

Every feature starts with a problem or need I observe in the operation.

02

Product definition

I define what should happen and how it should behave.

03

Discussion

I use Claude conversationally to explore implementation options, edge cases, interactions with existing features and potential problems.

04

Specification

That conversation becomes a concrete specification.

05

Implementation

Claude Code accelerates the implementation.

06

Testing

I test the behavior and verify it matches the original need.

07

Production

When it's ready, the team uses the change inside Origen 22.

08

Iteration

Real feedback comes back into the product.

827Total commits
712Include Claude as co-author

712 of 827 commits in the audited repository history include Claude as co-author. That number shows how deeply AI is integrated into the development workflow — it does not mean the product was written by AI. Product direction, architecture, business rules and validation are human work; the commit history reflects a collaboration, not a delegation.

06 — Division of Labor

Human-owned. AI-accelerated.

Human-owned

  • Product direction
  • Operational knowledge
  • Prioritization
  • UX decisions
  • Business rules
  • Validation

AI-accelerated

  • Implementation
  • Research
  • Refactoring
  • Debugging
  • Testing assistance
  • Repetitive engineering work

This split is conceptual, not absolute. The message is simple: AI accelerates implementation. Product judgment remains human.

07 — Real Production

Built in software. Tested in hospitality.

July 14, 2026Origen 22 opened
Day OneOrigenOS running
5Current team users
~500Real orders processed
OrigenOS isn't software I built for a hypothetical user. I am the user. My team is the user. And every day the café opens, the product gets tested in production.
08 — Architecture

One application, readable in twenty seconds

The entire system — POS, kitchen displays, admin, background jobs and public API — runs as a single Next.js application. High level, it looks like this:

Users
WaiterCashierKitchenBarAdmin
OrigenOS application
POSKitchen displaysOrdersInventoryStaffAdmin
Business logic
Server actionsBackground jobsPermissions
Data / realtime
PostgreSQLRealtime updates
External services
Electronic invoicingPaymentsLocal print agent
09 — Engineering Challenges

Problems worth solving

Five problems that shaped the engineering — each one driven by an operational constraint, not a technology choice.

Multi-tenant isolation

Every query and every row must stay inside its tenant. Isolation is enforced in two independent layers — application and database — so a single mistake can't leak data.

Real-time station synchronization

An order placed at the POS has to appear on the right kitchen or bar display instantly, and stay in sync as its state changes.

Order state management

Orders move through states that don't always advance linearly — adding an item to a ready order intentionally reopens it. Closing an order coordinates payment, fiscal receipt, stock and loyalty in one transaction.

Fiscal & external integrations

Electronic invoicing depends on external providers. When a provider is down, the POS keeps selling — receipts queue offline and drain automatically when connectivity returns.

Reliable background printing

The server never talks to a printer directly. Print jobs are queued and a small agent inside the café's network picks them up — designed so the same ticket can't print twice.

10 — Engineering Deep Dive

For engineers who want the details

Optional reading. The story above works without this section — this is for the technical reader who wants to go one level down.

827Commits
172API routes
323Test files
1,695TypeScript files
Frontend
  • Next.js 16 App Router, React 19, strict TypeScript
  • Tailwind CSS 4 with Radix UI primitives
  • Kitchen displays driven by realtime subscriptions, not polling
  • Installable PWA for counter devices
Backend
  • Single application — no separate backend service
  • Server Actions for human-triggered mutations
  • API routes for crons, webhooks, the print agent and a versioned public API
  • Separate auth contexts for staff, customers and platform admin
Data
  • PostgreSQL on Supabase
  • Row-level security plus an application-level tenant guard on every query
  • Per-location pricing, stock and fiscal configuration
  • Realtime channels for station displays
Security & reliability
  • Fiscal credentials encrypted at rest
  • Signed webhooks and rate limiting on public endpoints
  • Offline queues for fiscal receipts and printing
  • Backwards-compatible migrations — the multi-tenant evolution never required a rewrite
11 — What's Next

One café first. More later.

Today OrigenOS runs one business: Origen 22.

For roughly another month, the plan is to keep using it intensively inside the café — dogfooding: using your own product every day before asking anyone else to.

The goals of that phase:

Find frictionImprove workflowsPolish UXValidate reliabilitySolve edge cases

After that: start onboarding other food-service businesses. The architecture is already multi-tenant — but there's a difference between an architecture that supports many businesses and a product proven by them. I'd rather earn the second before selling the first.

I like building software this way.

Real problems. Fast iteration. Production feedback. If that's how you want products built, let's talk.