Skip to content
LouieSakoda
LouieSakoda

Offboard LUMO · Founding Product Designer & AI Systems Lead · 2025 to now · Six-person startup

Problem
In real conversations, a classifier that ran before the chat replaced LUMO’s answer with a tracker card, and members confirmed none of those cards. Asking about a page also meant leaving it.
What I did
I designed and built LUMO end to end: the conversation, the tools, and the rules for when it may act. A card now appears only when the model calls a write tool with a concrete subject, and nothing changes until the person confirms. LUMO moved to a panel beside every page that says what it is looking at.
Result
Live in Offboard. On unchanged code, LUMO scores 30 to 32 of the 32 release cases, at about half a cent a turn.
One LUMO turn, recorded live. LUMO reads the member’s reviewed agreement, quotes the clause word for word, and drafts an email asking to narrow it. Nothing is sent. A synthetic test agreement, October 2026. Product recording.

Context and ownership

LUMO is the AI assistant inside Offboard. It reads the member's own search: profile, applications, interviews, network, documents and their paperwork reviews, and the memories they allow. It can also add to and update their tracker. I designed and built it, from the first chat in October 2025 to the version that runs today, with AI coding tools in the loop.

An assistant with write access to someone's job search has two jobs. It must answer the question that was asked, and it must not change anything the person did not choose.

Method

In September 2026 I started with an audit of real member conversations, each read in full. Quotes stayed paraphrased, and no member text left the audit.

  • A classifier took over the turn. It ran before the chat. When it guessed "tracker", a card replaced the answer. A request for help with a cover letter, sent with a job link, came back as an add-to-tracker card.
  • Members confirmed none of the tracker cards.
  • LUMO asked for documents it already had. It asked members to paste a resume or cover letter that was already on file.
  • Interview prep found no interview. Members rarely log their interviews, so prep conversations fell back to a questionnaire.

One turn, before and after

Before · the classifier answers

Help me write a cover letter for this job.Job link

Classifier guesses “tracker”

Add to tracker?

Company
Unknown
Role
Unknown

The cover letter is never written. Members confirmed none of these cards.

After · LUMO answers

Help me write a cover letter for this job.Job link

Writing help · write tools not offered

LUMO drafts the letter in the chat. No card appears.

An illustration of the pattern the audit found, not a product screen. Before, a classifier read a request for cover letter help as a tracker request and showed an add-to-tracker card with an unknown company and role; the letter was never written. After, the write tools are not offered on a writing turn, and LUMO answers in the chat.

The failures were missing tools and missing context, not a weak model. That set the order of the work.

Decision 01

I deleted the four takeover flows and set one rule: a card appears only when the model chooses to call a write tool with a concrete subject, such as a link or a company and title.

The write tools do not write. They return a card. The tracker changes only when the person clicks to confirm. On a turn that asks for writing help, such as tailor, rewrite, or simplify, the write tools are not offered to the model at all. One turn can produce one card.

A confirmed change goes through the same code that Offboard's connector for outside AI agents uses, so chat and a connected agent write the same rows in the same way.

Try it: what the model is offered

Tools the model is offered · Writing help

Read

  • web_search (offered)
  • scrape_webpage (offered)
  • get_upcoming_interviews (offered)
  • analyze_ghost_job (offered)
  • list_applications (offered)
  • get_application (offered)

Write

  • create_application (not offered)
  • update_application (not offered)
  • create_contact (not offered)
  • create_application_with_interview (not offered)

Rewrite this cover letter so it is shorter.

LUMO rewrites the letter in the chat. The write tools are not offered, so no card can appear.

Pick a message. A writing request offers the model only LUMO's six read tools, so no card can appear. A tracker request offers all ten; the model calls a write tool, which returns a card, and the tracker changes only when you press Confirm. A question uses a read tool and changes nothing. Tool names are LUMO's own; the messages are examples, not member quotes.

The same rule in a real turn. A member asks about the severance agreement they had reviewed. LUMO loads the document analysis, calls one tool to draft an email, and returns text the member edits. It sends nothing.

LUMO's How Lumo worked panel, open. Its steps, each checked: Classifying your question, Understanding your question, Reviewing your profile, Loading document analysis, Formulating response, Drafting your ask email, Processing results. Under it the reply, marked Used profile and documents, begins: Yes. The agreement says: If Employee breaches Sections 7, 8, or 9, Employee must repay the full severance amount. It explains that a breach could trigger repayment of the entire $34,615.38, says this is general information, not legal advice, and that a lawyer should review it. The draft email starts below with the subject Questions about my agreement.
Quotes the document, not a summary of it.How LUMO worked: it loaded the agreement's analysis, then called one drafting tool. The reply quotes the clause, and the draft is text to edit, not an action. A synthetic test agreement, October 2026. Product screenshot.

Decision 02

LUMO used to share the right side of the screen with page information, and it showed only on wide screens. The "Ask LUMO" button opened a separate chat page, so asking about a page meant leaving it. Members who wanted help opened the full chat page, lost the page they were on, and retyped what they had been looking at.

I gave the right panel to LUMO alone. The "Ask LUMO" button opens it beside any page: a panel at 1280px and wider, a sheet on smaller screens. The page stays where it was. One line says what LUMO is looking at, for example "Looking at: Lyft · Product Design Manager". That line never claims more than the page context each message sends.

Try it: LUMO beside the page

Press Ask LUMO to open it beside the page.

A wireframe, not a screenshot. Press Ask LUMO and LUMO opens beside the page while the page stays in place. Switch to a small screen and it opens as a sheet over the page instead. The panel names what LUMO is looking at, here the spec's example: Lyft, Product Design Manager.

The bet was written down before the build: a target for members asking from the panel in the first 30 days, and a floor below which a switch returns the old button.

Decision 03

  • Money is one switch. One setting, "Let LUMO use my money details", controls every money fact LUMO reads: runway, benefits, target salary, and offer terms. With it off, LUMO sees only the company and title of each offer.
  • Outside agents never see offers. A database rule returns no offer rows to a connected AI agent.
  • Support answers come from the Help page. LUMO links the page where the person acts. It never claims to cancel, refund, or change an email address, and never promises a refund.
  • A crisis turn gets a crisis answer. One required test case checks that LUMO does not reach for the person's interview schedule after a crisis statement. That case later kept a cheaper model out of production (see LUMO Bench).

Try it: the money switch

  • Financial runwayLUMO reads
  • Weekly unemployment benefitLUMO reads
  • Target salary rangeLUMO reads
  • Offer terms: amount, notes, reply-by dateLUMO reads
  • Each offer’s company and titleLUMO reads

Connected AI agents never read offers, whatever the switch says. A database rule returns them no offer rows.

One setting, Let LUMO use my money details, controls every money fact LUMO reads: runway, weekly unemployment benefit, target salary range, and offer terms. Turn it off and LUMO keeps only each offer's company and title. Connected AI agents never read offers.

Outcome

LUMO is live in Offboard. The numbers below are test results, not usage, revenue, or retention.

  • The panel's result is not in yet. The 30-day read for the panel bet is due in late October 2026.
  • Quality is measured on every change. On unchanged code, LUMO scores 30 to 32 of the 32 release cases. A model change runs through the same cases before it ships.
  • It is cheap to run. A model change in September 2026 cut LUMO chat to about half a cent a turn.

Reflection

The classifier saved one step for the few people who wanted a tracker card, and cost the answer for everyone else. An assistant with write access earns trust by doing the asked-for thing first and making every change a choice. In a young product, the next lesson comes from reading conversations, not from a dashboard.