# AI-Assisted Forms (typdialog-ai)\n\n**Status**: πŸ”΄ Planned (Q2 2025 target)\n\nAI-Assisted Forms is a planned feature that integrates intelligent suggestions, context-aware assistance, and natural language understanding into the\ntypdialog web UI. This enables users to configure infrastructure through interactive forms with real-time AI guidance.\n\n## Feature Overview\n\n### What It Does\n\nEnhance configuration forms with AI-powered assistance:\n\n```\nUser typing in form field: "storage"\n ↓\nAI analyzes context:\n - Current form (database configuration)\n - Field type (storage capacity)\n - Similar past configurations\n - Best practices for this workload\n ↓\nSuggestions appear:\n βœ“ "100 GB (standard production size)"\n βœ“ "50 GB (development environment)"\n βœ“ "500 GB (large-scale analytics)"\n```\n\n### Primary Use Cases\n\n1. **Guided Configuration**: Step-by-step assistance filling complex forms\n2. **Error Explanation**: AI explains validation failures in plain English\n3. **Smart Autocomplete**: Suggestions based on context, not just keywords\n4. **Learning**: New users learn patterns from AI explanations\n5. **Efficiency**: Experienced users get quick suggestions\n\n## Architecture\n\n### User Interface Integration\n\n```\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ Typdialog Web UI (React/TypeScript) β”‚\nβ”‚ β”‚\nβ”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚\nβ”‚ β”‚ Form Fields β”‚ β”‚\nβ”‚ β”‚ β”‚ β”‚\nβ”‚ β”‚ Database Engine: [postgresql β–Ό] β”‚ β”‚\nβ”‚ β”‚ Storage (GB): [100 GB ↓ ?] β”‚ β”‚\nβ”‚ β”‚ AI suggestions β”‚ β”‚\nβ”‚ β”‚ Encryption: [βœ“ enabled ] β”‚ β”‚\nβ”‚ β”‚ "Required for β”‚ β”‚\nβ”‚ β”‚ production" β”‚ β”‚\nβ”‚ β”‚ β”‚ β”‚\nβ”‚ β”‚ [← Back] [Next β†’] β”‚ β”‚\nβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚\nβ”‚ ↓ β”‚\nβ”‚ AI Assistance Panel β”‚\nβ”‚ (suggestions & explanations) β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n ↓ ↑\n User Input AI Service\n (port 8083)\n```\n\n### Suggestion Pipeline\n\n```\nUser Event (typing, focusing field, validation error)\n ↓\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ Context Extraction β”‚\nβ”‚ - Current field and value β”‚\nβ”‚ - Form schema and constraints β”‚\nβ”‚ - Other filled fields β”‚\nβ”‚ - User role and workspace β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n ↓\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ RAG Retrieval β”‚\nβ”‚ - Find similar configs β”‚\nβ”‚ - Get examples for field type β”‚\nβ”‚ - Retrieve relevant documentation β”‚\nβ”‚ - Find validation rules β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n ↓\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ Suggestion Generation β”‚\nβ”‚ - AI generates suggestions β”‚\nβ”‚ - Rank by relevance β”‚\nβ”‚ - Format for display β”‚\nβ”‚ - Generate explanation β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n ↓\nβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\nβ”‚ Response Formatting β”‚\nβ”‚ - Debounce (don't update too fast) β”‚\nβ”‚ - Cache identical results β”‚\nβ”‚ - Stream if long response β”‚\nβ”‚ - Display to user β”‚\nβ””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n```\n\n## Planned Features\n\n### 1. Smart Field Suggestions\n\nIntelligent suggestions based on context:\n\n```\nScenario: User filling database configuration form\n\n1. Engine selection\n User types: "post" \n Suggestion: "postgresql" (99% match)\n Explanation: "PostgreSQL is the most popular open-source relational database"\n\n2. Storage size\n User has selected: "postgresql", "production", "web-application"\n Suggestions appear:\n β€’ "100 GB" (standard production web app database)\n β€’ "500 GB" (if expected growth > 1000 connections)\n β€’ "1 TB" (high-traffic SaaS platform)\n Explanation: "For typical web applications with 1000s of concurrent users, 100 GB is recommended"\n\n3. Backup frequency\n User has selected: "production", "critical-data"\n Suggestions appear:\n β€’ "Daily" (standard for critical databases)\n β€’ "Hourly" (for data warehouses with frequent updates)\n Explanation: "Critical production data requires daily or more frequent backups"\n```\n\n### 2. Validation Error Explanation\n\nHuman-readable error messages with fixes:\n\n```\nUser enters: "storage = -100"\n\nCurrent behavior:\n βœ— Error: Expected positive integer\n\nPlanned AI behavior:\n βœ— Storage must be positive (1-65535 GB)\n \n Why: Negative storage doesn't make sense.\n Storage capacity must be at least 1 GB.\n \n Fix suggestions:\n β€’ Use 100 GB (typical production size)\n β€’ Use 50 GB (development environment)\n β€’ Use your required size in GB\n```\n\n### 3. Field-to-Field Context Awareness\n\nSuggestions change based on other fields:\n\n```\nScenario: Multi-step configuration form\n\nStep 1: Select environment\nUser: "production"\n β†’ Form shows constraints: (min storage 50GB, encryption required, backup required)\n\nStep 2: Select database engine\nUser: "postgresql"\n β†’ Suggestions adapted:\n - PostgreSQL 15 recommended for production\n - Point-in-time recovery available\n - Replication options highlighted\n\nStep 3: Storage size\n β†’ Suggestions show:\n - Minimum 50 GB for production\n - Examples from similar production configs\n - Cost estimate updates in real-time\n\nStep 4: Encryption\n β†’ Suggestion appears: "Recommended: AES-256"\n β†’ Explanation: "Required for production environments"\n```\n\n### 4. Inline Documentation\n\nQuick access to relevant docs:\n\n```\nField: "Backup Retention Days"\n\nSuggestion popup:\n β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\n β”‚ Suggested value: 30 β”‚\n β”‚ β”‚\n β”‚ Why: 30 days is industry-standardβ”‚\n β”‚ standard for compliance (PCI-DSS)β”‚\n β”‚ β”‚\n β”‚ Learn more: β”‚\n β”‚ β†’ Backup best practices guide β”‚\n β”‚ β†’ Your compliance requirements β”‚\n β”‚ β†’ Cost vs retention trade-offs β”‚\n β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n```\n\n### 5. Multi-Field Suggestions\n\nSuggest multiple related fields together:\n\n```\nUser selects: environment = "production"\n\nAI suggests completing:\n β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”\n β”‚ Complete Production Setup β”‚\n β”‚ β”‚\n β”‚ Based on production environment β”‚\n β”‚ we recommend: β”‚\n β”‚ β”‚\n β”‚ Encryption: enabled β”‚ ← Auto-fill\n β”‚ Backups: daily β”‚ ← Auto-fill\n β”‚ Monitoring: enabled β”‚ ← Auto-fill\n β”‚ High availability: enabled β”‚ ← Auto-fill\n β”‚ Retention: 30 days β”‚ ← Auto-fill\n β”‚ β”‚\n β”‚ [Accept All] [Review] [Skip] β”‚\n β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜\n```\n\n## Implementation Components\n\n### Frontend (typdialog-ai JavaScript/TypeScript)\n\n```\n// React component for field with AI assistance\ninterface AIFieldProps {\n fieldName: string;\n fieldType: string;\n currentValue: string;\n formContext: Record;\n schema: FieldSchema;\n}\n\nfunction AIAssistedField({fieldName, formContext, schema}: AIFieldProps) {\n const [suggestions, setSuggestions] = useState([]);\n const [explanation, setExplanation] = useState("");\n \n // Debounced suggestion generation\n useEffect(() => {\n const timer = setTimeout(async () => {\n const suggestions = await ai.suggestFieldValue({\n field: fieldName,\n context: formContext,\n schema: schema,\n });\n setSuggestions(suggestions);\n| setExplanation(suggestions[0]?.explanation | | ""); |\n }, 300); // Debounce 300ms\n \n return () => clearTimeout(timer);\n }, [formContext[fieldName]]);\n \n return (\n
\n handleChange(e.target.value)}\n />\n \n {suggestions.length > 0 && (\n
\n {suggestions.map((s) => (\n \n ))}\n {explanation && (\n

{explanation}

\n )}\n
\n )}\n
\n );\n}\n```\n\n### Backend Service Integration\n\n```\n// In AI Service: field suggestion endpoint\nasync fn suggest_field_value(\n req: SuggestFieldRequest,\n) -> Result> {\n // Build context for the suggestion\n let context = build_field_context(&req.form_context, &req.field_name)?;\n \n // Retrieve relevant examples from RAG\n let examples = rag.search_by_field(&req.field_name, &context)?;\n \n // Generate suggestions via LLM\n let suggestions = llm.generate_suggestions(\n &req.field_name,\n &req.field_type,\n &context,\n &examples,\n ).await?;\n \n // Rank and format suggestions\n let ranked = rank_suggestions(suggestions, &context);\n \n Ok(ranked)\n}\n```\n\n## Configuration\n\n### Form Assistant Settings\n\n```\n# In provisioning/config/ai.toml\n[ai.forms]\nenabled = true\n\n# Suggestion delivery\nsuggestions_enabled = true\nsuggestions_debounce_ms = 300\nmax_suggestions_per_field = 3\n\n# Error explanations\nerror_explanations_enabled = true\nexplain_validation_errors = true\nsuggest_fixes = true\n\n# Field context awareness\nfield_context_enabled = true\ncross_field_suggestions = true\n\n# Inline documentation\ninline_docs_enabled = true\ndocs_link_type = "modal" # or "sidebar", "tooltip"\n\n# Performance\ncache_suggestions = true\ncache_ttl_seconds = 3600\n\n# Learning\ntrack_accepted_suggestions = true\ntrack_rejected_suggestions = true\n```\n\n## User Experience Flow\n\n### Scenario: New User Configuring PostgreSQL\n\n```\n1. User opens typdialog form\n - Form title: "Create Database"\n - First field: "Database Engine"\n - AI shows: "PostgreSQL recommended for relational data"\n\n2. User types "post"\n - Autocomplete shows: "postgresql"\n - AI explains: "PostgreSQL is the most stable open-source database"\n\n3. User selects "postgresql"\n - Form progresses\n - Next field: "Version"\n - AI suggests: "PostgreSQL 15 (latest stable)"\n - Explanation: "Version 15 is current stable, recommended for new deployments"\n\n4. User selects version 15\n - Next field: "Environment"\n - User selects "production"\n - AI note appears: "Production environment requires encryption and backups"\n\n5. Next field: "Storage (GB)"\n - Form shows: Minimum 50 GB (production requirement)\n - AI suggestions:\n β€’ 100 GB (standard production)\n β€’ 250 GB (high-traffic site)\n - User accepts: 100 GB\n\n6. Validation error on next field\n - Old behavior: "Invalid backup_days value"\n - New behavior: \n "Backup retention must be 1-35 days. Recommended: 30 days.\n 30-day retention meets compliance requirements for production systems."\n\n7. User completes form\n - Summary shows all AI-assisted decisions\n - Generate button creates configuration\n```\n\n## Integration with Natural Language Generation\n\nNLC and form assistance share the same backend:\n\n```\nNatural Language Generation AI-Assisted Forms\n ↓ ↓\n "Create a PostgreSQL db" Select field values\n ↓ ↓\n Intent Extraction Context Extraction\n ↓ ↓\n RAG Search RAG Search (same results)\n ↓ ↓\n LLM Generation LLM Suggestions\n ↓ ↓\n Config Output Form Field Population\n```\n\n## Success Criteria (Q2 2025)\n\n- βœ… Suggestions appear within 300ms of user action\n- βœ… 80% suggestion acceptance rate in user testing\n- βœ… Error explanations clearly explain issues and fixes\n- βœ… Cross-field context awareness works for 5+ database scenarios\n- βœ… Form completion time reduced by 40% with AI\n- βœ… User satisfaction > 8/10 in testing\n- βœ… No false suggestions (all suggestions are valid)\n- βœ… Offline mode works with cached suggestions\n\n## Related Documentation\n\n- [Architecture](architecture.md) - AI system overview\n- [Natural Language Config](natural-language-config.md) - Related generation feature\n- [RAG System](rag-system.md) - Suggestion retrieval\n- [Configuration](configuration.md) - Setup guide\n- [ADR-015](../architecture/adr/adr-015-ai-integration-architecture.md) - Design decisions\n\n---\n\n**Status**: πŸ”΄ Planned\n**Target Release**: Q2 2025\n**Last Updated**: 2025-01-13\n**Component**: typdialog-ai\n**Architecture**: Complete\n**Implementation**: In Design Phase