This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
Stitch Desk is a local-first order assistant for boutiques and tailors.
Many small tailoring shops still run on paper notebooks, loose receipts, and WhatsApp chats. A customer's measurements are in one place, the delivery date is on a sticky note, and the balance is in the owner's head. In busy seasons, that is where orders get lost and deliveries get late.
Stitch Desk turns that into one small app:
- Note to order card: The owner types or pastes a messy note, like "Anna, bridal lehenga, boat neck blouse, deep U back, bust 36, waist 30, delivery 20 Nov, total 24000, advance 10000". A local AI model turns it into an editable card with the customer, garment, design notes, measurements, delivery date, total, advance, and balance. The owner checks it before saving.
- Orders board: Orders sorted by delivery date, with status chips (New, Stitching, Trial pending, Ready, Delivered), a "due this week" count, and the total balance still pending.
- Customers: Orders grouped by customer, with a saved phone number, the latest measurements for each garment, and order history.
- WhatsApp message drafts: "Ready for trial", "Order ready", and "Balance reminder" messages the owner can edit and open in WhatsApp.
- Design search: The owner describes an outfit ("bridal lehenga blouse, boat neck, deep back"), sees matching pictures, and links up to three as references on an order.
Who would pay for it: small boutiques and tailors who keep orders and measurements in notebooks and chats, and who lose time (and sometimes money) chasing details and balances. I have not set a price. I describe below what a tailor said when I showed it to them.
Demo
- Screenshots: ## Demo
All screenshots use fictional sample data. The banner is an AI-generated illustration.
Code
vrush1588
/
stitch-desk
A local-first order assistant for boutiques and tailors. Turn customer notes into editable order cards, organize contact details and measurements, draft WhatsApp messages, and find outfit design images for order references.
Stitch Desk
Stitch Desk is a local-first order assistant for boutiques and tailors: turn a messy customer note into an editable order card, keep customer contact details and measurements together with WhatsApp message drafts, and search for outfit design pictures to link as order references.
Features
- Create order cards from a pasted note with local AI, or fill the order in by hand.
- Track delivery dates, order status, advances, balances, and design references.
- Group saved orders by customer, save contact numbers and measurements, and create editable WhatsApp message drafts.
- Search Google Images through SerpApi and attach up to three linked design references to an order.
- Keep orders, customer details, and in-progress order drafts in this browser's local storage.
Who it's for
Stitch Desk is for small boutiques and tailors who keep orders, measurements, and delivery dates in notebooks and WhatsApp chats. They get a quick way to turn a spoken…
The repo has a README, setup steps, an MIT license, and an .env.example with no secrets.
How I Built It
Stack: React + Vite for the app, a small Node + Express server for design search, Ollama running Gemma (gemma3:4b) on my own laptop, SerpApi for image search, and the browser's localStorage for orders and customers. I built it one feature at a time with GitHub Copilot prompts, and committed after each step.
Where Gemma is used (three jobs):
- Order cards. The app sends the owner's note and today's date to Gemma and asks for JSON only: customer, garment, design notes, measurements, delivery date, total, and advance. The prompt says never to invent values, and to leave a field empty if the note does not say it. The result is shown in an editable form with the label "AI draft, please check", and the balance is computed in code.
- Message wording. The code builds each WhatsApp message from a fixed template with the customer's name, garment, delivery date, and balance. Gemma only rewrites it in a warmer tone. Then the code checks that every number and date from the template appears unchanged in Gemma's reply. If anything is missing or changed, the app uses the plain template instead.
- Search queries. Gemma turns the owner's request into two short search phrases. The code then removes any phrase containing digits or a saved customer's name, so no private details reach the search service.
SerpApi runs the image search through my small server, so the API key never reaches the browser. Results are cached, so the same search never costs a second credit, and there is a per-session limit. The app saves only the thumbnail link, title, and source page for each reference, never the image itself.
If the model is off, the app does not break. The order form becomes a manual form, and messages use the plain template.
What I learned about using a small model for money-related data
The biggest risk with an order app is a wrong number. A small model can misread or change figures, and a wrong balance in a message to a customer is a real problem. So I did not trust the model with anything that must be exact:
- The balance is calculated in code, not by the model.
- The model never writes amounts or dates into messages. It only rewords around them, and the code verifies them.
- Every AI result is shown for the owner to edit before it is saved.
Why Does Open Innovation Matter?
- The cost stays near zero per order. Gemma runs on the owner's own machine, so there is no per-note or per-message AI charge. For a small shop where each order brings in a small amount, a metered AI bill per card would eat into the margin. The only metered cost in my build is the optional image search, and I cache it to keep that low.
- Customer details stay on the device. Names, phone numbers, and body measurements are sensitive. Notes and measurements are processed by a model on the owner's laptop and stored in the browser, and are not sent to a hosted AI service. Only short design-search phrases leave the machine, and the code removes names and digits from them.
- I could change how it behaves. Because I control the prompts and the model setting, I could add strict rules (never invent values, keep numbers exactly as written) and swap the model by changing one setting.
- It is honest about limits. Running the model myself made it clear what a 4B model can and cannot do. I describe the mistakes it made below and in the repo's README.
My Agent Session
I built Stitch Desk with GitHub Copilot's agent mode, using one prompt per feature and committing after each step so I could test it before moving on. I did not save a full session transcript, so here are the key prompts (shortened) and what I checked after each one.
1. Base and layout
Start from my existing React + Vite project, rename it "Stitch Desk", remove the old features, keep the Ollama connection, JSON parsing helpers, fallback pattern and localStorage utilities, and create a mobile-first layout with bottom navigation: Orders, New, Designs, Customers. Show a "Local AI on / off" badge.
Check: Four tabs render correctly, and the badge status updates instantly when stopping or starting Ollama.
2. Note to order card (the core feature)
Send the owner's note and today's date to the local Gemma model and ask for JSON only (customer, garment, design notes, measurements, delivery date, total, advance). Never invent values, use null for anything missing, keep numbers exactly as written. Show an editable form labelled "AI draft, please check" with the balance computed in code. If Ollama is off, show an empty manual form.
Check: I tested 5 distinct note formats (complete note, missing total, missing measurements, scrambled number order, and a very messy shorthand note). 4 of 5 were fully correct; the model left the delivery date empty when I wrote only "Friday" without a specific calendar date, which correctly triggered the fallback rather than guessing.
3. Orders board
Show "due this week" and "balance pending" cards, filter chips, order cards sorted by delivery date with colored date chips, a bottom sheet to change status or record a payment, and an empty state.
Check: Orders sort accurately by urgency, and marking an order as "Delivered" instantly drops it from the pending balance total.
4. Customers and WhatsApp drafts
Group orders by customer, save a phone number and the latest measurements, and build messages from fixed templates filled in by code. Let Gemma only reword the tone, then verify in code that every number and date is unchanged. If anything changed, or Ollama is off, use the plain template.
Check: The recipient name, delivery date, and balance matched the order data precisely every single time. When I intentionally tweaked a number in a test prompt, the verification safeguard caught the discrepancy and cleanly defaulted to the plain template.
5. Design search with SerpApi
Add an Express server that calls SerpApi, keeping the key in
.env, with caching and a per-session search limit. Let Gemma write two search phrases, and in code remove any phrase containing digits or customer names. Show up to 8 results and let the owner link up to 3 as references, storing only links and titles.
Check: Repeat searches loaded instantly from the cache, the API key never leaked to the frontend bundle, and turning off the backend server displayed a clean, friendly fallback message.
6. Screenshots and README
Write a script that loads fictional sample data and captures phone-sized screenshots into
docs/images, then write a README that describes only features that exist.
My First User
I showed Stitch Desk to a tailor near me. They have not used it on real orders yet, so this is a first reaction and not a full test.
- First reaction: "This looks useful. If I can manage customer measurements and stitching orders in one place, it could save me time."
- What they liked: Storing customer measurements, tracking order status, and keeping track of delivery dates without relying on notebooks.
- What they would change: No suggestions yet.
- Would they pay? I have not asked about a price yet, so I will not guess one.
Honest Limits
- Ollama has to be running on a computer for the AI features to work. Using it from a phone on the same network may need extra Ollama settings.
- A small local model can still make mistakes with numbers, which is why every draft is reviewed and amounts are verified in code.
- Orders live in one browser's local storage. There is no backup or sync yet, so clearing browser data would erase them.
- Image search depends on a SerpApi plan, and the pictures belong to their original websites. The app links to them and does not copy them.
- I tested with a small number of notes and one tailor's first reaction. I have not tested real daily use or a price.
Prize Categories
Best Use of Gemma
Stitch Desk runs gemma3:4b locally through Ollama for three jobs: turning notes into order cards, rewording message templates, and writing search phrases. In each case the code checks the output (balances computed in code, numbers and dates verified, queries filtered for names and digits), so the model helps without being trusted blindly.
Best Use of SerpApi
Design search uses SerpApi's Google Images API through a small server, with the key kept out of the browser. Gemma writes the search phrases, results are cached, and each result links to its source page. The tailor's customers often bring picture references, and this puts them next to the order.
Best Use of GitHub Copilot
I built the app by giving GitHub Copilot one prompt at a time and committing after each step: the layout and tabs, the order-card flow, the orders board, the customer screen, the message safeguards, the search server, and the README. Copilot was a development aid only, and it is not needed to run the app.
What's Next
- Excel or file backup and a way to move data between browsers
- Test more note styles, including notes in other languages
- Try other open models and compare them with Gemma on real notes
- Let the tailor try real orders for a week, then ask about price
- A hosted demo for people who do not want to install Ollama




Top comments (0)