AGENTIC INITIAL STUDIO

Applied AI & agent engineering

Build from domain requirements to Spring Boot services, events, RAG agents and a testing strategy. Inspect a logistics case with explicit validation and human review.

ENGINEERING PATHWAY

From a business domain to a testable agent system.

01

Requirements & DDD

Define user stories, acceptance examples, entities, value objects, aggregates and bounded contexts. Record why each service owns its data.

02

Java & Spring Boot

Build REST controllers, application services, domain rules and persistence adapters. Practise Spring Web, Spring Data JPA and local H2; compare PostgreSQL for shared deployment.

03

Events & stream processing

Publish versioned domain events through Kafka. Handle duplicate messages, eventual consistency and event time. Build a rolling count or exception-rate view.

04

RAG & agent collaboration

Connect a retriever, planner and independent validator. Compare direct LLM calls with bounded tools and a LangChain4j integration in Java.

05

Testing strategies

Choose specification-based cases and structural checks, then add API contracts, integration tests, regression cases and security scenarios. Define the oracle for each test.

06

Operate & explain

Keep setup instructions, traces, decisions, model assumptions and recovery notes. Explain which AI proposals you accepted, changed or rejected.

Start with Java or Python fundamentals, JSON and basic HTTP. The Spring Boot branch uses Java; Python remains useful for analysis, agent experiments and evaluation. One-to-one online sessions can focus on either branch.

SPRING BOOT / JAVA

Keep domain rules outside the controller and the prompt.

A proposed learning project has four contexts: request intake, product catalogue, planning and review. Each owns its records and exposes an explicit API or event contract. A coordinator can retrieve policy, propose a plan and ask the planning service to validate it; an authorised person approves operational use.

Practise a Java 21 project with Spring Boot, JPA, Kafka/Spring Cloud Stream and LangChain4j. Begin with one vertical slice before introducing all four services. This public page does not run a Java backend or Kafka broker.

// Illustrative controller: application service owns validation.
@RestController
@RequestMapping("/plans")
class PlanController {
    private final PlanningService planning;
    PlanController(PlanningService planning) { this.planning = planning; }

    @PostMapping("/proposals")
    PlanProposal propose(@RequestBody PlanRequest request) {
        return planning.proposeAndValidate(request);
    }
}
// A proposal is not an approval or a dispatch instruction.
AGENT WORKFLOW LAB

Inspect the proposal. Challenge the evidence.

A deterministic, browser-local simulation of agent responsibilities. It does not call a model, retrieve live documents or run microservices. The same boundaries can be implemented in the full project.

Compare with the planning project ↗
TEST STRATEGY

Different risks need different evidence.

01

Black-box & boundaries

Partition valid and invalid inputs. For a capacity limit, test just below, exactly at and above it. Use decision tables for interacting rules.

02

White-box & static analysis

Review branches, data flow and unreachable paths. Use linters and code review; branch coverage describes executed structure, not correctness by itself.

03

Unit & contract tests

Use JUnit/AssertJ for domain invariants without a model and MockMvc for the HTTP boundary. Verify REST/event schemas, required fields, version compatibility and permitted tool arguments.

04

Integration & end-to-end

Use Spring Boot integration tests and isolated database/broker instances, for example through Testcontainers. Exercise persistence, message delivery, idempotency, timeouts and a full request-to-review journey.

05

Security & RAG evaluation

Test unauthorised tools, prompt injection and absent evidence. Separately evaluate retrieval relevance, source support and answer quality on a labelled set.

06

Regression & test management

Keep known failures as regression cases. Track risk, requirements, test owners and release decisions. Model checking is an advanced way to examine state-machine properties.

Does a passing mock prove the LLM is reliable?

No. A mocked boundary can verify routing and validation. Actual model quality, latency, retrieval quality and cost need their own measured evaluation.

# Acceptance cases for the domain validator
assert validate(weight=60, capacity=60) == "review"
assert validate(weight=61, capacity=60) == "blocked"
# Also test: missing evidence, duplicate events and forbidden tools.
# A valid proposal still requires a human approval step.

These are independently authored studio learning materials, informed by software-engineering and testing topics. They are not an official university course or a reproduction of student work. No student reports, identities, marks or source repositories are published.

Give your project a clear starting point.

Explore the engagement process or prepare your project brief.

Website privacy

This page has no enquiry form, analytics service, or third-party font requests. Your language, appearance, and motion preferences are stored locally in this browser when storage is available.

If the site is hosted, the hosting provider may process standard request logs. Any future contact service will need its own information handling details.