Journal Entry Creation Flow

Primary user workflow: Capturing everyday moments and tagging skills

Core Philosophy

Photo-First

Primary interaction is taking a photo of a moment

AI Does the Heavy Lifting

System suggests skills/behaviors - parent doesn't need deep thinking

Speed Over Perfection

Must be faster than traditional journaling apps

User Journey: Create Journal Entry

Start

User Taps "New Entry" Button

Always accessible floating action button from any screen

View: Photo Capture

Camera Opens

Options:

  • Take new photo with camera
  • Select existing photo from library

UI Elements: Camera viewfinder, capture button, switch camera, flash control, gallery thumbnail

User Action

User Captures/Selects Photo

Photo of child doing activity: sandcastle, feeding cat, cooking, playing, etc.

Controller: Photo Upload

uploadPhoto(photoData, childId)

  • Uploads photo to cloud storage
  • Handles compression and optimization
  • Returns cloud storage URL
View: Entry Details

Entry Details Screen

UI Components:

  • Large photo preview (editable)
  • Date/time picker (defaults to now)
  • Freeform notes text area (optional, multiline)
  • "Analyze Photo" button or automatic AI processing
User Action

User Adds Context (Optional)

Parent adds freeform notes about what happened, conversations, observations

This step is optional - speed is prioritized

Controller: AI Analysis

analyzePhoto(photoUrl, contextNotes)

  • Sends photo and context to AI service
  • Returns detected activities, environments, objects, people
Controller: Template Suggestion

suggestTemplate(aiAnalysisData, childAge)

  • Takes AI analysis + child context
  • Returns best template suggestions
  • Ranked by confidence/relevance
View: AI Template Suggestion

Template Suggestion Card

UI Components:

  • Template icon and name (e.g., "Beach Day", "Cooking Together")
  • Pre-selected skills/behaviors as tags/chips
  • "Use Template" button (one-tap acceptance)
  • "Skip" button
  • Option to view other template suggestions
User Action

User Accepts or Skips Template

One tap to accept pre-selected skills, or skip to manual tagging

Controller: Skill & Behaviour Suggestions

suggestSkills(templateId, aiAnalysisData, childAge)

suggestBehaviours(templateId, aiAnalysisData, childAge)

  • Suggests specific skills from 64-skill taxonomy (6 categories)
  • Suggests character traits from 22-behaviour taxonomy
  • Returns arrays with confidence levels
View: Skill & Behaviour Tagging

Tag Selection Screen

Skills Section:

  • Selected skills as tags (color-coded by category: Literacy, Communication, Numeracy, Motor, Analytical, Cognitive)
  • Quick-add skill selector (searchable, categorized)
  • "Add custom skill" option

Behaviours Section:

  • Selected character traits as tags (distinct styling from skills)
  • Quick-add from 22 core behaviours (Independent, Resilient, Curious, etc.)
  • "Add custom behaviour" option

Each tag shows: name, remove button (X), optional confidence indicator

User Action

User Confirms/Modifies Skills & Behaviours

User reviews AI suggestions and adds/removes skills and character traits as needed

Key Principle: Quick taps - minimal friction

Controller: Save Entry

createJournalEntry(childId, photoUrl, notes, entryDate)

Creates journal entry record with basic info

Controller: Link Skills & Behaviours

addSkillsToEntry(entryId, skillsArray)

addBehavioursToEntry(entryId, behavioursArray)

  • Links skills and behaviours to journal entry
  • Creates EntrySkill and EntryBehaviour junction records
  • Stores confidence levels
  • Tracks whether AI-suggested or parent-added
Database: Write

Data Persisted

Entities Updated:

  • JournalEntry: New entry record
  • EntrySkill: Many junction records linking entry to skills
  • EntryBehaviour: Many junction records linking entry to character traits
Controller: Update Progress

calculateSkillProgress(childId, skillId)

  • Recalculates progress for each demonstrated skill
  • Updates proficiency level (age-relative)
  • Determines trend (improving/stable/declining)
Database: Update

Progress Records Updated

Entity: SkillProgress (calculated/cached)

Controller: AI Learning

learnFromUserCorrections(entryId, aiSuggestions, userSelections)

  • Tracks when users accept/reject/modify AI suggestions
  • Feeds data back to improve future suggestions
  • Updates AI model training data
View: Success

Success Confirmation

Entry saved! User sees brief success message, then returns to timeline view

End

Entry Appears in Timeline

New entry is visible in child's journal timeline and contributes to progress tracking

Key Database Interactions

JournalEntry

Created with:

  • Child ID (FK)
  • Creator User ID (FK)
  • Photo URL
  • Entry date/timestamp
  • Freeform notes
  • AI analysis data (JSON)
  • Template used (FK, nullable)

Skill & Behaviour Taxonomies

64 Skills across 6 categories:

  • Literacy (14)
  • Communication (10)
  • Numeracy (13)
  • Motor skills (4)
  • Analytical (13)
  • Cognitive (10)

22 Behaviours (character traits):

Independent, Resilient, Curious, Empathic, Creative, etc.

EntrySkill (Junction)

Links entry to skills:

  • Entry ID (FK)
  • Skill ID (FK)
  • Confidence level (1-5 or %)
  • Source (AI vs. parent-added)
  • Notes (optional context)

EntryBehaviour (Junction)

Links entry to character traits:

  • Entry ID (FK)
  • Behaviour ID (FK)
  • Confidence level (1-5 or %)
  • Source (AI vs. parent-added)
  • Notes (optional context)

SkillProgress

Updated/calculated:

  • Child ID (FK)
  • Skill ID (FK)
  • Current level (age-relative)
  • First/latest demonstration
  • Demonstration count
  • Trend indicator

Design Priorities

CRITICAL: Minimize friction - every extra tap reduces adoption
HIGH: AI suggestions must be accurate to build trust
HIGH: One-tap template acceptance for speed
MEDIUM: Freeform notes are optional - don't block workflow
MEDIUM: Auto-save drafts to prevent data loss