CaseAdvancedResponsible AI & Advanced Practice / Compliance and legal partnership / #17

How would you build a compliance review into your normal development process?

SPARK the product is Ferrocode, a project-management platform building a new AI assistant into its own tooling

Ferrocode's ticket board is where sixty engineers plan and ship every feature, including the AI assistant they're now building into it. Solene Kabeya is the product manager who owns that ticket board itself, the shared tool every engineer opens first each morning.

The direct answer
Put the compliance check inside the ticket template itself, not in a separate process anyone can forget. Every ticket answers one required question, does this touch data about people or make an automated decision about them, and a "yes" auto-creates a linked review task that blocks merge, owned by a named person. Back that up with a scanner that checks the actual code diff too, since people will sometimes answer honestly wrong.
Do this, in order
  1. Make the compliance question a required field on every ticket, not an optional Slack ping.Why: anything optional gets skipped first once a team grows past the size where everyone knows everyone.
  2. Auto-create a linked, merge-blocking review task the moment the answer is yes.Why: a flagged concern with no power to stop the merge is just a note nobody circles back to.
  3. Add an automatic scanner on top of the honest human answer.Why: people will sometimes mark "no" in good faith and be wrong, especially on a feature that seems unrelated to people at first glance.
  4. Keep a fast, ungated path for tickets that genuinely don't touch people's data.Why: gating everything equally just teaches people to rush through the gate without reading it.
  5. Watch how many days the gate adds to a sprint, and expect that number to shrink.Why: a new step is slow the first few times and fast once it's routine, and tracking that keeps the team honest about the real cost.

How to answer this, stage by stage

The ticket board is the artifact here. Point at it early, before the framework, before anything else.

Stage 1
Ground it in the actual tool people open
Say it like this
"I'll answer this for the ticket board itself, the tool every engineer already opens to scope and track their work."
Why this works
A "build it into your process" question gets much stronger the moment you name the actual screen the process lives inside.
Stage 2
Say your structure out loud
Say it like this
"I'll use SPARK. Situation, payoff, anchor, risk, keep out."
Why this works
Signals a design answer with a real, inspectable decision at its center, not a values statement about caring more.
Stage 3
Name today's habit, without you
Say it like this
"Right now, engineers ship an AI feature the same way they ship anything else. Design, build, test, merge, with maybe a Slack ping to legal if someone remembers to send one."
Why this works
SPARK's situation step: shows the real workflow being replaced, not a strawman.
Stage 4
Give the one decision
Say it like this
"Put one required field on every ticket: does this touch data or decisions about people. A yes auto-creates a merge-blocking review task, with a real owner, and a scanner double-checks the actual diff."
Why this works
Matches the direct answer exactly, and names something you could point to on a real screen.
Stage 5
Prove the anchor survives being wrong
Say it like this
"Say an engineer builds a feature that quietly ranks people's sprint velocity, and honestly marks the ticket 'no' because it doesn't feel like an AI feature. The scanner still catches it, because the diff touches the same scored-fields table every flagged feature does."
Why this works
Shows the anchor doesn't just rely on people being right, it has a second, independent catch.
Stage 6
Say what you'd keep out, on purpose
Say it like this
"I wouldn't gate purely internal tooling, a refactor, a test-infra change, with the same review. That would just teach people to click through the gate without reading it."
Why this works
Shows restraint, not a maximalist process nobody would actually follow.
Stage 7
Close on one line
Say it like this
"Put the check where the work already happens, and back the honest answer up with a second check that doesn't rely on anyone remembering."
Why this works
Restates the decision in one breath, closing on the actual point instead of a general call to "take compliance seriously."

Let's learn

Say a dev-tools company builds an AI assistant into its own project-management platform, and engineers ship it the same way they ship every other feature: no separate process, no dedicated step, just the normal design-build-test-merge loop.

In Ferrocode's early days, that was fine. The whole engineering team was eight people who sat near each other, and someone would casually mention a new feature to their one legal contact before it shipped, almost as a courtesy.

Knowledge spark: what counts as "touching data about people"? Not just storing a name or an email. It also means anything that scores, ranks, or makes an automated decision about a person, even something as ordinary-sounding as a sprint-velocity dashboard, if that number ever factors into a real decision about someone.

As the team grew past eight, then past twenty, that casual habit didn't get replaced with anything. It just quietly stopped happening, because nobody owned it and nobody was tracking whether it still occurred.

