Skip to main content

26. Natural Language Interface

Status: Accepted Date: 2025-07-06

Context

For an application like AnyTracker, which is meant for quick and frequent data entry, a traditional graphical user interface with forms and buttons can be slow and cumbersome. The goal is to make tracking as frictionless as possible. A conversational interface, where the user can simply type or speak their entry in plain language, offers a more intuitive and efficient user experience.

Decision

The primary method of interaction with the AnyTracker application will be through a natural language interface (NLI). Users will interact with the system by sending text messages in a conversational style (e.g., "Tracked 2 cups of coffee," "set a goal of no more than 1 cigarette per day"). The backend will be responsible for parsing these natural language inputs, extracting the intent and entities (e.g., substance, quantity, action), and performing the corresponding action.

Consequences

Positive:

  • Intuitive User Experience: A conversational interface is more natural and requires less learning for the user compared to a complex GUI.
  • Speed of Interaction: For power users, typing a quick command is often faster than navigating through multiple UI screens.
  • Flexibility: A well-designed NLI can handle a wide variety of inputs and commands without needing a dedicated UI element for every possible action.

Negative:

  • Ambiguity & Imprecision: Natural language is inherently ambiguous. The system may misinterpret the user's intent, leading to incorrect data entry.
  • Discoverability: It can be difficult for users to discover all the possible commands and features the system supports without a visual interface.
  • Implementation Complexity: Building a robust Natural Language Processing (NLP) engine to handle the parsing and intent recognition is a significant technical challenge.

Mitigation:

  • Robust NLP Engine: Invest in a powerful NLP engine (potentially using a local model via Ollama for privacy) to accurately parse user input.
  • Confirmation & Clarification: When the system is uncertain about the user's intent, it must ask for clarification instead of guessing (e.g., "Did you mean you had 1 cup of coffee?"). It should always confirm the action it took (e.g., "OK, I've tracked 2 cups of coffee.").
  • Structured Fallback: Provide a clear help command (/help) that lists available commands and examples. For complex operations, provide a structured command fallback with clear arguments.
  • Progressive Enhancement: Start with a core set of well-defined commands and progressively enhance the NLP capabilities to handle more complex and varied inputs over time.