We wrote the CRM integration into the product as a hard requirement on day one, and for months nobody opened an API to check whether we needed it. That wasn’t carelessness — it was the normal shape of the job. Designers specify, engineers build, and the gap between them is filled with assumptions nobody is positioned to test. So the roadmap carried a dependency that would cost every customer a six-month procurement cycle, we designed around it, deferred it, designed around it again, and the whole time the data we actually needed was sitting in our own database, one query away from anyone who could open the repo. Nothing about that was going to surface on its own. It would just have kept being true, sprint after sprint, until the runway ran out.
A designer who can’t open the API is designing around a rumor.
That’s the gap this project closed for me personally. From late 2024 to Q4 2025 I led design on the Customer Value Agent at Thought Industries — an AI product that scored how the market actually perceived a company’s value and turned that signal into work a team could ship. I earned GitHub access mid-project, moved from designing screens to committing into the codebase, and put it in front of four paying beta customers before the direction wound down.
This is the whole arc, including the parts that didn’t work. Read it as a forward deployment: an audit that proved my own instinct wrong, integrations that stalled in real IT departments, and a rebuild on the data customers were already emitting. It’s also the project where I stopped handing off specs and started shipping into the codebase.
The distance between “I think the data supports this” and “I checked” is the whole job.
What I owned
What I owned was the architecture — how the system should work. Here’s the cut, rather than a flattering one:
| Mine | The architecture: what signals fed the Weekly Customer Value Score, where the human stayed in the loop, how an insight became a draft, and how that draft moved out to the tools a team already used. |
| Mine, once I had the repo | Design decisions bounded by real API constraints — what the LMS actually emitted at the data layer, checked rather than assumed. Working prototypes, vibe-coded in Subframe and Claude. |
| Not mine | The production front end, the model implementation, and go-to-market. Claiming those would fail the interview test. |
And I didn’t hand off a spec and hope. A prototype you can actually use surfaces the decisions a static wireframe hides: where the score needs competitive context, where activation has to be an explicit human call, what’s missing between an insight and a publishable draft.
That shift is the whole story of this project, and it has a shape:
- 📋Spec and HopeDesigning around a rumor
- 1Earn repo accessMid-project, on the strength of the prototypes
- 2Open the APISee what the platform actually emits
- 3Design against what's thereReal constraints, not assumed ones
- 4Prototype in codeClick it before committing to it
- Design EngineerDecisions bounded by the real system
The loop only closes because of step two. Everything upstream of “open the API” is a guess wearing a spec’s clothing.
The metric itself — what fed the Weekly Score, what a movement was allowed to claim — is its own story, told in a companion piece. This one is about the arc, and about what changed in how I work.
The bet: a new market, not our own customers
Thought Industries runs learning platforms for B2B companies that train their external audiences. This product wasn’t for them. It was a bet on a new buyer entirely — customer-education leaders who own an LMS but can’t articulate its business case internally. People who ran training programs and struggled to connect that work to revenue, retention, or competitive positioning.
The thesis: give them one weekly synthesis of how the market perceived them — reviews, job postings, competitor content, social signals — and they could finally tie training to the numbers their VP cared about. That new ICP shaped everything about how we’d test and what we’d ship.
Proof
Three bets we tested over eighteen months, and what each one actually told us.
The first bet is the one that changed how I work. My instinct to simplify had been wrong, and being wrong in front of recruited users is cheap — being wrong in production is not. Users looked at the information-rich screen and said something I didn’t expect: finally, something that sees the full picture. They’d been stitching fragments together by hand, or not at all.
That reframe planted a question I carried for the next eighteen months: when you’re building a system powered by decisions the user never sees — a model, a framework operating under the surface — what do you owe them? What should be visible, and what should stay hidden?
I didn’t have an answer. But the wireframes had proven the concept was real, and leadership wanted it to feel real. Mid-summer, they handed me GitHub access.

