The decision enforcement layer

All your decisions.
One enforcement layer.

Capture decisions. Enforce them before merge.

Source found. Enforced in PR.
Decision sources / evidence live
SlackSlackChat
JiraJiraTickets
Microsoft TeamsTeamsChat
+4 more sources
Mo
Rule engine
Trace Check Post
Checked in checking
GitHubGitHubPRs
GitLabGitLabMRs
BitbucketBitbucketPRs
Pass Conflict

No new tool.
Lives where your team already talks.

Mention @Mo where decisions happen. No new workflow.

@mo approve this
Capture decisions

Reads the thread and links the rule to its source.

Slack Teams Jira Linear Azure DevOps Asana Monday Basecamp
@mo what did we decide about…?
Find what was decided

Ask what was decided, by whom, and where.

In-thread answer
@mo give me an upload link
Upload evidence

Drop PDFs, specs, or policies. Mo extracts linked rules.

PDF · Docx · MD

Used in real production PRs daily across 12+ projects including:

Evidence path

Connect decisions to code.

Source on the left. Merge on the right. Trace in between.

Sources
Slack
Slack
Microsoft Teams
Teams
Jira
Jira
Linear
Linear
+4
Checks
GitHub
GitHub
GitLab
GitLab
Bitbucket
Bitbucket
Decision enforcement layer

A CI/CD pipeline for decisions.

Capture → Check → Enforce

Fig. 2 · Decision trace pipeline
Source
Slack Teams Jira Linear Azure DevOps Asana Monday Basecamp
Decision
source found
Capture
Capture
context → rule
Store
Rules
versioned · linked
Check
Check
diff vs linked rule
Target
GitHub GitLab Bitbucket
Enforce
merge host
Pass Conflict
Case files

Every drift has a source, a file, and a risk.

Every conflict links back to its source.

Revenue

Case: trial changed past approved limit

SourceSlack#pricing-rules
Fileconfig/trial.ts
ConflicttrialDays 7 → 14
Revenue leakage
Access

Case: export permission changed

Rule IDJiraSEC-212
Filesrc/export/service.ts
Conflictrole check removed
Data exposure
Product

Case: shipped behavior drift

SourceAzure DevOpsPROD-118
RuleGuest users cannot see billing settings
Filesrc/billing/routes.ts:15
Conflictbilling route opened to all roles
Behavior drift
Activation

Case: onboarding verification bypassed

Rule IDLinearGROWTH-44
Filesrc/auth/signup.ts
Conflictemail step bypassed
Conversion risk
Evidence attached

Enforcement at the exact line that broke it.

Shows the linked rule and exact conflict.

GitHub Update trial config and export defaults #48
src/billing/trial.ts
46 const config = {
47 name: "starter",
48- trialDays: 7,
48+ trialDays: 14,
49 currency: "usd",
50 };
Mo
mo-bot bot · src/billing/trial.ts:48
Mo check failed
Approved rule Trial must stay at 7 days
Source Slack / #pricing-rules / Maya
Conflict trialDays = 14
src/export/service.ts
40 async exportUsers(req, res) {
41- if (req.user.role !== 'admin') return res.forbidden();
42 const users = await User.findAll();
Mo
mo-bot bot · src/export/service.ts:41
Mo check failed
Approved rule Only admins can export users
Source Jira / SEC-212 / Alex
Conflict Role check removed from export handler
Checked by Mo · Acme App
Pattern detection

Not just a checker.
A governance layer.

Finds missing rules and repeated conflicts.

Signals in
P
PR activity
R
Rules
O
Overrides
Mo
Pattern engine
Insights out
Missing rules
Conflicts
What standard tools miss

Code review finds bugs. Mo finds drift.

CapabilityAI code reviewMo
Bugs and syntax errors
Security vulnerabilities
Pricing rule violations
Permission drift
Onboarding flow changes
Product decision conflicts
Pricing
14-day free trial — no credit card required
Works with GitHub PRs, GitLab MRs, and Bitbucket PRs
Source-linked checks across chat and planning tools
$49per project  /  month
Start free trial
Up to 100 approved decisions & 300 checks / month. Need more?
Common cases
How does Mo decide what becomes a rule?

Only messages explicitly approved with @mo approve become enforced rules. Regular conversation is ignored.

Which sources and code hosts are supported?

Sources: Slack, Microsoft Teams, Jira, Linear, Azure DevOps, Asana, Monday and Basecamp. Code hosts: GitHub pull requests, GitLab merge requests, and Bitbucket pull requests.

What happens if a rule changes?

The newer approved rule replaces the older one. Mo keeps the latest approved version with versioned history, and checks every new change against it.

Decisions don’t drift.
They’re enforced.

Every merge checked against the approved record.

Traceable from source to merge.