Take-Home Exercise — Streaming Chat Agent

Senior Software Engineer (Fullstack) @ Luzia
Python Tool use Streaming Minimal UI included

Context

Luzia is a personal assistant used by millions of people daily, mainly through WhatsApp and our own app, across Brazil, Mexico, Colombia, Argentina, the US and Spain. We work with large volumes of anonymized data, so data confidentiality and fast response times matter to us.

This exercise is a small slice of the kind of problem we work on. We care less about how much you build and more about how you think — the design decisions you make and the tradeoffs you can defend.

The task

Build a small chat service with an assistant that can use a tool.

A user sends a message. The assistant replies — and when it's helpful, it can use a tool (for example: fetching a gif, doing a calculation, or a simple lookup) and weave the result into its answer. The reply should stream back progressively rather than appearing all at once, and the user should be able to tell when a tool is being used. Include a minimal UI to interact with it.

Use a real LLM or a mock one — your choice. If you wire up a real model, keep it configurable (and don't commit any keys); if you'd rather not, a deterministic stand-in is perfectly fine. Either way, your automated tests should run offline, with no live calls or paid keys.

How you structure all of this is up to you. There's no prescribed architecture, framework, or file layout — choosing them well is part of what we're evaluating.

What it needs to do

In your writeup, also think about

A paragraph or a few bullets each is plenty — we'll go deeper in the follow-up:

What we care about

Use any tools you like, including AI assistants — we do too. Just be ready to explain your choices.

Deliverables & submission

Follow-up is a short walkthrough: you'll run it, we'll read the code together, and we'll talk through how you'd take it further.