The swipe wasn’t the problem, and neither was the scoring. The product had no view into the user’s business. It could tell you what the market thought; it couldn’t tell you what that was worth in terms the user tracked. That gap had a name — the CRM integration we’d been planning since day one and deferring since day one.
The pivot — deploy on the data we already had
The CRM integration was never a late addition. Without it, the Weekly Score was just a number. With it, you could say: your market perception improved twelve points the quarter your renewal rate went up eight. That’s a product people pay for. We just kept pushing it out.
This is where codebase access mattered in a way I hadn’t expected. Thought Industries was the LMS. Every customer was already emitting data we could query — course completions, feature adoption, engagement, certification pass rates. I could open the API, see what was actually there, and design around it instead of around a Salesforce connection we couldn’t close. We didn’t write a spec and wait; we checked, then designed. Instead of a generic market signal, the product could now say:
Learners in your advanced certification track are churning at onboarding — and your competitor is positioning heavily on that exact job.
Tighter story, and we controlled both sides of it. The pivot changed the shape of what we were shipping: we split into a monorepo with two products — the Customer Value Agent (market perception, now tied to LMS engagement) and a Learning Value Agent (native AI inside the learner experience, running on data every customer already had). LVA was the foot in the door; CVA was the upsell once Salesforce finally connected.
The honest tension: power users felt the product got dumber when we cut the raw signal grid and the full JTBD breakdown. New users finally understood what to do. Both were true.
The interface we were proud of
The architecture work came to a head at a team offsite where we redesigned the whole app from the ground up. Most of what shipped traces back to that whiteboard.

By the approved prototype, the product had settled into something I was genuinely proud of. The dashboard was clean. The Weekly Index Score had a clear treatment — week-over-week trend, a brief contextual explanation, and a direct line to the LMS data driving the movement. Content generation had matured to one click from an insight to a draft aimed at closing the exact gap a market signal had surfaced.

The proudest call was an architecture one: the Weekly Score could be computed from what the LMS already emitted. We’d written CRM integration in as a hard requirement before I understood the external data was a story we’d talked ourselves into — not a dependency.
Four paying customers, and why that wasn’t enough
Four beta customers used it, getting real weekly signal they weren’t getting anywhere else. The plan had assumed more.
The bet on a new ICP had a hidden cost: chasing new buyers takes attention, and that attention wasn’t going to the customers already on the platform. The roadmap tilted. The internal narrative shifted toward what this could become rather than what our customers need today — and existing customers felt it. Meanwhile the new buyers weren’t converting from beta to paid at the scale we expected. We were between two markets, and neither was winning. The right move at the two-customer mark was a genuine reassessment; instead we kept building, and the assumption held longer than the evidence supported.
A new CEO joined at the end of Q3 2025. Within weeks the direction was clear: Thought Industries would become an agentic LMS platform — AI native to the learning experience, built for the customers already there. When it came time to move beta customers to paid, the numbers weren’t there. The Customer Value Agent program ended.
The idea isn’t dead. Its core logic — using outside signals to inform what a learner or education program should do next — is being absorbed into that larger agentic-LMS foundation, currently in active testing. I’m still part of that work.
What the project taught me
The question I left the first wireframe with was whether you can design a system whose most important decisions are invisible to the people using it. Eighteen months gave me the honest answer: invisibility alone isn’t enough.
The JTBD algorithm behind the score was invisible and the score it produced was real — but neither was connected to anything the user already measured in their working life, not until the LMS pivot, and by then the clock had run out. When the most important decisions are hidden, the user needs to feel the output, not just see it: “this changed something I own” — a number, a behavior, a result. Without that, invisible just means opaque. AI systems that hide their reasoning have to surface their consequence.
CVA didn’t ship at scale, but it’s the forward deployed job end to end: getting into the codebase to see what the LMS emitted at the data layer, designing within real API and IT constraints, deciding where the human stays in the loop, and proving the system with working software instead of a spec. It also taught me the lesson every forward deployed engineer learns eventually: being able to build it doesn’t mean you’re building the right thing for the right market. Both are true.
