A prototype we built for a manufacturing prospect. February to March 2026.
A spreadsheet that checks itself before it reaches the marketplace
A manufacturing prospect uploaded order workbooks to a marketplace by hand and had them rejected when a row was wrong. This prototype runs the rules the team kept in its head against the workbook first, names each failing row, and hands the clean rows to a simulated Salla upload.
5required fields checked on every row: order, customer, mobile, city and quantity
2recorded demos, February and March 2026, before a proposal was written
Workbook upload
Validation rules
Transforms and filters
Reports
Email notifications
Marketplace upload
The parts of the system.
Screens from this system are being added.
The situation
The prospect had order workbooks that were uploaded to a marketplace by hand and rejected when a row was wrong. It asked for a recorded demo of the tool before engaging; there was no tool, so one was built in days: the rules a team keeps in its head, written down and run against the workbook, with the failures listed rather than hidden.
What we built
Workbook and CSV upload with a validation pass, rule by rule, against a rule set held outside the workbook
Rules for the fields the marketplace needs
Order, customer, mobile, city and quantity present; Saudi mobile number format; coordinates; SKU; duplicate detection
Transforms, filtering and reports on the validated rows
Conditional workflow steps and email notifications when a run finishes or fails
A simulated Salla marketplace upload as the worked example, with per-row results so a rejected row is named rather than the whole file failing
Supabase storage behind the surface, with a run history and API notes
A second visual demo in March 2026 of the order-management and inventory dashboard the proposal went on to describe
What changed
The prospect had a working front end to react to before a proposal, and the proposal was written against what the demo showed rather than against a description. We walk through it on a call.
An email becomes order lines against a catalogue, stock moves to reserved, and a quotation drafts itself. 3 quantities per stock item: on hand, available and reserved.
The CSV or JSON export an ads-ops person opens every morning, aggregated per campaign, compared against the previous day, with what to look at first pulled to the top. 40 minutes of a person's morning, and a spreadsheet, before the prototype.
Gemini 2.5 Pro reads a scanned Thai and English insurance form and returns every field as structured JSON, on video, with the SAP entry stage mapped for the operation to decide on. 46 fields out of one scanned insurance form, as JSON.