OUTLINE
We applied a PROMPT to francAIs Basic Concept (see previous post) to drive ChatGPT to generate the francAIs OUTLINE.
Abstract of the PROMPT applied to the Basic Concept:
- The Prompt was designed to transform the Basic Concept of the francAIs PROTOTYPE into a structured, implementation-ready OUTLINE for development in Ruby on Rails, PostgreSQL, and Bootstrap. Through a disciplined, one-question-at-a-time approach, the process progressively clarifies goals, target users, features, data architecture, user flows, technical constraints, and timeline. Each question must builds logically on prior responses to eliminate ambiguity and drive concrete decision-making. The resulting OUTLINE will serve as a coherent product blueprint, ready for conversion into detailed developer specifications using an incremental, test-driven methodology.
We then answered 45 questions and the related suggested options generated by ChatGPT. Examples of Questions asked by ChatGPT:
- When Module 2 gives a new CEFR level, should the system automatically update the user's stored “Niveau” in the database? Choose one:
- Yes — auto-update
- After each Module 2 submission, the user’s profile level is overwritten with the new level.
- Future module prompts adapt automatically.
- No — keep the profile level fixed
- Module 2 shows the evaluated level only on-screen.
- The stored profile level never changes unless the user edits it manually (we would add a profile edit page).
- Hybrid
- e.g., update only if the new level is equal or higher
- or update only if the user clicks “Confirmer niveau”
Then ChatGPT generated a 21 page OUTLINE with 10 sections. Examples of some sections below:
- Section 4. Database Schema (Core Models)
- 4.1 Users
- users table (Devise-compatible):
- id
- email (string, unique)
- encrypted_password (string)
- verification_code (string, 6 digits, temporary)
- verified_at (datetime)
- cefr_level_id (foreign key to levels, nullable until first Module 2 completion)
- modules_used (integer, default: 0)
- trial_started_at (datetime, nullable)
- created_at, updated_at
- 4.2 Levels (Niveaux)
- levels table:
- id
- code (string: “A1”, “A2”, “B1”, “B2”, “B2+”)
- display_name (string: “A1 – Débutant”, etc.)
- etc.
____________________________________
- Section 8.2 POST /module2 – Analysis & Results, Validation
- Recount words using same rules.
- If <100:
- Show error “Votre texte doit contenir au moins 100 mots.”
- Keep text & situation; no AI call.
- If >120:
- Show error “Votre texte dépasse la limite de 120 mots. Merci de le réduire.”
- Keep text & situation; no AI call.
- If valid:
- One AI call that returns:
- CEFR evaluation of the text.
- Short explanation.
- Grammar analysis.
- Vocabulary analysis.
- Orthography analysis.
- etc
AI Call Behavior
___________________________________
Section 9.2 POST /module3 – Generation & Display
AI Input Rules
- Use current CEFR level (dynamic; updated by Module 2).
- Style applies to:
- Word choice (vocabulary itself).
- Example sentences.
- Category rule:
- ~80–90% of words from selected category.
- 10–20% general-use vocabulary (verbs, connectors, common adjectives).
- Quantity: number of words to generate.
- For each word:
- Generate 2 example sentences in selected style.
- Level-appropriate syntax & vocabulary.
AI Error Handling
- On failure:
- Show: “Une erreur est survenue. Veuillez réessayer.”
- No deduction.
- Preserve selected dropdown values.
Results Layout
- Instructions disappear when results appear.
- One Bootstrap card per word:
- Card header/title: word in bold.
- Card body:
- Sentence 1 (French)
- If translation toggle ON → English translation below in italics.
- Sentence 2 (same rule).
- Cards stacked vertically.
TTS
- A single TTS button (e.g. at top of results) that:
- Reads the entire list: word + both sentences for each.
- Uses Web Speech API; fixed speed.
Module Deduction
- On successful AI output:
- modules_used += 1.
- User kept on results page.
- etc.
