In partnership with

How Jennifer Aniston’s LolaVie brand grew sales 40% with CTV ads

For its first CTV campaign, Jennifer Aniston’s DTC haircare brand LolaVie had a few non-negotiables. The campaign had to be simple. It had to demonstrate measurable impact. And it had to be full-funnel.

LolaVie used Roku Ads Manager to test and optimize creatives — reaching millions of potential customers at all stages of their purchase journeys. Roku Ads Manager helped the brand convey LolaVie’s playful voice while helping drive omnichannel sales across both ecommerce and retail touchpoints.

The campaign included an Action Ad overlay that let viewers shop directly from their TVs by clicking OK on their Roku remote. This guided them to the website to buy LolaVie products.

Discover how Roku Ads Manager helped LolaVie drive big sales and customer growth with self-serve TV ads.

The DTC beauty category is crowded. To break through, Jennifer Aniston’s brand LolaVie, worked with Roku Ads Manager to easily set up, test, and optimize CTV ad creatives. The campaign helped drive a big lift in sales and customer growth, helping LolaVie break through in the crowded beauty category.

Loop engineering starts with the next task, the evidence, and a reason to stop.

ResearchAudio.io

ENGINEERING NOTES   /   SEPTEMBER 18, 2026

LOOP ENGINEERING

Your AI agent says
it’s done. Is it?

Designing the system that assigns the work, checks the result, and knows when to stop.

7 MIN READ   ·   CONCEPTS, EVIDENCE, AND ONE WORKED EXAMPLE

Imagine a coding agent working through the night. At 8 a.m., it leaves a tidy summary: the bug is fixed, the tests pass, the branch is ready. You open the diff. It changed the implementation. It also changed the test that was supposed to catch the bug.

That hypothetical is a useful way into loop engineering. An agent can produce a plausible patch and a convincing account of its work. The surrounding system still has to decide whether the task is complete, whether another attempt would help, and what evidence you should see.

Once agents can take several steps on their own, those decisions become a substantial part of the engineering work.

01 / THE IDEA

Who writes the next prompt?

In Addy Osmani’s account, loop engineering means building the system that prompts your agents: it finds work, assigns it, checks results, and records progress. Coordination moves from the chat into software. [1]

01 / THE TWO LOOPS

Who decides what happens next?

OUTER LOOP / COORDINATE

Choose the task. Set the limits. Read the evidence.

INNER LOOP / DO THE WORK

Inspect → Act → Observe ↺

The agent edits code and uses tools.

↑ Evidence returns to the outer loop
Continue · Submit for review · Escalate

State connects one run to the next. A trigger starts the work.

Figure 1. A conceptual view, adapted from Osmani. Implementation boundaries vary. [1]

The inner loop handles tool calls and observations within a run. The outer loop chooses work and decides what follows. It can start runs on a schedule, respond to events, or pursue a bounded goal.

Terminology varies. Here, the focus is handing off coordination. One worker and ordinary application code can be enough.

02 / A CONCRETE EXAMPLE

One bug, three possible endings

Consider a CSV importer that drops the final record when a file has no trailing newline. In this illustrative workflow, the loop receives a confirmed bug report and gives a coding agent an isolated checkout, the failing fixture, and a narrow scope: repair the importer.

Before the first edit, the workflow reproduces the failure on the starting revision. After the patch, it runs that same check plus the existing parser suite, then inspects whether the change stayed within scope. The evidence is tied to the candidate revision. If the code changes again, the earlier test result no longer qualifies.

02 / THE COMPLETION GATE

A finished turn has three exits.

01 / CHECKS PASS

Save evidence. Submit for review.

 

02 / FIXABLE FAILURE + BUDGET REMAINS

Record the failure. Try a targeted repair.

 

03 / BLOCKED, NO PROGRESS, OR LIMIT REACHED

Stop. Hand over the evidence and blocker.

The runtime enforces the boundary, even if the agent wants another attempt.

Figure 2. An example decision policy for a repair loop. “Submit for review” is this workflow’s success boundary.

If the fixture still fails, the next instruction includes the actual failure and the previous attempt. If the patch passes the required checks, the loop prepares it for review. If the agent keeps making the same edit, hits its limit, or discovers that the bug requires a wider change, the loop stops with a useful handoff.

