Systems Engineering · IXN

Evaluation

How we assessed the delivered platform against the requirements, the team’s contributions, and a critical look at what worked and what did not.

Summary of Achievements

The detailed tables are in Requirements traceability. This section is a brief summary.

Functional — Must have

Home page, vulnerability catalogue with in-depth views (examples, mitigations, comparison), structured knowledge content, and a full testing workbench.

See a fuller summary

Home

  • Introduces prompt injection, risks, and how attacks work; lists vulnerabilities with short summaries and navigation into detail.

Vulnerability view

  • Technical explanation, behaviour example, mitigation(s), and a comparison of unmitigated vs mitigated model output.

Knowledge base

  • Worked examples, attack demonstrations, and mitigation explanations with enough depth to support learning and testing.

Testing

  • Custom named tests, chat-style runs with per-test mitigations, pass/fail expectations, server-side SQL storage, default platform models in the GPT-5.x family (see evaluation notes for naming vs “GPT 5.0” in the spec).

Non-functional — Must have

Browser-based delivery, clear presentation for technical and semi-technical readers, responsive interactive areas, consistent standards-aligned UI, and dark mode.

See a fuller summary

Delivery & form

  • Web application usable in standard browsers without requiring a persistent backend for basic use.

Clarity & audience

  • Vulnerabilities, mitigations, and test outcomes are explained so both technical and semi-technical users can follow them.

Performance & UI

  • Chat and testing flows stay responsive in normal use; layout and navigation follow the agreed interface patterns.

Preference

  • Dark mode is available as a first-class theme choice.

Requirements traceability

Key functionalities (must have and should have) are 98% completed; optional functionalities (could have) are 100% completed. Each row shows delivery status against the specification.

Where the specification refers to industry frameworks, we align with the OWASP LLM Top 10 for Large Language Model Applications and MITRE ATLAS. A could-have requirement names automated testing pipelines based on NVIDIA Garak and Microsoft PyRIT: in the product, Garak is the default scan path in the Testing UI; PyRIT is also implemented in the backend (PyRIT runner alongside Garak in the framework layer), so both frameworks are represented in the codebase even though day-to-day automated runs use Garak.

Note: For any requirement marked not completed, hover or focus anywhere on that row — a short explanation appears next to the status.

