AIAngularLLMClaude

AI-Powered Frontend: Integrating LLMs Into Your Angular App Without the Hype

DevOpsDays Dallas 2026

Southwest Airlines Wings Building, Dallas, Texas View Slides (PDF)

Plenty of teams have built an AI demo. Far fewer have had to support one at 2 a.m. This talk walks through Lodgic, a working Angular hotel-search app where a natural-language request — "show hotels in Dallas under $200/night with a pool" — becomes a validated set of filters. The model proposes; the application decides. We follow one request end to end: the Angular service, the Node/Express backend that keeps the API key out of the browser, the tool schema sent to Claude, the Zod contract that every proposed filter has to satisfy, and the Angular signals that stage criteria while text is still streaming and commit them only after validation succeeds. Then we break it on purpose — a truncated stream, an invalid price — and recover. The close is the operational question: what a trace, a timeout, a retry budget, and a clear failure state have to look like before this is something you would actually ship.

  • 01

    Division of labor

    The model proposes. Your code decides.

    A request becomes proposed filters, not applied ones. Every argument the model returns passes through application code before anything reaches the UI.

  • 02

    Boundaries

    Keep the key, the prompt, and the validation on the server.

    The Angular service owns interaction and UI state. The Node/Express backend owns the API key, the prompt, the schema, and the timeout — none of which belong in a browser bundle.

  • 03

    Validation

    The prompt asks. Application code checks.

    A strict Zod schema bounds every field — price, rating, amenity count. Prompt rules are a request to the model, never a guarantee, so the gate has to live in code.

  • 04

    State

    Stage while streaming. Commit after success.

    Text can arrive and render immediately; filters wait. Criteria are staged on arrival and promoted to active state only once the request resolves successfully.

  • 05

    Outcomes

    "Done" is more than one thing.

    Streaming, validating, and complete are distinct states — and cancelled, failed, and zero matches are distinct outcomes. Collapsing them hides the failures you most need to see.

  • Before shipping

    What would you need at 2 a.m.?

    A trace you can follow, a timeout and retry budget, the prompt, schema and model version on record, and a failure state users can recover from.