AI-Powered Form Filling Copilot for Mobile Applications
Long forms in mobile apps are the primary user dropout point. A mortgage application questionnaire with 20 fields, a health insurance form with terminology incomprehensible to non-specialists—users simply close the app. An AI form-filling Copilot doesn't simplify the form itself, but helps users complete it: explains fields, suggests values, auto-fills from context.
Three Copilot Operating Modes
Field explanation. User taps the "Tax ID" field and asks where to find it. Copilot provides a contextual response, understanding the user is an individual in a Russian bank's app, not a legal entity.
Auto-fill from natural language. User speaks or types: "I want to transfer five thousand rubles to Ivan Petrov for November"—Copilot fills in amount, recipient, and payment purpose fields.
Validation with explanation. Instead of "Field required"—"For international payments, you need the receiving bank's BIC code, which is listed in the account details in the recipient bank's app."
Auto-Fill Implementation via LLM Structured Output
LLM returns filled form fields as JSON with strict schema—via Structured Outputs (OpenAI) or JSON mode:
// Android — Kotlin
data class PaymentFormData(
val amount: Double?,
val recipientName: String?,
val recipientPhone: String?,
val purpose: String?,
val scheduledDate: String? // ISO8601 or null
)
suspend fun parseUserInputToForm(userMessage: String, formContext: String): PaymentFormData {
val systemPrompt = """
You are a payment form filling assistant.
Form context: $formContext
Extract data from the user message and return JSON.
Fields not mentioned should be left null.
""".trimIndent()
val response = openAIClient.chatCompletions.create(
model = "gpt-4o-mini",
messages = listOf(
Message(role = "system", content = systemPrompt),
Message(role = "user", content = userMessage)
),
responseFormat = ResponseFormat(type = "json_object"),
temperature = 0.0
)
return gson.fromJson(response.choices[0].message.content, PaymentFormData::class.java)
}
After parsing, fill fields programmatically and show user a preview for confirmation—Copilot doesn't submit the form independently.
Integration with User Data
Copilot works significantly better when it knows the context: list of saved recipients, payment history, user profile. This context is injected into the system prompt:
// iOS — Swift
func buildFormCopilotContext(user: User, formType: FormType) -> String {
var context = "Form: \(formType.displayName).\n"
if formType == .payment {
let recentRecipients = user.recentRecipients.prefix(5)
.map { "\($0.name): \($0.phone)" }
.joined(separator: ", ")
context += "Frequent recipients: \(recentRecipients).\n"
}
return context
}
Voice Input as Trigger
On mobile devices, voice input removes the main friction in form filling. Users don't type "Ivanov Ivan Ivanovich", just speak. Connection: SpeechRecognizer (iOS Speech Framework / Android SpeechRecognizer API) → transcription → LLM extraction → field filling.
Timeframe Estimates
Basic auto-fill from text via LLM + Structured Output—3–5 days. Full Copilot with user context, voice input, and validation explanations—1–2 weeks.







