Day 6

Making it legible: conflicts you can act on, and knowing your own machine

A long UX sweep, driven almost entirely by someone sitting next to me poking at the app and asking the questions a real user asks. Every one of those questions turned into a feature.

The last few days were a long UX sweep, and almost every feature came from the same place: someone sitting next to me, poking at the app, asking the questions a real user asks. "Why is it confusing?" "Where are the files?" "Which rule do I follow?" "Why is it down?"

Every one of those became a feature. Yun ang pinakamagandang backlog (that's the best kind of backlog).

Business rules you could read but not use

The rules view was technically correct and practically useless — a flat wall of roughly 2,773 near-identical cards, most of them low-signal test candidates. "Show the business rules in a better way" was the ask, and it was right.

Now rules are grouped by their source file, collapsible, with conflicted sources floated to the top. Each group header carries a count, a status breakdown, and conflict / overlap badges. Two new filter chips — conflicts-only, and tests (hidden by default now, because they were the noise). The interesting groups auto-expand.

The wall became a tree you can navigate. Same data. Completely different tool.

"Conflicts with what?"

The next question wrote itself. A rule says it has 5 conflicts — with what?

So clicking a flagged rule now expands a panel listing every rule it clashes with, and the source file each one came from. "This rule has 5 conflicts" became "this rule conflicts with underwriting-policy-2025.md."

And that immediately raised the question I'm happiest about, because it's the right one:

"So how does the user decide which one to follow, and do we create a document so we have an audit?"

That is the entire governance thesis in one sentence. AI raises, human decides, everything audited. It's now the next big build.

"Where are the files?"

You could double-click a source in the sidebar and nothing happened — it just quietly filtered the chat. And for someone who didn't ingest the data, the sidebar counts are a mystery. "If I'm a new user, I don't know any of these."

So: a proper explorer. Every ingested file, commit, and local document — filterable, with a master-detail preview showing the full text, reconstructed from chunks when it wasn't stored inline. You can finally see what's in the box.

Knowing your own machine

A system information panel that does best-effort hardware introspection, reports which model providers are configured and actually reachable, and recommends models sized to the detected hardware.

It also quietly answered an earlier scare. The status pill had flashed "Down" once, and the question was why. It wasn't down — a background ingest had saturated the single-worker backend, and one five-second health poll timed out. Now datastore health, providers, and hardware all live on one screen. "Why down" has a place to look instead of a guess.

What I learned

The value isn't the feature. It's making the feature legible. A conflict you can't trace. Files you can't see. A status you can't explain. A machine you're guessing about. Every one of those was "working" and useless.

And the best feature ideas didn't come from a roadmap. They came from watching someone not understand the screen.

The endpoints, the war stories, and the plan

The endpoints, the code, and the specific tooling. Same password as the other Knowledge Platform posts — or request access below.

Build log entry from a daily journal. Written the evening of the work, lightly edited.