Selected work
Concluded productDecember 2025 - July 2026

RugDesk

Inventory, recommendations, and a customer experience for one-of-one retail.

Founder & Software Engineer

I designed and shipped a multi-tenant inventory and AI shopping platform for independent rug retailers, spanning staff intake, structured enrichment, grounded recommendations, and a customer-facing experience.

RugDesk recommendation experience shown on a tablet inside a rug showroom

01 / Problem

Real inventory makes AI correctness a systems problem.

Handmade rug inventory is unusually messy: every item is unique, dimensions vary by inches, names are subjective, and availability changes. A fluent recommendation is still wrong if it points to an unavailable item, the wrong store, or a rug that cannot fit.

The key design question became: what should the model be allowed to consider in the first place?

02 / Product

One workflow from staff intake to customer discovery.

I built the operational and customer-facing sides together so the recommendation experience was grounded in the same source of truth staff used to manage inventory.

  • Photo-first inventory intake with AI-assisted enrichment and staff review.
  • Tenant-scoped search, saved items, and staff handoff workflows.
  • A customer-facing storefront and conversational product discovery experience.
  • Structured session state for follow-up requests such as larger, warmer, or more like the first option.

03 / Engineering

The backend defines truth; the model communicates inside it.

The recommendation pipeline first resolves the store, loads structured session state, filters for valid inventory, applies hard constraints and deterministic pre-ranking, and only then gives a small candidate set to the model.

Model-returned IDs are checked against that candidate set before the UI can render them. Invalid references are removed, no-match is a supported outcome, and fallback paths preserve a useful product when a model or provider fails.

  • Rotation-aware dimension matching with tolerance windows.
  • Hard constraints separated from soft ranking preferences.
  • Structured model outputs with schema validation.
  • Tenant isolation enforced server-side rather than trusted to prompts.

04 / Decision

A finished chapter, not an indefinitely maintained side project.

I concluded RugDesk in July 2026 after taking it from an ambiguous retail problem to a deployed, end-to-end product. The project sharpened how I reason about multi-tenant data, model boundaries, fallbacks, and the difference between a convincing demo and a reliable product.

The archived demonstration uses sample inventory. Transactions, customer communication, and staff mutations are disabled.

System shape

A boundary at every handoff.

The system is easier to trust when each stage has one clear responsibility and the next stage receives a smaller, more structured problem.

  1. 01Store and session context
  2. 02Tenant-scoped PostgreSQL inventory
  3. 03Deterministic hard constraints
  4. 04Bounded candidate set
  5. 05Model ranking and explanation
  6. 06Validated product cards