From a642e7e267f6a09e2b8c50f32c95a0153cd0b2d3 Mon Sep 17 00:00:00 2001 From: null Date: Thu, 25 Jun 2026 11:40:56 -0500 Subject: [PATCH] =?UTF-8?q?docs(seed):=20align=20type=20names=20with=20rep?= =?UTF-8?q?o=20schema=20=E2=80=94=20single=5Fchoice,=20this=5For=5Fthat,?= =?UTF-8?q?=20answer=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seed/questions/QUESTION_REWRITE_PLAN.md | 149 +++++++++++++++--------- seed/questions/QUESTION_SCHEMA.md | 55 ++++++--- 2 files changed, 127 insertions(+), 77 deletions(-) diff --git a/seed/questions/QUESTION_REWRITE_PLAN.md b/seed/questions/QUESTION_REWRITE_PLAN.md index 41246d1d..2e78a313 100644 --- a/seed/questions/QUESTION_REWRITE_PLAN.md +++ b/seed/questions/QUESTION_REWRITE_PLAN.md @@ -1,35 +1,65 @@ -# Closer Question Pack Rewrite Plan +# Closer Question Rewrite Plan -## Purpose +## Repo Alignment -This document defines the active rewrite plan: what needs to happen, in what order, and how to validate each pack. +This plan reflects the current repository schema. -For writing philosophy and tone, see `QUESTION_CONTENT_GUIDE.md`. -For JSON schema and validation rules, see `QUESTION_SCHEMA.md`. +Use these type names exactly: ---- +- written +- single_choice +- multi_choice +- scale +- this_or_that -# 1. Product Goal +Do not rename them. Do not introduce `choice` or `either_or` unless the application code is updated first. -Closer is a relationship app, not a survey or therapy worksheet. +## Product Goal -Every question should make couples smile, laugh, learn something new, remember something, plan something together, or have a meaningful conversation. +Closer should feel like a couples game, not a survey or therapy worksheet. -The app should feel like a game you accidentally spend an hour playing. +Questions should make couples: + +- smile +- laugh +- learn something new +- remember something +- plan something together +- have meaningful conversations If a question feels like homework, rewrite it. ---- +## Question Mix -# 2. Consumer First Philosophy +Every 250 question pack must contain: -People are opening Closer while sitting on the couch, riding in the car, eating dinner, or lying in bed. +| Type | Count | +|---|---| +| multi_choice | 140 | +| single_choice | 50 | +| scale | 35 | +| this_or_that | 15 | +| written | 10 | -They are not looking to complete an emotional worksheet. +This means 190 of 250 questions, or 76%, are choice based. -Questions should be quick, conversational, and rewarding. +## Emotional Mix -A couple should naturally answer dozens of questions in one session. +Aim for: + +- 35% fun and playful +- 25% everyday relationship +- 20% meaningful conversation +- 10% future dreams and planning +- 10% deeper vulnerability + +Never group heavy questions together. + +Every category must contain lighter moments. + +## Consumer First Rules + +People should naturally answer dozens of questions in one sitting. Every category should create moments like: @@ -37,61 +67,62 @@ Every category should create moments like: - "Really?" - "That's adorable." - "We should do that." -- laughter -- flirting -- nostalgia -- future plans ---- +The product sells shared moments, not data collection. -# 3. Emotional Mix +## Type Definitions -Every pack should roughly contain: +### multi_choice -- 35% fun and playful -- 25% everyday relationship -- 20% meaningful conversations -- 10% future dreams and planning -- 10% deeper vulnerability +Select every option that applies. -Never group heavy questions together. +Default to this type whenever possible. -Every category must contain moments of humor and curiosity. +### single_choice ---- +Select one best answer. -# 4. Rewrite Rules +### scale + +Rate agreement, comfort, confidence, importance, or frequency. + +### this_or_that + +Very fast playful questions. + +Should take under three seconds. + +### written + +Reserve for questions where typing creates significantly more value. + +Never use written for simple preferences. + +## Rewrite Rules For every category: - Rewrite every question from scratch. - Follow the content guide. - Keep category ids. -- Use conversational language. +- Keep conversational wording. - Avoid therapy language. -- Avoid corporate wording. - Avoid repetitive templates. -- Keep answers short. - Use 4 to 6 options for choice questions. -- Make multi_choice clearly allow multiple answers. -- Make scale neutral. - Keep written questions rare. +- Add fun throughout every category. ---- +## Fun Injection -# 5. Fun Injection +Every category should include at least: -Every category must include: +- 10 playful questions +- 5 questions that create laughter +- 5 questions that inspire a future date, memory, or shared activity -- at least 10 playful questions -- at least 5 questions that create laughter -- at least 5 questions that inspire a future date, memory, or shared activity +Even serious categories should include enjoyable moments. -Even serious categories should contain lighter moments. - ---- - -# 6. Rewrite Order +## Rewrite Order 1. fun 2. date_night @@ -115,25 +146,27 @@ Even serious categories should contain lighter moments. 20. sex_and_desire 21. sexual_preferences ---- - -# 7. Validation +## Validation Every rewritten pack must pass: - Valid JSON -- 250 questions +- Exactly 250 questions - 75 free - 175 premium - 140 multi_choice -- 50 choice +- 50 single_choice - 35 scale -- 15 either_or +- 15 this_or_that - 10 written -- Valid depth values only +- Valid depth values only: light, medium, deep +- No numeric depth values +- No malformed keys - No duplicate ids - No duplicate questions -- No malformed keys +- Every choice question has options +- Every scale question has scale configuration +- Every written question has answer configuration +- No therapy worksheet wording - No placeholder text -- No therapy worksheet tone -- Every category contains fun, curiosity, and meaningful conversations +- Every category feels fun, conversational, and rewarding diff --git a/seed/questions/QUESTION_SCHEMA.md b/seed/questions/QUESTION_SCHEMA.md index 4bcc75a5..60a93ca1 100644 --- a/seed/questions/QUESTION_SCHEMA.md +++ b/seed/questions/QUESTION_SCHEMA.md @@ -15,7 +15,7 @@ For the active rewrite checklist and category order, see `QUESTION_REWRITE_PLAN. Select every option that applies. -Primary question type. At least 75% of all questions must be choice-based (multi_choice + choice). +Primary question type. At least 75% of all questions must be choice-based (multi_choice + single_choice). ```json { @@ -38,13 +38,13 @@ Rules: - Options should not shame either partner. - Include practical and emotional options when possible. -## choice +## single_choice -Pick the single best answer. +Select one best answer. ```json { - "type": "choice", + "type": "single_choice", "text": "Which kind of date sounds best this week?", "options": [ { "id": "cozy_at_home", "text": "Cozy at home" }, @@ -98,13 +98,13 @@ Better: How much would some intentional time together help us right now? ``` -## either_or +## this_or_that Very fast playful questions. Should take under three seconds. ```json { - "type": "either_or", + "type": "this_or_that", "text": "Planned date or spontaneous date?" } ``` @@ -124,10 +124,15 @@ Never use written questions for basic preferences. ```json { "type": "written", - "text": "What is one small thing I do that makes you feel cared for?" + "text": "What is one small thing I do that makes you feel cared for?", + "answer": { + "max_length": 500 + } } ``` +Written questions require an `answer` configuration with `max_length`. + Good written examples: ``` @@ -157,12 +162,12 @@ Every 250-question pack must contain: | Type | Count | Percent | |---|---|---| | multi_choice | 140 | 56% | -| choice | 50 | 20% | +| single_choice | 50 | 20% | | scale | 35 | 14% | -| either_or | 15 | 6% | +| this_or_that | 15 | 6% | | written | 10 | 4% | -At least 75% of all questions must be choice-based (multi_choice + choice). +At least 75% of all questions must be choice-based (multi_choice + single_choice). Written questions should be rare and only used when typing creates a better conversation. @@ -255,12 +260,12 @@ Valid category access values: } ``` -## Either/or question object +## This-or-that question object ```json { "id": "dn_089", - "type": "either_or", + "type": "this_or_that", "text": "Planned date or spontaneous date?", "depth": "light", "access": "free", @@ -277,10 +282,15 @@ Valid category access values: "text": "What is one date we should bring back?", "depth": "medium", "access": "premium", - "sex": "neutral" + "sex": "neutral", + "answer": { + "max_length": 500 + } } ``` +Written questions require an `answer` configuration with `max_length`. + --- # 4. Validation Rules @@ -288,17 +298,17 @@ Valid category access values: Every rewritten pack must pass: - Valid JSON -- 250 questions +- Exactly 250 questions - 75 free - 175 premium - 140 multi_choice -- 50 choice +- 50 single_choice - 35 scale -- 15 either_or +- 15 this_or_that - 10 written -- Valid depth values only (light, medium, deep) +- Valid depth values only (light, medium, deep) — no numeric depth values - Valid access values only (free, premium) -- Valid type values only (multi_choice, choice, scale, either_or, written) +- Valid type values only (multi_choice, single_choice, scale, this_or_that, written) - Valid sex values only (neutral, female, male) - No duplicate question IDs - No duplicate question texts @@ -309,6 +319,9 @@ Every rewritten pack must pass: - Options have unique IDs inside each question - Option IDs are neutral and clean - Scale labels are present when needed +- Every choice question has options +- Every scale question has scale configuration +- Every written question has answer configuration - Every category contains fun, curiosity, and meaningful conversations ## JSON Quality Checklist @@ -323,11 +336,15 @@ Every rewritten pack must pass: - [ ] No near-duplicate blocks. - [ ] Type counts match metadata. - [ ] Free/premium counts match metadata. -- [ ] Depth values are valid. +- [ ] Depth values are valid (light, medium, deep only). +- [ ] No numeric depth values. - [ ] Access values are valid. - [ ] Options have unique IDs inside each question. - [ ] Option IDs are neutral and clean. - [ ] Scale labels are present when needed. +- [ ] Every choice question has options. +- [ ] Every scale question has scale configuration. +- [ ] Every written question has answer configuration. - [ ] No malformed keys like m a x _ l e n g t h. - [ ] No placeholder text. - [ ] No accidental old gendered IDs unless intentionally used.