ALL_WORK

01 OPERATIONS APP / CULTURAL BAR LIVE

Funez

A bar that ran on scraps of paper — stock, orders, the night's sheet. I designed and built the system that replaced them, with an AI assistant you can talk to with a crate in the other hand.

funez.pages.dev

PROJECT_META

ROLE
Product design · UX/UI · Full-stack · AI integration
TIMEFRAME
2026
TEAM
Solo — design, build and deploy, working with Claude Code as a coding agent.
CLIENT
Cultura Funez

STACK10

  • Astro
  • React
  • TypeScript
  • Tailwind
  • shadcn/ui
  • Firebase / Firestore
  • Cloudflare Pages
  • Cloudflare Workers AI
  • Gemini
  • Vitest

WHAT_I_OWNED03

  • Owned the whole product: mapped how the bar actually runs a night, then designed and built every section — orders, cash, stock, menu, promos, staff, shifts, costs and analysis.
  • Owned the data model and its guarantees: a domain layer separated from the UI, Firestore security rules with their own test suite, and invariants such as stock that can never go negative.
  • Owned the AI layer: a chat that answers questions about the business and proposes actions, voice dictation, and supplier tickets read from a photo — with nothing applied until a person confirms it.

/ 01 / CONTEXT

The problem.

Cultura Funez is a cultural bar. Before this, it had no stock system: stock, orders and the night’s sheets all lived on scraps of paper.

I designed and built, on my own, the system that replaced them — an app the staff use on their phones during service, covering the whole circuit of a night: opening the cash, taking and charging orders, moving stock, paying out, and closing.

On top of it sits an AI assistant. You can ask it about the business, dictate to it, or photograph a supplier ticket and let it write the expense — and nothing it proposes is saved until a person confirms it.

/ 03 / PROCESS

Key decisions.

  1. 01

    DESIGN + BUILD

    The model proposes, a person confirms

    The chat can create a product or log an expense, but it never writes to the database. The Worker only runs inference and holds no credentials; the tool definitions travel with each request, and whatever the model proposes is applied by the browser, through the same use cases as the buttons, only after someone says yes.

  2. 02

    DESIGN

    Designed for a bar at night

    Whoever is using it often has a crate of beer in the other hand. So there's dictation, an undo for what was just done, fixes for entries mistyped at night, and products named the way people call them — nobody says "Cerveza Andes Roja". "Let it go for ten thousand" is understood as a price, because that's how it's actually asked.

  3. 03

    FRONTEND

    A photo of a ticket becomes an expense

    Supplier tickets are photographed from the chat and the expense writes itself. A long ticket can be taken in two photos and read as one; a ticket with no date isn't guessed, it's asked about; and only the bar's items go in, once someone confirms. Which model reads tickets is set by config, not code.

  4. 04

    FRONTEND

    Business rules live in the domain, and are tested

    The logic moved out of the Firestore rules into a domain layer with its own tests: stock can't go negative, something another item depends on can't be deleted, and a discount is spread across the order instead of being booked as a negative cost. The rules themselves have a separate suite run against the emulator.

/ 05 / RESULT

What shipped.

In daily use at the bar. Things that were never recorded before are now tracked, and the costs and analysis sections show how much money comes in, how much goes out and the gross profit left — with real costs stored and the best-selling items in view.

NOTE // No usage metrics yet — the impact is described by the team, not measured.

DELIVERED09

  • Orders — open, add lines, correct, split payment across two methods
  • Cash & wallet — opening float, payouts, end-of-night close and receipt
  • Stock — products vs. ingredients, recipes, waste, a separate back-room store
  • Menu & promos — combos where the customer picks from a whole category
  • Shifts — each night named after its show, with its own totals
  • Costs — where the money goes and what's left, week by week
  • Analysis — what sells most, and the month at a glance (admin only)
  • Chat — ask, dictate or photograph a ticket; confirm before anything is saved
  • Installable on the phone's home screen, with a notice when a new version ships

LINKS

/ 06 / DEBRIEF

Looking back.

WITH_MORE_TIME01

  • 01

    Instrument the app so "it's used every night" becomes numbers: orders per shift, time to close the cash, how often the chat is used versus the buttons.