Percent of AI-touching tickets that included a proactive compliance ping
100% 0 75% 8 engineers 41% 20 engineers 9% 40 engineers
Nobody decided the habit should die. It just didn't scale past the size where everybody already knew everybody.

At its worst: a new engineering hire, three weeks in, asks their manager mid-sprint when the team actually checks whether a feature is legal to ship. The manager pauses, then says something about "usually legal reviews the big stuff," which isn't really an answer at all.

The decision I would take back Years earlier, the ticket tool actually had a "Flag for legal" label engineers could add to a ticket. It got removed in a UI cleanup because so few tickets used it, it looked like dead weight. That made sense when usage was genuinely low and the label cluttered the board. It stopped making sense once the low usage was itself the early symptom of the exact problem the label existed to catch.

What I would leave alone: internal tooling changes, refactors, test infrastructure, genuinely don't need this gate. Adding it there would just teach people to click through gates without reading them.

We didn't remove a review step. We removed the one visible place anyone was ever reminded the step existed.

The lesson: a habit that depends on a small team's closeness isn't a process. It's a coincidence that happens to look like one until the team gets big enough to prove it wrong.

Now here is the same thing as a story

The short version above is what you'd say pitching this to engineering leadership. Read this one for how Adaeze actually found the gap.

Solene Kabeya has owned Ferrocode's ticket board for four years, since before the company had its own AI assistant to worry about at all. Back then, "flag for legal" was a literal label on the board, and engineers used it without being told to.

The team doubled, then doubled again. The label stayed on the board for a while, technically available, used less and less, until a routine tooling cleanup quietly removed it, alongside a dozen other unused labels nobody would miss.

Hand sketched flow diagram titled The sprint pipeline, with the gate added. Five boxes: ticket scoped, data touch flagged highlighted, compliance sub-task, code reviewed, merged.
Five steps, and the second one used to exist as a small label nobody thought twice about, until it didn't.

Nobody noticed for a long stretch, because nothing broke. Then a new engineer, three weeks into the job, asked her manager a plain question in a planning meeting: when do we actually check if something we're building is legal to ship? The manager didn't have a real answer, and repeated the question to Adaeze that same afternoon.

Hand sketched decision tree titled Does this ticket need the gate. Root: does the feature touch data or decisions about people. Three branches: yes scores or ranks people leads to compliance sub task blocks merge, yes stores personal data leads to compliance sub task blocks merge, no internal tooling only leads to normal fast path.
A question this simple had never had a real home on the board at all.

Adaeze pulled the last quarter's AI-touching tickets and found what she expected: almost none had any compliance step attached, and the ones that did had it added after a manager happened to remember, not because the board asked for it.

Hand sketched comparison diagram titled The day the checkbox is wrong. Left panel, a question mark box icon labeled Checkbox alone, caption engineer marks No, feature quietly scores people. Right panel, a gauge icon labeled Checkbox plus scanner, caption diff touches a scored field, gate triggers anyway.
A checkbox alone only works if everyone always reads it the same way. It never does.

She designed the fix around the one place every engineer already looks: the ticket template itself. A required field, answered before anyone can start work, plus a scanner reading the actual code diff as a second, independent check.

Hand sketched labeled parts diagram titled The anchor, close up. Center document icon labeled Ticket Template, with four callouts: touches data question yes or no, auto scan of the diff, linked sub task, named reviewer.
Four parts, and the old label was, at best, a rough sketch of just one of them.
Hand sketched timeline titled Rolling the gate out across the org. Four milestones: pilot on one team quarter 1, auto scanner added quarter 2 forced highlighted, rolled org wide quarter 3, review time drops quarter 4.
The scanner wasn't optional for long. A pilot without it caught nothing the honest checkbox hadn't already caught.

Rolled out fully, the gate now adds real time to a sprint, but far less than it did on day one, as the team learns the shape of what actually triggers it.

Average days added to a sprint by the compliance gate, over four quarters
5 days 0 Q1: 4.2 days Q4: 0.8 days
The fear was that this gate would permanently slow the team down. Instead it got cheap fast, once it became routine instead of a surprise.

The old board asked engineers to remember a courtesy that used to come naturally in a small team. The new one asks the same question of every single ticket, whether anyone remembers to or not.

I let a low-usage label get cleaned off the board because it genuinely looked like clutter at the time. It took a new hire's plain, unembarrassed question, not an incident, to see that low usage had been the whole problem quietly making itself worse.

