Skip to main content

Pricing PWA / Small Business

PriceCraft

I built PriceCraft around a practical question for small food businesses: after ingredients, labor, and overhead change, what should this product sell for?

PriceCraft results screen for chocolate chip cookies showing recommended price, break-even price, margin, profit, and cost breakdown.
The results view keeps the recommended selling price beside break-even, margin, per-unit profit, batch profit, and the underlying cost breakdown.

The problem

A price is easy to calculate once; keeping it current is harder when spreadsheets repeat ingredient costs and related products duplicate the same base recipe.

Missing a shared cost can make real margins look healthier than they are, while required sign-in or connectivity can block a quick pricing check.

My contribution

Full-Stack Engineer

Solo project · Live

Built the calculator across ingredient, labor, overhead, markup, profit-margin, break-even, and per-unit profit calculations.

Added shared recipe costs, product variants, a personal ingredient catalog, receipt OCR with user confirmation, offline use, and Supabase synchronization.

The choices behind the work

PriceCraft keeps the recipe, selling-price options, and future cost updates together so a business can recalculate instead of rebuilding its math.

Share one base recipe across variants

Related products needed to share a base recipe without duplicating shared ingredient costs.

Model reusable base recipes and allocate shared costs across product variants.

Update shared costs once while keeping each variant’s added costs and resulting margin visible.

Treat receipt OCR as a draft

Receipt text is noisy and cannot safely update ingredient costs without review.

Preprocess captured images, extract candidate lines through the available OCR path, and require editable confirmation before catalog or price-history writes.

Reduce re-entry work without letting uncertain text silently alter a selling-price calculation.

The user remains responsible for checking names, quantities, units, and prices before saving.

Let the calculator work before sign-in

The calculator needed to remain useful before sign-in and during connectivity loss.

Support local guest changes, optional Supabase authentication and synchronization, and guest-data migration.

Make the core calculation immediately useful, then offer cloud sync when the user wants it.

Outcome

Calculates selling prices with both markup and profit-margin strategies across ingredient, labor, and overhead costs.

Lets a guest calculate and save locally without a connection, then migrate and synchronize data after signing in.

Covers pricing logic, persistence, migration, catalog, and interface behavior with more than 300 unit and integration tests.

Turns user-reviewed receipt lines into new catalog ingredients or updated price-history records.

What I learned

I learned to treat receipt OCR as a draft that reduces typing, with user confirmation before it changes the costs behind a selling price.

Building offline guest workflows pushed me to make the calculator useful before account creation and explain the cost behind its recommendation.

What comes next

Test receipt extraction across more layouts and let users review several detected price changes in one pass.

User adoption, pricing time saved, and business-margin improvement have not been measured.

Stack

  • TypeScript
  • React
  • Vite
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • Tesseract.js
  • Vitest
  • Vite PWA