Functional requirements — Must have
Requirement Priority Done Contributors
Home page introduces prompt injection, associated risks, and a high-level explanation of how prompt injection works. Must David, Mario, Teo
Home page displays a list of known prompt injection vulnerabilities. Must David, Mario, Teo
Each vulnerability is clickable and includes a short summary. Must David, Mario, Teo
Selecting a vulnerability from the home page navigates to an in-depth vulnerability view. Must David, Mario, Teo
In-depth view includes a vulnerability information panel with a technical explanation. Must David, Mario, Teo
In-depth view includes an example panel showing how a model behaves when faced with the vulnerability. Must David, Mario, Teo
Clear explanation of at least one mitigation strategy for each vulnerability. Must David, Mario, Teo
Each vulnerability includes a technical explanation. Must David
Each vulnerability includes a working example demonstrating the vulnerability. Must David, Mario
Comparison panel shows model behaviour without mitigation. Must David, Mario
Comparison panel shows model behaviour with mitigation applied. Must David
Knowledge base: clear examples of prompt injection vulnerabilities. Must David
Knowledge base: technical explanations for each vulnerability. Must David
Knowledge base: working attack examples. Must Mario, Teo
Knowledge base: clear explanations of prompt injection mitigations. Must Mario, Teo
Knowledge base: technical explanations for each mitigation. Must Mario, Teo
Testing view is accessible from the main navigation bar. Must David, Mario
Users can create custom tests for individual mitigations. Must David, Mario, Teo
Chat-style interface processes a single prompt. Must David
Users can enable or disable mitigations identified during research (one per test). Must David, Mario, Teo
Custom tests are named by the user. Must Teo, Mario
Custom tests are stored in memory during the session. Must Teo, Mario
Tests clearly indicate pass/fail based on predefined security expectations. Must Teo, Mario
Test data is preserved locally in an SQL database. Must Teo, Mario
All tests run on a fixed model (GPT 5.0). Must Teo
Functional requirements — Should have
Requirement Priority Done Contributors
In-depth vulnerability view: sandbox input field to test prompts with and without mitigation enabled. Should Not completed — after discussing it with our partner at Avanade we decided not to add a second sandbox here. The testing page already lets you run prompts with or without mitigations, so duplicating that in the vulnerability view would go against how the platform is organised and could mislead users. No contributors
In-depth vulnerability view: mitigation implementation presented in pseudocode. Should Mario
In-depth vulnerability view: references or external sources for further reading. Should David
In-depth vulnerability view: ability to export the view as PDF. Should David
Testing view: support multi-prompt tests with conversation history. Should Teo
Testing view: support for multiple agents. Should Teo
Testing view: ability to export tests as PDFs. Should David
Testing view: multiple mitigations can be applied simultaneously in a custom test. Should Teo
Chatbot trained on knowledge base: answers theoretical questions on prompt injection. Should David
Chatbot trained on knowledge base: answers practical questions on scenarios and gives guidance. Should David
Functional requirements — Could have
Requirement Priority Done Contributors
In-depth vulnerability view: mitigations in multiple programming languages with a tabbed interface. Could Mario
Chatbot provides links to redirect users to relevant pages within the system. Could David
AI prompt enhancer view: fine-tuned model refines input prompt based on target vulnerabilities and mitigations to include. Could Nathaniel, David
Testing view: run interactive tests on custom models connected via API. Could Teo
Testing view: run interactive tests on a model with a custom system prompt. Could Teo
Testing view: run automated testing pipeline based on Nvidia Garak and Microsoft PyRIT frameworks. Could Teo
Non-functional requirements — Must have
Requirement Priority Done Contributors
System is delivered as a web application. Must David, Mario
Vulnerabilities, mitigations, and test results are clear and understandable for technical users. Must David, Mario, Teo
Vulnerabilities, mitigations, and test results are clear and understandable for semi-technical users. Must David, Mario, Teo
Chatbot and testing interfaces provide acceptable interactive response time. Must David, Teo
Intuitive, clear, and logical interface that conforms to standards. Must David, Mario, Teo
System supports a dark mode interface. Must David
Non-functional requirements — Should have
Requirement Priority Done Contributors
Consistent colour schemes with Avanade style. Should David, Mario
Standardised icons. Should David, Mario
Uniform layout conventions across all views. Should David, Mario
Red used to represent vulnerabilities and failing tests. Should Mario
Green used to represent mitigations and passing tests. Should Teo
Non-functional requirements — Could have
Requirement Priority Done Contributors
Mapping of vulnerabilities and mitigations to OWASP Top 10 for LLMs and MITRE ATLAS. Could David

Individual Contributions

System development (platform)

Work package Teo David Nathaniel Mario
Project partner liaison 35% 30% 10% 25%
Requirements analysis 27% 27% 18% 28%
HCI / user research 25% 25% 25% 25%
Research and experiments 25% 25% 20% 30%
UI design (application) 20% 30% 15% 35%
Backend (FastAPI & SQLite) 45% 20% 15% 20%
Frontend — application 25% 30% 20% 25%
Organising user testing 25% 25% 25% 25%
Testing (platform) 50% 15% 20% 15%
Blog and monthly video 25% 25% 25% 25%
Overall 29% 26% 19% 26%

Report website

Work package Teo David Nathaniel Mario
Site-wide layout, header/footer & navigation 27% 31% 16% 26%
Design system & global CSS 23% 33% 12% 32%
Shared JS & progressive enhancement 27% 35% 13% 25%
Content — core report pages (Home–System Design) 28% 20% 22% 30%
Content — delivery & evaluation (Implementation–Evaluation) 32% 28% 16% 24%
Appendices, media figures & accessibility 19% 30% 32% 19%
Overall 27% 27% 19% 27%

Known bugs

We tested the core parts of the product carefully and addressed the issues we found. The main user flows have been checked end-to-end, and at this stage we are not aware of any major bugs in the current version. While there were some challenges during development, these were worked through to ensure the key features behave as expected.

