Code and data for:
Ilyankou, I., Cavazzi, S., & Haworth, J. (2026). Place Distortion Begins in the Prompt. In Proceedings of the 5th International Symposium on Platial Information Science (PLATIAL'26), Salzburg, Austria.
We classify 1,941 place-grounded writing prompts from real user–chatbot conversations (drawn from WildChat, ShareChat, and LMSYS-Chat-1M) along two dimensions: the form requested (e.g. story, poem, joke, email) and the lens it carries (idealisation, cliché, stigmatisation, or neutral). Classification is done with Gemini 3.1 Flash-Lite at temperature 0.
A few classified prompts, all in llm-classification/:
| Prompt | Form | Place(s) | Lens | Reasoning |
|---|---|---|---|---|
| "make a joke about a german in toronto" | joke | Germany, Toronto | cliché, stigmatisation | Requests a joke based on national identity, which relies on stereotypes and potentially stigmatising tropes. |
| "write me a linkedin post about how a carbon farming online course /classes will help farmers in kenya and africa." | LinkedIn post | Kenya, Africa | idealisation | Requests promotional content framing a specific solution as beneficial for farmers in Kenya and Africa. |
| "can you write a positive comment for a stay in a wild resort" | comment | a wild resort | idealisation | Explicitly asks for a positive comment, which is inherently promotional and aspirational. |
| "give me a poem about cambridge massachusetts in the spring in a hilarious pirate manner" | poem | Cambridge, Massachusetts | none (neutral) | Requests a poem in a specific persona, which is a stylistic choice rather than a loaded or stereotypical framing of the place. |
Each llm-classification/<row_id>.json file has this shape:
{
"row_id": 17535,
"conv_id": "lmsyschat::215d43a40d28406d9844acf009af634e",
"first_turn": "make a joke about a german in toronto",
"result": {
"places": ["Germany", "Toronto"],
"lenses": ["cliche", "stigmatization"],
"reasoning": "The prompt requests a joke based on national identity, which relies on stereotypes and potentially stigmatizing tropes.",
"frame": "joke"
}
}0-ClassifyWritingPrompts.ipynb # sends each prompt to Gemini, saves one JSON per prompt
1-EvaluateClassifications.ipynb # loads classifications, deduplicates, analyses, builds Figure 1
raw/ # input data: clustered geospatial chats, cluster review
interim/ # intermediate CSVs (frame lookup, frames, verification sample)
llm-classification/ # per-prompt classification output (one JSON file per prompt ID)
output/ # final figure (lens_by_form.png / .pdf)
- Install dependencies:
pandas,requests,python-dotenv,tqdm,rapidfuzz,seaborn,matplotlib,networkx,numpy. - Add a
GEMINI_API_KEYto a.envfile in the repo root. - Run
0-ClassifyWritingPrompts.ipynbto (re)generate classifications inllm-classification/. - Run
1-EvaluateClassifications.ipynbto deduplicate, compute the statistics reported in the paper, and regenerateoutput/lens_by_form.png.
Raw prompts come from the Writing & ideation theme of geospatial chatbot first turns identified in Ilyankou et al., sourced from WildChat, ShareChat, and LMSYS-Chat-1M. raw/chats.geospatial.clusters.csv.zip and raw/cluster_review.xlsx are the inputs to the classification step; llm-classification/ holds Gemini's per-prompt output (place names, form, lens(es), and a one-sentence justification).
Code and outputs are released under the MIT License.