SPARK, close upNot a policy rollout. SPARK is what forces you to name one concrete anchor, then prove it survives being wrong.

S
Situation. The job today, without the fix.
Engineers ship an AI feature the same way as any other feature, with an optional, easily-forgotten courtesy ping to legal.
Names the real, current workflow, not a strawman version of "nobody cares about compliance."
P
Payoff. The habit we want to build.
Engineers treat "does this touch people's data" as a normal scoping question, the same way they already ask "does this need a migration."
The habit, not the paperwork, is the actual product being shipped here.
A
Anchor. The hardest step.
A required ticket field that auto-creates a merge-blocking review task, backed by a scanner reading the actual diff.
Concrete enough to point at on a real screen, which is the whole test of a real anchor.
R
Risk. What breaks the first time it's wrong.
An engineer honestly marks "no" on a feature that quietly scores people. The scanner still catches it from the diff itself.
Proves the anchor doesn't depend entirely on people getting the honest answer right.
K
Keep out. What we won't build on day one.
No gate on purely internal tooling changes, and no full self-serve compliance dashboard yet.
Shows judgment, not a wish list nobody could actually ship.
Hand sketched icon list titled What we left for later. Three items: a box icon labeled a full self serve compliance dashboard for every team, a document icon labeled automated legal language generation for policies, a gauge icon labeled review gates for purely internal tooling changes.
Cutting these on purpose is what kept the first version shippable at all.

The recap, one line per letter: situation is the optional courtesy ping that quietly disappeared, payoff is a normal scoping habit instead of a special process, anchor is the required field plus the merge-blocking task, risk is the scanner catching an honest wrong answer, and keep out is skipping the gate on internal tooling and skipping a full dashboard for now.

And if you want to be sure it really works, try it somewhere elseSame five letters, a secondhand-goods marketplace instead of a dev-tools board. This time the gate lives inside a listing-moderation queue, not a sprint ticket.

Reloop Marketplace runs an AI feature that auto-approves resale listings against a set of banned-item rules. Dashiell Pruitt owns the internal moderation queue trust and safety uses to manage that feature.

Mapped onto SPARK: situation is that trust and safety currently reviews a random sample of auto-approved listings each week, with no fixed rule for which new rule changes get a compliance look before shipping. Payoff is getting the team to treat "does this rule change affect a regulated category, alcohol, firearms parts, prescription items" as a normal question before any rule ships, not an afterthought. Anchor is a required field on every rule-change ticket, answered before it can be deployed, that auto-routes a "yes" to a named compliance reviewer with a 48-hour service level. Risk is a rule change that seems purely cosmetic, like a new search filter, quietly changing which banned items surface more often; a nightly scan of newly-surfaced listings against the banned-item list catches that even when the honest answer was "no." Keep out is not gating minor UI copy changes with no rule logic behind them at all.

Hand sketched decision tree reused to represent whether a marketplace rule change needs the compliance gate.
A different board, a different kind of ticket, and the same three branches deciding who gets the gate.

Swap the trigger and it still runs.
Speed: an interviewer caps you at a minute. Say "put the question inside the ticket template itself, and back the honest answer with an automatic scanner," and stop.
Cost: leadership says a full scanner is a quarter's build. Ship the required field alone first, since it's nearly free and already beats the courtesy-ping status quo.
The model gets better, for real: if the AI assistant's own quality improves, that's still no reason to skip the gate. A better assistant that touches people's data without review is still touching people's data without review.

Where people run it wrong.
They build a compliance process that lives in a separate tool nobody opens during a normal sprint.
They trust the honest checkbox answer alone, with no independent check on the actual code.
They gate everything equally, which teaches people to click through the gate instead of actually reading it.

How to use it live. When this question comes up, name the one tool people already open every day, and put the question there. A process that lives anywhere else is a process people will eventually forget exists.

Flashcards (tap any card to flip it)