We see this as a solid base for Avanade to build on. We have included clear documentation so that anyone can understand the platform, maintain it, and extend it with new functionalities over time. We are also encouraged by the positive feedback from Avanade and Microsoft, as well as the opportunity to share the work through an article on the AI Foundry blog and an upcoming presentation on the AI Foundry Discord.

Critical Evaluation of the Project

A structured assessment of the platform across key dimensions. Expand each area for details. Ratings use a simple scale (great, very good, good, adequate) and reflect both strengths and limitations.

User Interface / User Experience

We built the platform to feel modern and easy to use. We added clear feedback when users interact with the interface, and simple elements that make moving between screens feel smooth and not confusing.

Search, filters, and clear navigation help users find what they need without extra steps. We wanted using the app to stay as simple as possible.

Dark mode works well across the whole product, which was key for our industry partner.

We regularly reviewed the UI with our industry partner, Avanade, to stay aligned with their expectations. We also looked at similar platforms, such as Microsoft AI Foundry, to compare layout and how information is presented. We showed the platform to people outside the project and used their feedback to make small improvements.

The design hides heavy technical detail by default. Users who want a simple overview can use it easily, while those who want more depth can open the technical sections when needed. This helps avoid overwhelming less technical users.

Rating: great. We are very happy with how it feels, and the positive feedback we received from our partner on it.

Functionality

We delivered all must-haves and could-haves in the MoSCoW traceability tables. The only item not implemented as written is one should-have: the extra sandbox field on the vulnerability page, which we deliberately skipped because the Testing area already covers with/without mitigation runs (see that row for the rationale). All other core and optional features, including dual-framework automated testing, are reflected in the product: Garak is the main scan path in the UI, and PyRIT is present in the backend runner layer alongside it for the same pipeline family.

In addition, we extended the platform beyond the original scope. We introduced live demonstrations for vulnerabilities, knowledge quizzes to support learning, expanded testing capabilities, and improvements to navigation. These additions helped make the platform more complete and easier to use, both for learning and for hands-on interaction.

The only limitations in functionality come from factors outside the platform itself. The system relies on external language models and APIs, whose behaviour can change over time as providers update their systems. This can affect outputs or responses in ways that are not fully predictable. However, this dependency was known from the start and is a normal part of working with modern AI systems, rather than a flaw in the implementation.

Rating: great. We delivered all planned features and added meaningful improvements, with the only variability coming from external systems beyond our control.

Stability

The backend is supported by a strong automated test suite, with over 300 tests and more than 96% test coverage. All tests pass in a standard setup, giving us high confidence that the system behaves as expected.

On the frontend, we tested all main user flows carefully. We used the platform ourselves, shared it with our industry partner, Avanade, and also gave it to external users to try. Across all of these, we did not encounter any issues or crashes in normal use.

The main improvement we would add is clearer in-app feedback when something fails due to external API errors. At the moment, these cases are handled and messages are shown, but they could be more explicit and helpful.

Rating: very good. The platform is stable in normal use, with only minor improvements needed in user-facing error messages.

Efficiency

We designed the platform to keep model usage as low as possible while still delivering good results. We simplified where model calls are needed and avoided unnecessary requests, so the system stays fast and responsive.

For features such as the prompt enhancer and the chatbot, we use lower-cost models by default that are still capable of handling the task well. This allows users to interact with these features without high usage costs. At the same time, users can choose to switch to more advanced models if they want more complex outputs.

This approach keeps both latency and cost under control in normal use.

One improvement for the future would be to support parallel execution for more complex testing scenarios. Running multiple tests at the same time would reduce the total time needed to complete a full testing audit and return results to the user more quickly.

Rating: very good. The platform is efficient for its intended use, with clear opportunities to improve performance further for advanced scenarios.

Compatibility

The web app runs in modern browsers and works well on desktop for daily use.

Users can connect different models, either from common cloud providers or from their own endpoints, such as self-hosted models or small services. The platform is not tied to a single provider: you choose and configure the models that fit your setup, so one application can work with the providers you already use or with models you run yourself.

The design mainly focuses on desktop use. While it can run on mobile, the layout has not been fully optimised for smaller screens.

Rating: good. Desktop experience is strong and model setup is flexible, but mobile use could be improved.

