SEOGEO is a next-generation, agent-first auditing platform. It behaves as an autonomous SEO/GEO agent that consumes the web to analyze visibility across Search Engines (SEO), Generative Engines (GEO), and Answer Engines (AEO).
Our architecture is "Identity Blind." Whether it's a human using the dashboard or another AI agent calling our API, the underlying system provides the same high-fidelity experience:
- Streaming Intelligence: Real-time execution updates and partial findings via SSE.
- Durable Audits: Final, structured reports that are cryptographically verifiable and durable.
- Agentic Workflow: The system supports multi-step reasoning, moving from technical discovery to semantic analysis automatically.
Our architecture is built for autonomous execution and extreme reliability:
- The Hardened Brain (Orchestrator): A Java 25 backend powered by Temporal that manages the agentic state, starts workflows, persists progress, and signs final reports.
- Specialized workers: Isolated Node.js Temporal workers running custom SEO-signal crawls on their own task queue.
SEOGEO follows a three-phase mutation-to-report flow. In the web app, this begins with a Server Action. External agents may call the backend directly, but they should converge on the same audit-start contract and durable jobId.
- The frontend starts an audit through a Next.js Server Action, not a direct browser-to-backend fetch.
- This keeps Java signing or HMAC credentials on the server boundary while the frontend asks the backend to start the audit workflow for a target URL.
- The Server Action returns a
jobIdthat becomes the durable handle for the audit session.
- As soon as the UI receives the
jobId, it opens an SSE stream for live audit progress. - Streaming findings, triage items, and in-flight status updates are treated as ephemeral client state.
- Zustand owns this live stream state so React 19 components can render immediate progress without polluting the durable server cache.
- When the backend completes the heavier audit tiers, it persists the final signed report to the system of record.
- The frontend then invalidates or revalidates the relevant query and TanStack Query refetches the canonical final report.
- Once the verified report is available, ephemeral Zustand stream state is cleared and the UI transitions from Streaming to Verified Report.
- Backend: Java 25 (Spring Boot 4, Project Loom)
- Workflow: Temporal 1.33+
- Frontend: Next.js 16 (React 19), Tailwind 4
- State: TanStack Query (Server) & Zustand (Client)
- SEO Worker: Node.js, Crawlee, Playwright
The SEO audit worker follows an evidence-first rule pipeline:
- collect
source_htmlevidence inseo-audit-worker/src/audit/ - derive reusable source facts in
seo-audit-worker/src/rules/deriveFacts.js - collect
rendered_domevidence with Playwright for the same page - compare source and rendered surfaces to detect render dependency and mismatches
- evaluate rules and comparison findings into ordered audit packs
- Server Actions initiate audits and keep privileged backend credentials off the client.
- Zustand owns in-progress audit UX state such as SSE events, transient findings, and live triage.
- TanStack Query owns synchronized server data, especially the final persisted audit report and follow-up refetches.
- Docker & Docker Compose
- Node.js & pnpm
- Java 25
cp .env.example .env
docker compose up -dThis starts PostgreSQL, Temporal, the Backend API, and the SEO audit Temporal worker.
cd frontend
pnpm install
pnpm devOpen http://localhost:3000 and start auditing!
From the backend/ folder:
./gradlew bootRunThe backend listens on port 8080.
From the seo-audit-worker/ folder:
pnpm install
pnpm run install:browsers
pnpm startThe worker connects to Temporal and polls the SEO signals task queue.
| Context | Action | Command |
|---|---|---|
| Infrastructure | Start all | docker compose up -d |
| Infrastructure | Stop all | docker compose down |
| Monitoring | View logs | docker compose logs -f |
| Development | Frontend | pnpm dev |
| Development | Backend | ./gradlew bootRun |
backend/: Spring Boot API + Java Temporal workflow/activity workers.frontend/: Next.js with tanstack and zustand.seo-audit-worker/: Node.js Temporal worker for custom SEO signal execution.docker-compose.yml: Core services and worker topology for Postgres, Temporal, backend, and SEO audit execution.AGENTS.md: Machine-readable technical specifications for AI agents.
We welcome contributions! Please ensure your changes align with the Durable Tiered Execution model described above.