Okara vs Crystal-Agents: Strategic Enhancement Analysis
Executive Summary
Okara built a vertical AI CMO product — a domain-specific multi-agent system dedicated entirely to marketing automation for SaaS founders. Crystal-Agents is a horizontal agent stack — a general-purpose workflow engine that can handle coding, marketing, ops, and sales.
The architectural patterns are nearly identical. The difference is in packaging, depth, and autonomy. Okara proves that Crystal-Agents’ existing architecture is the right foundation — but also reveals six concrete areas where we can deepen our capabilities significantly.
What Okara Does (Broken Down)
| Okara Component | What It Does | Automation Level |
|---|---|---|
| CMO Agent (root) | Reads your website, maps competitors, learns brand voice, drafts strategy | Runs on signup — fully autonomous initial audit |
| SEO Agent | Technical site audit, keyword classification (TOF/MOF/BOF), fix tracking | Audit is autonomous; fixes are surfaced to user |
| GEO Agent | Tracks citations in ChatGPT, Claude, Perplexity, Grok | Fully autonomous monitoring |
| Coding Agent | Reads codebase via GitHub, writes PRs to fix SEO/GEO issues | User clicks “Fix it” → agent creates PR → user merges |
| Article/Writer Agent | Drafts SEO+GEO-optimized articles in brand voice | Drafts autonomously, publishes on CMS connect |
| UGC Agent | Generates video scripts from product context | Autonomous drafting |
| Reddit Agent | Monitors subreddits, scores threads, drafts replies | Surfaces 2 best opportunities/day with draft replies |
| LinkedIn Agent | Drafts posts in founder’s voice about real product journey | Drafts queued in feed; user reviews + posts |
| X Agent | Reads trending niche content, drafts posts grounded in product | Same as LinkedIn — daily draft queue |
| llms.txt Generator | Free tool — generates llms.txt file for any website | One-shot utility |
Architecture Comparison: What We Already Have
graph LR
subgraph "Okara Architecture"
O_CMO["CMO Agent
(Orchestrator)"]
O_SEO["SEO Agent"]
O_GEO["GEO Agent"]
O_CODE["Coding Agent"]
O_WRITER["Writer Agent"]
O_UGC["UGC Agent"]
O_REDDIT["Reddit Agent"]
O_LI["LinkedIn Agent"]
O_X["X Agent"]
O_CMO --> O_SEO & O_GEO & O_CODE & O_WRITER & O_UGC & O_REDDIT & O_LI & O_X
end
subgraph "Crystal-Agents Architecture"
C_CEO["CEO Router
(Orchestrator)"]
C_DEV["Developer"]
C_DEVOPS["DevOps"]
C_CONTENT["Content"]
C_RESEARCH["Research"]
C_SEO["SEO"]
C_ADS["Ads Manager"]
C_SALES["Sales"]
C_TESTER["Tester"]
C_REVIEWER["Reviewer"]
C_ANALYTICS["Analytics"]
C_CEO --> C_DEV & C_DEVOPS & C_CONTENT & C_RESEARCH & C_SEO & C_ADS & C_SALES & C_TESTER & C_REVIEWER & C_ANALYTICS
endDirect Capability Mapping
| Okara Agent | Crystal-Agents Equivalent | Current Status |
|---|---|---|
| CMO Agent (orchestrator) | ceo_router.py | ✅ Built — routes NL to workflows |
| Coding Agent | developer.py + git_ops.py | ✅ Built — branch, commit, push, PR |
| Writer Agent | content.py | ⚠️ Exists but generic — no SEO/GEO optimization |
| SEO Agent | seo.py | ⚠️ Stub — no audit, no keyword classification |
| GEO Agent | (not present) | ❌ Missing entirely |
| UGC Agent | (not present) | ❌ Missing |
| Reddit Agent | (not present) | ❌ Missing |
| LinkedIn Agent | (not present) | ❌ Missing |
| X Agent | (not present) | ❌ Missing |
| CMS Integration | (not present) | ❌ No CMS publish tool |
| GA/GSC Integration | (not present) | ❌ No analytics data ingestion |
| Action Feed (dashboard) | app.py | ⚠️ Shows runs/approvals, but no “action feed” pattern |
What Okara Does That We Don’t — And Should
1. Autonomous Onboarding Audit
Important
The biggest UX lesson from Okara: The system does useful work before the user lifts a finger.
When a user signs up for Okara, the CMO agent immediately:
- Reads the website end-to-end
- Maps the competitive landscape
- Learns the brand voice
- Drafts a marketing strategy
- Runs a technical site audit
Crystal-Agents equivalent: We have memory/ with static .md files (company, product, pricing, soul, marketing). But these are manually written. There’s no autonomous “learn the business” workflow.
Recommendation: Build a business_onboarding workflow that:
- Takes a website URL as input
- Uses
web_searchto crawl and extract product info, pricing, competitors - Auto-populates
memory/company.md,memory/product.md,memory/pricing.md - Generates a draft
memory/marketing.mdstrategy - Outputs a “Business Profile” report to
generated/
This turns Crystal-Agents from “you configure me” to “I configure myself.”
2. Action Feed Pattern (Not Just Run History)
Okara’s dashboard isn’t just a log viewer. It’s an Action Feed — a prioritized list of things the user should do, each with a one-click action button.
Example: “Your site is missing meta descriptions on 12 pages. [Fix it]”
Our dashboard (app.py) shows runs, approvals, and scheduler history. That’s operational telemetry, not a decision-making surface.
Recommendation: Add an Action Feed concept:
- A new
ActionItemdataclass:{type, title, description, severity, suggested_workflow, suggested_prompt, status} - Agents write action items as they discover opportunities (SEO issues, content gaps, social opportunities)
- Dashboard renders them as a prioritized feed with “Run” buttons
- Each “Run” pre-fills the workflow form with the right workflow + prompt
This is the key difference between a tool the user has to drive vs. a tool that drives the user.
3. Platform-Specific Social Agents
Okara has dedicated agents for Reddit, LinkedIn, and X, each with distinct behaviors:
| Platform | Agent Behavior |
|---|---|
| Monitor subreddits → score threads → draft contextual replies | |
| Read founder activity → draft thought-leadership posts in their voice | |
| X | Read niche trends → draft posts grounded in product + POV |
Crystal-Agents has a generic content.py agent. The marketing.md memory file mentions LinkedIn/Social/Blog but the agent doesn’t differentiate.
Recommendation: Don’t build 3 separate agent classes. Instead:
- Keep the single
contentagent but add platform-specific prompt templates inmemory/orworkflows/templates.py - Build a
social_contentworkflow with steps:research → draft → review - Add a
platformparameter to the workflow:linkedin | x | reddit | blog - Each platform template encodes the best practices (LinkedIn = hook in first 2 lines; Reddit = authentic reply tone; X = concise + punch)
This keeps our architecture lean while delivering Okara’s per-platform specialization.
4. SEO / GEO Agent Intelligence
This is Okara’s deepest capability and our biggest gap.
What Okara’s SEO Agent does:
- Full technical site audit (meta tags, structure, performance)
- Keyword classification by funnel stage (Top/Middle/Bottom of Funnel)
- Issue tracking: which fixes moved the needle
- Integration with Google Analytics and Google Search Console
What Okara’s GEO Agent does (entirely novel):
- Tracks whether your product is cited by ChatGPT, Claude, Perplexity, Grok
- Monitors 10+ prompts to see if AI models recommend you
- This is a new marketing channel — “Generative Engine Optimization”
Crystal-Agents today: seo.py is a stub inheriting from BaseAgent. Our web_search tool exists but isn’t wired for site auditing.
Recommendation — phased approach:
Phase A (achievable now): Build a site_audit workflow:
- Use
web_searchto crawl the target site’s key pages - LLM analyzes: missing meta descriptions, heading structure, missing alt text, page speed indicators, missing
llms.txt - Outputs a report to
generated/seo_audit.md - Creates
ActionItementries for each issue found
Phase B (needs API keys): Add real GA/GSC integration:
- New tool:
tools/analytics.pywrapping the Google Analytics Data API - Ingest traffic data, keyword rankings, click-through rates
- Feed this into the SEO agent’s context for data-driven recommendations
Phase C (advanced): Build the GEO Agent concept:
- New tool:
tools/geo_monitor.py - Query multiple LLM APIs with buying-intent prompts (“best ERP for manufacturing”)
- Parse whether your product appears in responses
- Track changes over time in
memory/history/geo_citations/
5. Content → Publish Pipeline
Okara doesn’t just draft content — it publishes. Connect your CMS and articles auto-publish.
Crystal-Agents drafts content to generated/. That’s where it stops. The human has to manually copy-paste to their CMS.
Recommendation: Build a publish tool abstraction:
tools/publisher.pywith adapters for common targets:wordpress(REST API)ghost(Admin API)file(write to a deployment directory)markdown_repo(commit to a docs repo viagit_ops)
- The
content_draftingworkflow gets a new final step: “publish” (withrequires_approval: true) - This closes the loop: draft → review → approve → live
6. Coding Agent as a Marketing Tool
This is Okara’s cleverest insight: the coding agent doesn’t serve engineering — it serves marketing.
Their coding agent exists specifically to fix SEO/GEO issues discovered by the audit agents. It reads the codebase, writes the fix, opens a PR. The loop is: audit finds problem → coding agent fixes it → user merges.
Crystal-Agents already has this capability in Phase 2 (git_workflow.py). What we’re missing is the trigger loop:
Recommendation: Wire the site_audit workflow’s output (ActionItems) to the git_workflow as an automatic follow-up:
- When an SEO issue is discovered that maps to a code fix (missing meta tag, broken heading hierarchy, missing
robots.txt) - The Action Feed shows a “Fix it” button
- Clicking it triggers
git_workflowwith a pre-filled prompt derived from the audit finding - This creates the same audit → fix → PR → merge loop that Okara has
What We Should NOT Copy
Warning
Not everything Okara does is right for Crystal-Agents.
| Okara Feature | Why We Skip It |
|---|---|
| UGC video scripts | Highly niche SaaS-marketing feature. Low priority for a general agent stack. |
| Multi-seat team plans | Product/pricing concern, not architecture. Revisit if/when we monetize. |
| “Growth accelerator” program | Community/business feature, not technical. |
| Real-time subreddit monitoring | Requires persistent polling + Reddit API credentials. High infra cost for uncertain ROI. Consider only after social agents prove value via manual triggers. |
Recommended Phased Roadmap
Phase 3A — Foundation (builds on Phase 2)
Note
Phase 2 (autonomous Git workflow) should be completed first. These enhancements build on that foundation.
| # | Enhancement | Key Files | Effort |
|---|---|---|---|
| 1 | Action Feed data model + dashboard rendering | orchestrator/action_feed.py, dashboard/app.py |
Medium |
| 2 | Business Onboarding workflow | workflows/business_onboarding.py, memory/ auto-populate |
Medium |
| 3 | Site Audit workflow (SEO basics) | workflows/site_audit.py, agents/seo.py filled in |
Medium |
| 4 | Platform-specific content templates | memory/templates/linkedin.md, reddit.md, x.md, blog.md |
Small |
Phase 3B — Integration
| # | Enhancement | Key Files | Effort |
|---|---|---|---|
| 5 | Publisher tool (WordPress/Ghost/file adapters) | tools/publisher.py |
Medium |
| 6 | Audit → Fix → PR loop (wire Action Feed to git_workflow) | dashboard/app.py, workflows/git_workflow.py |
Small |
| 7 | GA/GSC integration tool | tools/analytics.py |
Large |
Phase 3C — Advanced
| # | Enhancement | Key Files | Effort |
|---|---|---|---|
| 8 | GEO Monitor (track AI model citations) | tools/geo_monitor.py, agents/geo.py |
Large |
| 9 | Social scheduling (queue drafts for timed posting) | scheduler/, tools/social_poster.py |
Large |
| 10 | Consolidated daily brief (morning report with all signals) | reports/summary.py expanded |
Medium |
Architecture Principles to Maintain
Our system has structural advantages over Okara that we should protect:
-
Horizontal, not vertical: Okara is locked to marketing. Crystal-Agents handles dev + ops + marketing + sales. Keep the general-purpose agent/tool/workflow pattern.
-
HITL by default: Okara’s “Fix it” button is appealing, but our
requires_approval+ApprovalStorepattern is more robust. Every new tool should respect the policy.json gate. -
Memory as markdown files: Okara likely uses a database. Our
memory/approach (company.md, soul.md, etc.) is simpler and more inspectable. Keep it — but make it self-populating via the onboarding workflow. -
Single VPS: We don’t need microservices. All of these enhancements fit within the existing Python + Docker deployment on a single VPS.
-
Workflow-driven, not autonomous chat: The PRD’s insight — “deterministic workflows prevent the agents-talking-endlessly problem” — remains correct. Even Okara structures its agents as pipelines, not freeform conversations.
Summary
Crystal-Agents and Okara share the same architecture. The gap is not structural — it’s in depth of marketing intelligence and UX that surfaces value proactively. The two highest-impact enhancements are:
- Action Feed — turn the dashboard from a log viewer into a decision-making surface
- Business Onboarding workflow — make the system learn your business autonomously instead of requiring manual memory files
Everything else follows from those two.