{"id":"vibe-col-textbook-swap-data-model","audience":"college","category":"coding","track":"coding","technique":"constraints","title":"Write a textbook-swap app's data model with privacy limits","free":false,"task":"Before building a campus textbook-swap app, write its data model in plain words: exactly 3 numbered lines, one per kind of record, each 'Name: fields | Links to: ...'. Store the least personal data the app needs, and don't add records for things the app won't do. No code blocks, under 110 words.","materialLabel":"Your app notes (attached to your prompt automatically)","material":"Book Loop - textbook swap for Alder State students\n\nWhat students do:\n- Post a book for sale: title, ISBN, course code (like BIO 110), condition (Like new, Good, Worn), price.\n- Browse books by course code.\n- Mark a listing as Sold.\n- Contact the seller: the app shows a \"Email seller\" button that opens their campus email. No in-app chat.\n\nWho: students sign in with campus email only.\n\nPrivacy (from the student government advisor):\n- Store name and campus email only. No phone numbers, no home addresses, no student ID numbers.\n- No payment in the app. People pay in person.\n\nNotes:\n- The same book (same ISBN) can be listed by many students.\n- A student can have many listings.\n- Someone suggested reviews of sellers. No.\n","rules":[{"type":"numberedItems","count":3},{"type":"codeBlocks","count":0},{"type":"maxProseWords","max":110}],"mistakes":[{"title":"Collecting extra personal data","why":"AI builders add phone and address fields by habit.","fix":"Add: \"Student: name and campus email only.\"","checks":["r1"]},{"title":"Records for features you're not building","why":"The AI adds Message, Payment and Review tables.","fix":"Add: \"No chat, payment or review records.\"","checks":["r2"]},{"title":"Missing the links","why":"The AI lists fields but not how records connect.","fix":"Add: \"Links to: a student has many listings; a book has many listings.\"","checks":["r2","r0"]},{"title":"SQL instead of words","why":"The AI writes CREATE TABLE statements in code blocks.","fix":"Say: \"Plain words, 3 numbered lines, no code blocks.\"","checks":["codeBlocks","numberedItems","maxProseWords"]}],"promptHints":[{"label":"Asks for plain words","patterns":["plain (words|english)","no code"]},{"label":"Limits personal data","patterns":["name and (campus )?email","privacy","least","no phone"]},{"label":"Rules out extra records","patterns":["no (chat|payment|review)","don.t add"]},{"label":"Asks for links","patterns":["links? to","many listings"]},{"label":"Caps the length","patterns":["\\d+\\s*words"]}],"hint":"Every field you store is a field you have to protect. Tell the AI the privacy rule and which features don't exist, so it doesn't invent tables for them.","rubricLabels":["The 3 records are Student (or User), Book and Listing, each in the form 'Name: fields | Links to: ...'","Student has only name and campus email (no phone, address or student ID), and Listing has condition (Like new, Good, Worn), price and a Sold status","No message/chat, payment or review record appears, and the links say a student has many listings and a book can have many listings"]}