Skip to content

Case study · hero · 2024 to present

Nibbble

Founded a multi-tenant restaurant loyalty SaaS, designed every surface, and shipped production v1 with AI agents as load-bearing teammates.

Role
Founder, designer, product leader, and AI-powered engineer
Company
Nibbble.io
Dates
2024 to present
Bucket
current venture
Nibbble marketing homepage hero: editorial serif headline Built for the people behind the counter on a warm radial sunburst background, with a green Join the Waitlist call-to-action
Nibbble · HomepageEditorial-first homepage. One promise, one call-to-action, one mood. This is software for the operator at the register, not the chain-restaurant boardroom.

TL;DR

  • Role: Founder, designer, product leader, and AI-powered engineer
  • Timeframe: Jan 2026 to present
  • Business problem: Independent restaurants need loyalty tools that fit how they actually operate. Most products are too thin for the owner or too heavy for the floor.
  • What I changed: Designed and shipped a multi-tenant SaaS platform connecting owner administration, staff workflows, and customer engagement under one system.
  • Proof: Production v1 launched 2026-04-22 at app.nibbble.io with Square POS and Stripe billing, three role-specific portals, a shared design-token layer, validated through a four-restaurant customer council with two in active beta.

The problem was not loyalty points

The easy version is a punch card with a login screen. Independent restaurants need a system that respects how they actually operate: the owner thinks about margin and repeat visits, staff need speed between orders, customers need a reason to return without homework.

Started with the operating model, not the feature list. Nibbble is three products sharing one spine (owner, staff, customer), each with a different job on the same architecture. The harder challenge was keeping that system coherent while building primarily with AI agents. Without the right scaffolding, agents drift the system every week.

Three users, one system

One shared layer. Three distinct surfaces.

Lane 01

Owner

Surface
Management console
Goal
Configure rewards, read the numbers.

Lane 02

Staff

Surface
Counter app
Goal
Apply and redeem between orders.

Lane 03

Customer

Surface
Wallet + scan flow
Goal
Earn points, redeem at checkout.

Shared foundation

  • Shared data model
  • Design tokens
  • Role-based access

Integrations

  • Square POS
  • Stripe billing
  • Rewards engine
Three distinct surfaces, owner, staff, and customer, on one shared data model and token layer, wired to Square, Stripe, and the rewards engine.

Three portals, one product

3 points

The Nibbble app surface: the round green N badge, the wordmark, a one-line value proposition, and three portal cards labeled Customers, Staff, and Admin.
01 · Customer: scan and go

Check points, redeem rewards, view history. The smallest scope, tuned for a few seconds at the counter.

Customers earn, staff serve, admins configure. Same data model, three discrete scopes. The shared token layer is what keeps the system coherent. Select a marker to read each scope.

What I did

  • Defined the product strategy for independent restaurants, not enterprise chains. The customer council of four restaurants validated decisions before they shipped.
  • Designed the core experience across owner, staff, and customer workflows. Three distinct surfaces with different primary actions: admin carries full configuration weight, staff is built around one high-frequency action during rush, customer is built for scan-and-go on a phone.
  • Built production v1 with Square POS integration, Stripe billing, multi-tenant Postgres with row-level security, and scheduled operational jobs. Launched 2026-04-22 at app.nibbble.io.
  • Created a shared design-token system so three portals feel like one product. Three distinct layouts, one coherent system.
  • Established an AI-assisted development model with governance rituals: peer review by a second AI model, documentation-sync gates, codebase memory so agents understand the system before editing, and hard safety rails in the runner (not the prompt). Speed did not become drift.

Built around the people at the register

Three roles. Four questions each.

Role 01

Owner

Job
Grow repeat visits and protect margin.
Anxiety
Is this worth my time to run?
Core action
Configure rewards, read the daily numbers.
Success
Regulars coming back on their own.

Role 02

Staff

Job
Run it between orders.
Anxiety
Don't slow the line.
Core action
Apply and redeem in seconds.
Success
Fast, no friction at the counter.

Role 03

Customer

Job
Get rewarded for loyalty.
Anxiety
Not another chore.
Core action
Earn and redeem at checkout.
Success
A real reason to return.
Job, anxiety, core action, and success, mapped for every person at the register.

Three portals, one shared layer

Discrete scopes, one product surface.

Portal 01

Customer

  • Scan and go redeem.
  • View points history.

Portal 02

Staff

  • Search and check in during rush.
  • Manage orders.

Portal 03

Admin

  • Configure loyalty rules.
  • Stripe billing.
  • Multi-tenant analytics.

Shared data and tokens

  • Postgres with RLS
  • HeroUI v3 contracts
  • Square POS
  • Stripe
  • OpenClaw routing
Three discrete scopes, one shared data and tokens layer. The cheap path was one role-gated app. I shipped three distinct surfaces instead.

What changed

Nibbble moved from idea to live SaaS with a business model, a customer council, a production foundation, and a system for keeping product decisions coherent as it grows.

  • Production multi-tenant SaaS running at app.nibbble.io since 2026-04-22: three portals, Square POS, Stripe billing, multi-tenant data layer.
  • Customer council of four restaurants, two in active beta. Operator-validated decisions are the asset at this stage, not revenue.
  • A documented multi-agent development stack where design, product, and engineering choices stayed connected through the build.

Commit attribution

Commit authorship donut, 387 of 412 on mainA donut chart of commit attribution on the Nibbble main branch. The brass arc represents 387 commits authored by Mohsin Amjed. The muted arc represents the remaining 25 commits from other contributors.
387 / 412Commits on main, twelve weeks
Mohsin
387
Others
25
The commit history is a receipt, not the point. The point is that design, product, and engineering decisions stayed connected throughout the build.
NIBBBLE · 2026

Autofix commits landed

Local Ollama loop on Nibbble, 2026.

Free per attempt. Real diffs, allow-list gated.

Evidence the local autofix loop catches real failures.

The executive signal: turning ambiguity into a shipped product without letting it fragment.

Reflection

The product is early. The next proof should be usage, retention, revenue, or operator behavior, not more build velocity. Running this with a Director of Product Design team, I would put a research lead on standing customer council synthesis and a design systems lead on the three-portal token layer earlier, so the maintenance cost of three surfaces stays low as the team grows.