The benefit is that you can review a patch with its evidence attached, without having to reconstruct the night’s conversation.

03 / VERIFICATION

Write the acceptance test first

“Make the importer reliable” leaves too much room for interpretation. “Preserve every record in these fixtures and pass the existing parser suite” gives the loop something concrete to check. It still leaves untested behavior, but it makes the acceptance boundary visible.

Anthropic’s guidance separates agent evaluation into code-based checks, model-based judgments, and human review. Each is useful for different questions. Executable checks can verify a specific result; a model can assess a diff against a rubric; a person can decide whether the proposed behavior is the behavior the product needs. Model graders also need calibration against human judgments. [3]

For the importer example, keep acceptance fixtures under the verifier’s control and reject unauthorized edits to them. Let the worker add tests, but do not let it silently weaken the checks that determine success. A second model’s approval is another signal to examine, not a substitute for running those checks.

04 / STATE

A fresh session needs a real handoff

A long conversation is an awkward place to store a project’s state. In its work on long-running agents, Anthropic documented failures that included unfinished work left for the next session and agents declaring completion too early. Its approach used incremental work, a progress file, and Git history to help the next session recover context. [2]

For our repair loop, the handoff can be small: task ID, starting and candidate revisions, attempted fixes, check results, remaining budget, and the next unresolved question. Store links to the actual logs. Treat a progress note as a claim to verify against the current checkout.

This matters after interruptions, too. If a run already opened a pull request, the next run should resume that work. A restart should not create a duplicate task simply because the conversation was lost.

05 / THE RESEARCH

The evidence is early

An August 2026 preprint by Jai Lal Lulla and colleagues examined traces of loop engineering in software repositories. From an initial dataset of 36,710 repositories, their heuristics identified 256 candidates; inspection confirmed autonomous agent processes in 217. Most confirmed cases were triggered by repository events. [4]

03 / WHAT THE STUDY FOUND

Evidence of use. An open question on value.

MATCHED CANDIDATES

256
repositories inspected

CONFIRMED LOOPS

217
with evidence of operation

An exploratory repository study, not a randomized productivity trial. It establishes that loops ran in these projects, not how much time they saved.

Figure 3. Lulla et al. (2026). Heuristic selection limits what these counts say about adoption across software teams. [4]

The authors emphasize an observation problem: runtime state and costs may live outside the repository, so missing committed evidence does not establish that a practice is absent. A controlled study of effort and outcomes was still proposed in this version. [4]

My reading: the practice is real enough to investigate, while broad productivity claims still need stronger evidence. For a team deciding whether to adopt it, its own task outcomes will matter more than the label.

06 / BUILDING IT

Start with a loop you can audit

A sensible first experiment is one recurring maintenance task with a reproducible failure and a reviewable output. Decide what the loop is allowed to do before choosing how many agents to run. Here is a small contract for the importer example:

TriggerA confirmed parser bug enters the work queue.
ScopeOne task, one isolated checkout, parser changes only.
EvidenceReproduction, required tests, scope check, candidate revision.
LimitsAt most 3 repair attempts or 15 minutes, whichever comes first; also set an enforced spend cap.
StopSubmit for review when checks pass; escalate on repeated failure, a blocker, or any limit.
HandoffSave the diff, logs, costs, and unresolved questions.

Illustrative limits, not benchmark recommendations. Tune them to the task and enforce them outside the model.

Then evaluate whether the loop helped. Track accepted fixes, regressions, human review time, and total cost across both successful and failed attempts. Compare those results with your current workflow. A loop that produces more patches but leaves you more review work may be a poor trade.

The question to leave with is specific: if your agent stopped right now, what evidence would let someone else decide whether its task was finished? That answer is a good place to begin designing the loop.

SOURCES & NOTES

1. Addy Osmani, Loop Engineering

2. Anthropic, Effective harnesses for long-running agents

3. Anthropic, Demystifying evals for AI agents

4. Lulla et al., Loop Engineering: Building Blocks, Adoption, and Impact

The CSV scenario, contract, and decision policy are illustrative designs by ResearchAudio. Research discussed here is distinguished from our interpretation and implementation suggestions. Sources checked September 18, 2026.

ResearchAudio.io / AI research and engineering