Live example — real output, no signup required

One tool call. Three diagrams. A complete architectural report.

This is the actual output from umlforge_reverse_engineer on an e-commerce order service — run inside Claude Code, Cursor, or Windsurf.

Tool call (in your coding agent)

umlforge_reverse_engineer(
  github_url = "https://github.com/your-org/your-repo",
  report_mode = True   # Pro feature
)

↓ Output below

1

Three diagrams — one tool call

Rendering diagram…
Rendering diagram…
Rendering diagram…
2

Then the Architectural Intelligence Report Pro feature

System Overview

This codebase implements an order management service for an e-commerce platform. It handles the complete order lifecycle — from creation and payment processing through to fulfilment and cancellation — and is a critical path for all revenue-generating operations. Business stakeholders interact with this code on every transaction.

Health Score

B+

Architecture

Clean DDD layers, clear separation of concerns

B

Maintainability

Well-named, low coupling, easy to extend

C+

Test Readiness

Repository abstraction present but interface missing

Key Findings

Missing Repository InterfaceLow effort

OrderService depends on the concrete OrderRepository class rather than an abstract interface or Protocol. Swapping implementations (e.g. in-memory for tests) requires modifying the service itself.

Fix: Define AbstractOrderRepository as a Python Protocol with findById and save methods. OrderService should depend on the abstraction.

Payment Logic in Service LayerMedium effort

processPayment() lives on OrderService rather than on a dedicated PaymentService. As payment logic grows (retries, webhooks, refunds), the service will become a God Class.

Fix: Extract a PaymentService that owns the payment lifecycle. OrderService coordinates but does not process payments.

Anemic OrderStatus EnumLow effort

OrderStatus is a plain enumeration with no guard logic. Invalid transitions (e.g. SHIPPED → PENDING) are not prevented at the domain level — callers must remember to check.

Fix: Move valid-transition logic onto Order itself: def cancel(self): if self.status not in {PENDING, CONFIRMED}: raise InvalidTransition(...).

Full report includes modernisation roadmap, effort estimates, and specific library recommendations.Try on your codebase →

Run this on your own codebase

Point it at any GitHub repo or paste your code. Works in Claude Code, Cursor and Windsurf. 5 free diagrams — no credit card required.

Get started free

Report Mode (Pro feature) — upgrade anytime from $12/month

What you get vs generic AI tools

CapabilityUML ForgeGeneric AI
Class, sequence, and state diagrams in one call
DDD patterns auto-detected (Repository, Service, Aggregate)
Failure paths generated automatically
Architectural smell detection
Plain-English report for non-technical stakeholders
STRIDE security analysis with compliance mapping
Consistent structure every time
Works directly in Claude Code, Cursor, Windsurf
Generates valid Mermaid with auto-retry