Cassandra Joachim

Hi, I’m Cassandra

Product leader in B2B software.

The API and SDK platform outside engineering teams build on, and the delivery system that ships it.

Oakland, CA

About

A nerd for puzzles. I’m drawn to the problems where the constraint is real, a partner’s contract, a deadline I don’t control, a regulation that isn’t negotiable, because that’s where the design gets interesting.

Ten years at the same company took me from employee three to running product and operations. I write the PRDs, and I write the procedure the support team follows. I don’t stop until it works end to end. Teams don’t resist process, they resist process that was decided somewhere else. So I start from the goal and work backward with the people who’ll run it.

I work with LLMs every day, and I’m deliberate about what AI can and can’t be trusted with. My baseline for working with AI

Simplify the problem, or push the solution further. The real work is knowing which one a customer actually needs.

What I Build

The product, the platform & the trust layer underneath.

I translate between disciplines, turning stakeholder requests into specs, specs into dev-ready Jira work, then reconciling what shipped against the original intent.

Product & Platform

Roadmap to running code

  • Roadmap and backlog. Set the roadmap and run sprint planning. I write the PRDs and Figma wireframes, and I review the stories engineering writes before building.
  • Data and instrumentation. Designed the transaction metadata schema our payments layer emits, so financial reporting is built at the source, not reconciled after.
  • API & SDK. I write the requirements and use cases for the platform partners build on; engineering owns the technical design, and I review it.

Regulated Systems & Trust

Compliance as a design input

  • Bureau migration. Led the platform’s migration to Experian, becoming a consumer reporting agency (CRA). Co-led SOC 2 and co-own the compliance program.
  • Audit trail. Own the consent, authentication, and retention record a regulator can review after the fact, including when each authorization expires.
  • Compliance by design. Products are approved against CRA requirements before release, inside jurisdictional limits on where data goes and statutory fee caps.

Partner Ecosystem & GTM

Programs people actually use

  • Partner program. Built and run integrations, associations, and technology partnerships. I run the relationships, contracts, and marketplace listings.
  • Competitive intelligence. Maintain a shared repository off a template I wrote, fed by four channels across the funnel. It has changed what we build and what we cut.
  • Enablement. Manage the decks, docs, and demos the sales team sells from and support depends on. Reps pull competitive material in when a deal calls for it.

AI-Enabled Product Operations

Automation with boundary

  • Defined boundaries. Design AI features around what the system should never decide, not just what it can. Unable to verify is a first-class result, not a failure.
  • Compliance at the gate. No technology partner gets production keys without passing our compliance review. AI runs the checks. The pass or fail is mine.
  • Workflow design. Built the AI workflow that cut vendor security review from weeks to hours, running each vendor against a written pass or fail standard.

Field Notes

Three times it didn’t go in a straight line.

Specific times the work got harder than a bullet point can show: a trade-off, a vendor relationship I had to unwind, and one investigation that started with a support ticket that didn’t add up.

Our first SDK had a launch date set by two things neither we nor our credit bureau partner could move alone: a major industry conference we’d both committed to as the announcement moment, and the six months of build time we needed just to reach production, where partners could start onboarding. That’s a different kind of pressure than a self-imposed target. The date belonged to both companies, and we couldn’t quietly slip it without disappointing the partner whose credibility we were building the whole platform on.

The original scope included employment verification. Partway through, a new vendor evaluation for that feature ran long: the delay was commercial, tied up in contract negotiation, not technical, and not something that could be accelerated.

The options on the table were to cut scope unilaterally and explain it later, or to ask the partner for more time and hope they said yes. I did neither. I went back to the credit bureau and proposed substituting a different report already in their product line, and moved employment verification to a later phase.

They agreed, and not just as a courtesy: the swap added a second one of their own products to the launch, so it made them better off. The SDK shipped on schedule, and employment verification followed in the next phase.

What I’d take from this: the date and the plan were two different commitments, and I stopped treating them as one. The date belonged to both companies and wasn’t mine to move. The plan was still mine to work with, which meant I could look for an alternative instead of forcing the vendor negotiation or quietly cutting the MVP to make the date.

One of our largest property management integrations started as a partnership with a middleware vendor, not a direct build. Property management software has no shared standard: every system uses its own schema and terms, which is exactly the gap a middleware vendor is built to fill. We picked one to standardize that connection for us.

I gave their engineer complete product requirements and detail up front, so that was never the issue. What followed was a pattern I couldn’t fix from my side: things broke often, I couldn’t get them to move at the pace we needed, and I rarely got an actual root cause. I was putting out fires without ever learning why they started. At one point, they deleted our project documentation entirely.

I didn’t wait for them to explain it or fix it. Delaying would have only pushed their own fix further out, and it would have cost us clients in the meantime. I rebuilt the mapping and documentation myself, immediately, so the integration kept working while the vendor relationship kept failing around it.

That crisis settled a question we had already been circling. Using a middleware vendor for this integration wasn’t sustainable, and around the same time, our own roadmap had already flagged direct property management system integrations as a priority: those are the systems enterprise property managers run on, and owning the connection directly was how we’d reach them. I judged this particular integration could be one of our most profitable, but only if we owned it outright instead of routing it through a vendor we couldn’t get a straight answer from.

So I made the case to rebuild it in-house. I rewrote the PRDs, scoped the framework, and handed engineering a direct build instead of another vendor relationship. Once it shipped, I planned and ran the client migration off the old integration, moved everyone over without disrupting them, and closed out the vendor relationship once nobody was left on it.

What I’d take from this: outsourcing a connection doesn’t outsource the risk sitting behind it. The moment a client felt the vendor’s failure, it became my problem anyway, so waiting for an explanation I was never going to get wasn’t actually protecting anything. The pattern itself was the case I needed. I stopped waiting on them to explain and put that time into building something I could stand behind.

Support tickets started arriving in a wave, and they were the kind that tell you something is wrong without telling you what. This was our consumer-side identity verification, the flow renters pass through when they apply to a property, not the housing-provider side I built to reduce fraudulent listings.

I could have worked the tickets one at a time, or handed the investigation to an engineer. I reprioritized my own work and took it myself. I instrumented FullStory so I could watch where users were actually going wrong, whether they were dropping out of the flow or submitting incorrect information, because the ticket descriptions were secondhand and all over the place.

What surfaced was an issue with an automation we had built, triggered by a constraint on the vendor’s side that was outside our control. But the automation had been a real product improvement. It had reduced time to submit.

So I scoped work that gave users guidance and transparency at the point where the automation could fail, and added a failsafe to catch whatever we hadn’t anticipated yet. I sized the rest of the fix to what engineering actually had capacity for that quarter, not as one large emergency rebuild.

What I’d take from this: finding the root cause protected more than the fix, it protected work that was already paying off. The easy move was to strip out the automation and call it solved. The better one was to keep what worked and fix the one thing that didn’t.