[KongchangAI]
Product

listwright

A command-line Etsy copywriting tool built on the open-weight Gemma model. It takes product photos and factual descriptions as input and outputs titles, tags, and descriptions. A built-in rule checker separates generation from validation, flagging potential risks for human confirmation.

Timeline (last 90 days)

Oct 18

listwright is an open-source command-line tool that uses the Gemma 4 model to generate Etsy product titles, 13 tags, and three-paragraph descriptions from product photos and factual inputs.

Unverified50%
Oct 18

listwright's core design is the separation of generation and validation: the model is only responsible for generating copy, and a checker written in pure Python (rules.py) is responsible for classifying output into ready, confirm, or not ready before the user sees the result.

Unverified50%
Oct 18

The author tested with 12 real listings run twice each for 24 generations in total, of which 17 were ready on the first pass, 7 entered confirm, 0 failed, with an average time of 5.5 seconds and a total cost of $0.0035.

Unverified50%
Oct 18

Of the 7 confirms, 5 came from "lazy-version" inputs (the model read dimensions and date information from the photo that the user had not provided) and 2 came from 'personalised' printed items (each of the two factual inputs triggered one).

Unverified50%
Oct 18

Because it uses open-weight models, when the author's local GPU driver failed, they pointed the calls to the hosted version of the same Gemma 4 family (26B) by changing environment variables, continuing without rewriting any code.

Unverified50%
Oct 18

The listwright implementation contains only three core files: model.py (makes model calls), draft.py (sends photos and facts and handles retries), and rules.py (a pure rule checker), with no external dependencies.

Unverified50%
Oct 18

listwright's checker does not know whether a tag is 'good' and once labeled a moon poster as 'astrology art', causing a shelf error; tag quality still requires human judgment.

Unverified50%
Oct 18

listwright's spelling-check strategy is to check only place names appearing mid-sentence, abandoning general full-sentence spell checking to avoid false positives between real words such as includes/included and covers/coders.

Unverified50%
Oct 18

listwright's checker skips negation contexts to avoid misjudging negative sentences like 'you are getting a digital file, not a physical print' as false claims.

Unverified50%
Oct 18

listwright is installed via pip install git+https://github.com/casareanderson/listwright.

Unverified50%

2 more timeline events

All Facts (12)

Unverified

listwright is an open-source command-line tool that uses the Gemma 4 model to generate Etsy product titles, 13 tags, and three-paragraph descriptions from product photos and factual inputs.

50%
Unverified

listwright's core design is the separation of generation and validation: the model is only responsible for generating copy, and a checker written in pure Python (rules.py) is responsible for classifying output into ready, confirm, or not ready before the user sees the result.

50%
Unverified

The author tested with 12 real listings run twice each for 24 generations in total, of which 17 were ready on the first pass, 7 entered confirm, 0 failed, with an average time of 5.5 seconds and a total cost of $0.0035.

50%
Unverified

Of the 7 confirms, 5 came from "lazy-version" inputs (the model read dimensions and date information from the photo that the user had not provided) and 2 came from 'personalised' printed items (each of the two factual inputs triggered one).

50%
Unverified

Because it uses open-weight models, when the author's local GPU driver failed, they pointed the calls to the hosted version of the same Gemma 4 family (26B) by changing environment variables, continuing without rewriting any code.

50%
Unverified

The listwright implementation contains only three core files: model.py (makes model calls), draft.py (sends photos and facts and handles retries), and rules.py (a pure rule checker), with no external dependencies.

50%
Unverified

listwright's checker does not know whether a tag is 'good' and once labeled a moon poster as 'astrology art', causing a shelf error; tag quality still requires human judgment.

50%
Unverified

listwright's spelling-check strategy is to check only place names appearing mid-sentence, abandoning general full-sentence spell checking to avoid false positives between real words such as includes/included and covers/coders.

50%
Unverified

listwright's checker skips negation contexts to avoid misjudging negative sentences like 'you are getting a digital file, not a physical print' as false claims.

50%
Unverified

listwright is installed via pip install git+https://github.com/casareanderson/listwright.

50%
Unverified

listwright by default calls the local gemma4 model via Ollama, through an abstraction layer compatible with the OpenAI chat API, and switching to a remote hosted endpoint only requires changing environment variables.

50%
Unverified

listwright is a Hacktoberfest side project that so far only the author has used, and it only supports Etsy's rules.

50%

Source Articles