Maintainability

We reuse code where possible, so shared logic is kept in one place and does not need to be fixed in multiple files.

Adding new vulnerabilities or content currently requires changes in the codebase. This works well for technical users. Less technical contributors can still help, but they would need access to the repository and some guidance.

There is no CMS, as all structured content is stored in the repository. For a technical team, this works well because it provides clear version history and a single source of truth. Avanade was comfortable with this approach. If the product later needs frequent updates from people who do not edit code, moving to a CMS would be a natural next step; we already flag that in our future work in case that becomes a priority in the future.

We also keep integrations with external AI providers in a single place, so updates are easier to manage if APIs change.

Rating: good. The project is clear and easy for developers to extend, though it is less accessible for non-technical contributors (not expected to make changes to the platform at this stage).

Project Management

We managed the project in a structured and consistent way throughout. We stayed on track with all deadlines and shared regular progress updates with our UCL supervisors and our industry partner, Avanade. We also scheduled weekly meetings to share progress and get feedback, while keeping them short and focused to respect our partner’s time.

Internally, we used planning documents to define responsibilities and track tasks. We also shared frequent updates through our group chat, which helped keep everyone aligned and aware of progress.

We successfully delivered everything we set out to build, along with additional features, within the timeline.

Work was divided so that each person focused on specific parts of the platform. While this worked well for efficiency, it meant we had less direct involvement across other areas of the project. That said, we maintained strong collaboration through code reviews, requiring at least two approvals before merging any changes.

Rating: very good. We stayed organised, communicated well, and delivered beyond the original scope, with only minor room to improve cross-team involvement.

Future work

When we finished the build, we listed possible next steps we might return to later.

You can already try different inputs and watch how the model’s behaviour changes. Further work could make the tool more useful for testing mitigations and for routine security work. It should also stay usable in teaching—for example IGCSE or A-level classes—or for people who are new to security.

Many people now ship software with help from AI coding tools but without much security training. Learning how prompt injection works early can reduce the chance of serious mistakes on live systems. That includes non-technical founders who are building their own products.

The list below is split into themes. It is a set of ideas for later, not a promise of what will be built next.

Learning, testing & demos

Mobile-friendly version

A simpler layout or a cut-down mobile view so browsing and quick tests feel natural on a phone. The current product targets desktop first.

Compare two mitigation stacks

Run the same prompt with two different mitigation setups. Show the risk scores and full model replies next to each other so you can see what changed.

Guided learning paths

Ready-made paths through the content, such as a short intro or a longer deep dive, so new users do not have to face the full catalogue at once.

Prompt autopsy

After a test, show which parts of the prompt probably pushed the score up or down, and suggest what to delete or change. People see a reason, not only a single score.

Model matchup

Send the same test to two models or providers. Compare refusals, leaks, and tone—useful for seeing how the same prompt behaves on different systems.

Read-only demo mode

Use fixed scenarios and scripted answers so a demo runs without real API keys. Useful in classrooms, meetups, or networks where keys are not allowed.

Exportable lesson packs

Pack vulnerabilities, mitigations, and suggested tests into one download (for example a ZIP file or a printable sheet). Someone running a session can reuse the pack instead of rebuilding materials each time.

Community, content & operations

Contributor checklist

A short checklist for new pages: required fields, an example prompt, a risk label. That keeps new entries in the same shape as older ones.

Community knowledge base

Allow community guides and tips next to the official pages, with review before publication and a line on where the information came from.

Content management system (CMS)

Let staff edit vulnerabilities, mitigations, and help pages in a normal content screen instead of changing code.

Real incident footnotes

Under each vulnerability, add a short real-world or public example so the pattern is easy to picture without a long case write-up.

Federated knowledge

Let organisations choose to add anonymised mitigations and lesson notes to one shared search index. Joining would be optional for each organisation.

Community model directory

A place where people can share prompt-injection tests they built or ran: the prompts, mitigations, and what the model did. Others could comment on how safe or risky that setup felt—for example whether the model refused cleanly, leaked data, or was easy to nudge off policy. Over time that builds practical guidance on which models to use for serious testing, alongside vendor specs and response-time notes.