{"id":"vibe-fl-client-portal-data-model","audience":"freelancers","category":"coding","track":"coding","technique":"grounding","title":"Describe a client portal's data model in plain words","free":false,"task":"Before asking an AI builder to make your client portal, write its data model in plain words: exactly 3 numbered lines, one per kind of record, each 'Name: fields | Links to: ...'. Only store what the portal needs, then add a last line starting 'Not stored:' naming the data that stays in other tools. Plain text, no code blocks, under 110 words.","materialLabel":"Your portal notes (attached to your prompt automatically)","material":"Client portal - for my design studio (me + 1 part-timer)\n\nWhat clients do in the portal:\n- See their projects and each project's status (Draft, In review, Approved).\n- Leave comments on a project, like \"can the logo be bigger?\"\n- See the due date of each project.\n\nWhat I do:\n- Add clients (company name, contact name, contact email).\n- Add projects for a client (title, status, due date).\n- Reply to comments.\n\nStays in other tools, NOT in the portal:\n- Invoices and payments stay in my accounting app.\n- Files stay in our shared drive (I'll just paste a link in the project).\n- Client passwords: the builder's login feature handles that, I don't want my own password field.\n\nEach comment needs to show who wrote it and when.\nOne client can have many projects; one project can have many comments.\n","rules":[{"type":"numberedItems","count":3},{"type":"plainText"},{"type":"maxProseWords","max":110}],"mistakes":[{"title":"Storing everything","why":"AI builders add Invoice and Payment tables because portals often have them.","fix":"Add: \"Invoices, payments and files stay in other tools. Don't store them.\"","checks":["r2"]},{"title":"Missing the links","why":"The AI lists fields but not how records connect.","fix":"Add: \"Links to: one client has many projects; one project has many comments.\"","checks":["r2","r0"]},{"title":"Thin fields","why":"The AI forgets who wrote a comment and when.","fix":"Add: \"Comment needs text, author and time.\"","checks":["r1"]},{"title":"SQL instead of words","why":"The AI writes a database schema in a code block.","fix":"Say: \"Plain words, 3 numbered lines, no code blocks.\"","checks":["plainText","numberedItems","maxProseWords"]}],"promptHints":[{"label":"Asks for plain words","patterns":["plain (words|english)","no code"]},{"label":"Leaves out other tools' data","patterns":["invoice","payment","stays in","don.t store"]},{"label":"Asks for links","patterns":["links? to","many projects","relationship"]},{"label":"Sets the record count","patterns":["\\b(3|three)\\b"]},{"label":"Caps the length","patterns":["\\d+\\s*words"]}],"hint":"A data model is just: what records exist, what's in each, and how they connect. Spell out what the portal should not store.","rubricLabels":["The 3 records are Client, Project and Comment, each in the form 'Name: fields | Links to: ...'","Project has title, status (Draft, In review, Approved), due date and a file link; Comment has text, author and date/time","No invoice, payment or password record or field appears in the 3 records, the links say a client has many projects and a project has many comments, and a last line starting 'Not stored:' names invoices, payments, files and passwords"]}