REACT · TYPESCRIPT · GEMINI API · LOCALSTORAGE
A raw item.
A listing ready to publish.
Vintedito turns scattered garment details into a structured listing: a local engine creates an explainable base, then optional AI assistance can improve the wording.
A selling interface that prioritises precision before wording: the listing is useful first, then easier to read.
Selling takes more than a good title.
Condition, size, defect, price, photos, tone and hashtags all shape trust. The point was not to make AI write in place of someone, but to keep every useful detail inside the listing.
Size 34Good conditionPulled thread disclosed€18CottonSummer
What is declared is included. What is missing stays visible as missing.
Three steps, one continuous path.
The product moves from the real item to publishable copy. Each screen answers one question and always lets the seller stay in control.
- 01
Describe the item
Category, brand, size, colour, condition.
- 02
Generate a base
Local rules, estimate and score.
- 03
Review then publish
Text, photos, hashtags and status.
Surface useful detail without overloading the form.
The form separates essentials, selling details, then trust-building information. All three groups feed directly into generation rules.
Essentials
What helps sell
Transparency
Tone changes. Rules stay visible.
Before any external call, Vintedito builds a listing from local rules: provided data, selling goal, declared condition, price estimate and completeness score.
Copy that values supplied details without overselling.
Indicative price: €9 — €24
A result to check, copy and stand behind.
Title, description, hashtags, price and photo tips stay together. The score does not judge the item: it shows which details would make a listing more reliable.
The essential details are present.
Zara · cropped top · size 34 · red · good condition · good value
DESCRIPTIONRed Zara cropped top in good condition. Size 34. A small pulled thread is disclosed on a seam and shown in the photos. Cotton piece, ideal for summer and casual outfits.
Improve a sentence without inventing the item.
The local version always exists. On request, the browser sends bounded context to the server; the server validates it, then calls Gemini for alternative wording without hiding declared defects or information.
Zara · cropped top · size 34 · red · good condition · good value
Red Zara cropped top in good condition. Size 34. A small pulled thread is disclosed on a seam and shown in the photos. Cotton piece, ideal for summer and casual outfits.
- 01 / BROWSER
Category, brand, size, colour, condition, disclosed defect, desired price and goal form the request. The local draft already exists.
- 02 / SERVER → GEMINI
The server validates the expected shape, keeps the key out of the browser and sends this bounded context to Gemini.
- 03 / RESPONSE OR ERROR
A valid response remains optional. On an invalid response or network failure, the local draft is retained and the error remains visible.
An unavailable API must not stop a sale.
The base listing is generated first in the browser. AI is an optional enhancement, never a dependency that takes a listing away from its seller.
Local engine
Creates a starting listing and score directly in the browser.
Optional AI
The server calls Gemini only on request with bounded item fields.
Local fallback
Validation, an invalid response or a network error never removes the local draft.
A listing keeps its trajectory.
Listings and statuses stay in local history. When AI is requested, only bounded item details are sent to Gemini through the server; saved history is not sent automatically.
Measure practical help, not only generated text.
I would test the flow with real sellers: time to publish, corrected information, distance between the first and last versions, then comprehension of price advice. The product needs to prove that listing feels calmer.
