A clinical dashboard that designs itself for each consultation.
A doctor picks a patient and types why they came in. Gemini then composes a brief for that visit out of a catalog of clinical components, which GenUI renders.
The record stays the same; only what matters today changes. The model decides which components to show and in what order. The app alone controls how they look.
| First brief | Second brief |
|---|---|
![]() |
![]() |
The briefs are built from a custom A2UI catalog of clinical components. Every component can be browsed in the app's catalog view.
flowchart LR
App[Flutter app] -- patient, complaint, history --> Agent[Brief agent]
Agent --> Gemini
Agent -- A2UI messages --> App
- The app (Flutter web) sends the consultation and renders the reply with GenUI.
- The brief agent (a Dart Cloud Function on the A2UI agent SDK) asks Gemini for a brief and returns validated A2UI.
- The agent is stateless: the app sends the full consultation each turn.
app/ the Flutter app and its component catalog
brief_agent/ the brief agent (Dart Cloud Function)
firebase.json firebase config
.github/ CI: builds the app and deploys it to Hosting
Each program has its own README, with how to run, build, and deploy it:
- app/README.md — set up and run the app, its architecture, the catalog.
- brief_agent/README.md — how the agent works and how to deploy it.
- Merging to
maindeploys the app to https://genui-clinic.solid.software/. - The agent is deployed by hand before any app version that needs it. See brief_agent/README.md.
Developed by Solid Software - a top Flutter agency and official Flutter consultants focused on high-quality software engineering.
- Working with Flutter since 2018 - early adopters and experts.
- AI Development and Integration: modern AI-driven development workflows that accelerate time-to-market while ensuring clean, reliable code.
- Full-cycle delivery & team augmentation.