1 · THE FRAMEWORK
What framework fits "how would you build compliance review into your normal dev process"?
Tap to flip
ANSWER
SPARK: situation, payoff, anchor, risk, keep out. Anchor is the hardest step, the one concrete decision everything else hangs on.
2 · THE PEOPLE
Who is this answer about?
Tap to flip
ANSWER
Solene Kabeya, who has owned Ferrocode's ticket board for four years, since before the company built its own AI assistant.
3 · THE HABIT
What did engineers stop doing as the team grew?
Tap to flip
ANSWER
They stopped sending a proactive compliance ping before shipping an AI-touching feature, a habit that only worked while the team was small enough that everyone knew everyone.
4 · THE FLIP
What's the two-setting switch here?
Tap to flip
ANSWER
Proactively flagging a feature for legal versus not flagging it at all. There was no reliable in-between once team size outgrew the habit's original conditions.
5 · THE OLD DECISION
What decision would you take back?
Tap to flip
ANSWER
Removing the low-usage "Flag for legal" label from the ticket board during a routine cleanup, since low usage looked like clutter rather than an early warning sign.
6 · THE NUMBER
Fill in the blank: by the time the team reached 40 engineers, only ___ percent of AI-touching tickets got a proactive compliance ping.
Tap to flip
ANSWER
9 percent. It had started at 75 percent when the team was 8 engineers.
7 · THE REPLAY
Same feature that quietly scores people, redesigned ticket board. What changes?
Tap to flip
ANSWER
Even if the engineer honestly marks the required field "no," the diff scanner still flags it, because the code touches the same scored-fields table every flagged feature does.
8 · CROSS PRODUCT TRANSFER
Section 4 answers this again for a different product. Which product, and what's the anchor there?
Tap to flip
ANSWER
Reloop Marketplace's listing-moderation queue. There, the anchor is a required field on every rule-change ticket that auto-routes regulated-category changes to a named reviewer.

Check yourself Score: 0 / 0

True or false
1. True or false: this answer's fix depends entirely on engineers correctly self-reporting whether a feature touches people's data.
  • True
  • False
Show hint
Look at the R step, risk, in the SPARK recap.
Show answer
False. A scanner reads the actual code diff as a second, independent check, so an honest wrong answer still gets caught.
Fill in the blank
2. Fill in the blank: the average days added to a sprint by the compliance gate fell from 4.2 days to ___ days over four quarters.
Show hint
Look at the line chart tracking days added to a sprint.
Show answer
0.8 days. The gate got cheap fast, once it stopped being a surprise and became a routine part of scoping a ticket.
Short answer, where it wouldn't matter
3. Name a kind of ticket where this compliance gate shouldn't apply at all.
Show hint
Look at "what I would leave alone" and the K step, keep out.
Show answer
Model answer: Purely internal tooling changes, like a refactor or a test-infrastructure update, with no data about people involved at all.
Multiple choice
4. Why did the "Flag for legal" label disappear in the first place?
  • A. Legal asked for it to be removed after a lawsuit.
  • B. A routine tooling cleanup removed it for low usage, without recognizing the low usage was itself the warning sign.
  • C. It was replaced by a required field from the very start.
  • D. Engineers voted to remove it because it slowed down every ticket.
Show hint
Look at "the decision I would take back."
Show answer
B. The label's low usage looked like dead weight during a cleanup, when it was actually the earliest visible sign the habit was already fading.
Short answer, apply it yourself
5. Pick a team or class project you've been part of. Was there a rule everyone followed only while the group was small, that quietly stopped once it grew?
Show hint
Think of an informal habit, like reviewing each other's work, that depended on everyone just remembering.
Show answer
Model answer: Most people can name an informal check, like "someone always double-checks the numbers," that worked fine at five people and silently vanished at twenty.
Before you close the answer
Why this works
Tests whether you'll design a process that survives a team growing past the size where everyone happens to remember, and whether you'll back a human answer with an independent check rather than trusting good intentions alone.
Follow-up traps
"Won't engineers just learn to answer 'no' to skip the review?" Response: that's exactly why the scanner exists, reading the actual diff rather than trusting the self-reported answer alone.

"Isn't a required field on every single ticket overkill for a small startup?" Response: the field itself costs almost nothing to answer. The expensive part, the review task, only fires when the answer is genuinely yes.
If pressed
Ferrocode's real scanner watches for changes touching a specific list of database tables tagged "scores or ranks a person," a list the compliance team updates directly, so engineering never has to guess what counts.
From U2xAI Academy

From answering questions to owning outcomes.

A live workshop where you ship a working AI agent, defend a launch decision, and walk away with a portfolio recruiters can't wave off, not just more questions to study.

  • A live AI agent you actually shipped
  • A launch decision you can defend under pressure
  • An interview-ready portfolio, not more flashcards
Know more