If your Servoy solution prints anything — invoices, statements, packing slips, customer summaries, work orders, monthly reports — you have a report template backlog that never gets shorter. A controller wants a new statement layout. Sales wants a top-customers summary for their next QBR. Operations wants a packing slip with a different barcode block. Each one becomes a ticket, a developer hour, a layout iteration using `plugins.VelocityReport` or the Jasper report plugin, and a release cycle. Meanwhile the user who asked has already moved on to the next request.
The Dotzlaw team has shipped a third project on the same AI pipeline that powered our two natural-language dashboard apps. Same database. Same schema retrieval. Same SQL reliability layers. Different output: a complete, multi-section, print-ready report template with live SQL bindings, rendered to a page-perfect PDF in under 60 seconds. And because the output is standard Apache Velocity XHTML, it slots into your existing Servoy infrastructure with zero plugin install.
Type “Top 10 customers in revenue for the last 3 months, include a customer detail breakdown for sales team follow-up” and get a header, customer-summary block, ranked line-item table with currency formatting, totals row, and footer — all bound to live SQL the AI wrote and validated against the database, all rendered in the page size and orientation you picked.
What you get:
- Plain-English description in, multi-section print-ready report out. Up to 8 sections per report — header, address blocks, metadata grids, tables, summaries, detail blocks, footer. Every data-bound section is wired to validated SQL the AI generated and ran against your live database before the template was ever shown to the user.
- Vision-aware feedback chat for layout corrections. Attach a screenshot of the rendered PDF, type “right-align the totals column and bold the grand total” or “the credit-hold pills are inverted — true should be red, not green,” and watch the assistant stream a corrected template. Click Apply, see the new layout in seconds. No more “can you tweak the margin in section three” tickets.
- Two preview tabs that respect cost. HTML preview is free and instant for iteration. PDF preview is lazy-on-tab-switch with a stale banner so you only pay for the print render when you actually want to see it.
- Seven page sizes, picked per report. Letter (default), Letter Landscape, Legal, Legal Landscape, Tabloid Landscape, A4, A4 Landscape. The page-size selection is saved with the report so a reload comes back at the right dimensions, and the AI fits column counts to the available width.
- Full SQL transparency on every data-bound section. A skeptical user clicks Copy on any section, runs the query in SSMS, and confirms the number themselves. No black box, no “trust me, the AI got it right.”
- Save, reload, regenerate. Reports save to a category library with a custom name. Loading replays the stored template against fresh data in under 5 seconds. Regenerate re-runs the entire AI pipeline so the saved report automatically picks up improvements as the prompts and SQL logic evolve.
- Read-only database connection. Your existing Servoy application logic is untouched. The system does not create tables, run migrations, or modify your schema.
Why this matters for Servoy teams specifically:
`plugins.VelocityReport` and the Jasper report plugin are both excellent at rendering a template you already have. Neither is in the business of authoring that template for you. Today, every new report is a developer touch regardless of which engine you ship through — somebody writes the SQL, somebody writes the layout, somebody iterates until it looks right, somebody ships a release. The natural-language report layer sits beside that. Users get self-service authoring of the report itself, your developers stay focused on the application, and the finished PDF comes out the moment the user is happy with the layout.
Zero plugin install, three consumption paths:
The web app is the complete rendering stack — no JAR drops, no admin tickets, no service restarts, no Java runtime concerns. Servoy customers consume it three ways:
1. Iframe embed. Drop the report URL into a Servoy form’s HTML area, pass the user’s identity through a query string, and the user authors and downloads reports inside your application without leaving it.
2. `plugins.http` PDF download. From a Servoy method, POST the description (or a saved-report ID) to the report endpoint and stream the PDF back as bytes. Save it, email it, attach it to a record, print it. No template ever touches the Servoy filesystem.
3. Drop into `plugins.VelocityReport`. If your shop already standardizes on Velocity, copy a saved report out of the library and paste it into your Servoy media folder. The output is plain Apache Velocity XHTML, so it runs through your existing Velocity print pipeline, signing, and distribution rules unchanged.
The compounding part:
Every reliability layer carried over from the dashboard projects. Schema retrieval, T-SQL prompt rules, post-processing fixes, retry safety net, security validation that blocks anything that is not a pure SELECT. Reliable SQL against a real database is the hard, expensive problem. Solve it once and every new output mode after that — interactive dashboards, printable PDFs, whatever comes next — is a planner and a renderer on top of the same base.
Tested against Microsoft’s WideWorldImporters database (90.5 million rows, 48 tables, 561 columns, 13 years of history) with the same 100% SQL success rate we hit on the dashboard versions. Works against MS SQL Server, PostgreSQL, and MySQL.
Happy to help. If you want a live demo, want to talk architecture, or want to see what an AI-authored Velocity report looks like running against your own data, reach out. The Dotzlaw team can help integrate the report generator into your Servoy solution quickly, or stand it up as its own application against the database you already have.
Read full Project write-up here: Ask Your Database Anything: Printable PDF Reports - Dotzlaw Team
