// case study

FormFlow

A contact-form platform that can tell a real photo from a fake one. Multi-brand form management for consumer-goods companies, with every attached image screened by a three-stage authenticity pipeline.

// at a glance

The engagement

Scope

Product design → build → deployment, end to end

For

The quality-management organisation of a leading Polish food & beverage group

Stack

Next.js · Go · PostgreSQL · Kubernetes

FormFlow dashboard: today's submission count, pending-review queue, suspect-image counter, and per-brand activity across five brands.
fig. 01 — operations dashboard, every brand at a glance · demo data

// the problem

Complaint photos
can no longer be trusted

A consumer-goods group runs dozens of brand websites, each with its own contact and complaint forms. Historically every form change — a new field, a new recipient, a new brand — meant a developer ticket. And the photos consumers attach as “evidence” went straight to the quality-management team, taken at face value.

That second part stopped being safe. Image generators and one-tap retouching tools made fabricated complaint photos cheap to produce — moldy product that never existed, damage added after the fact, doctored labels. Quality teams had no tooling to separate genuine product evidence from manufactured images, and each false positive costs real money in refunds, recalls, and investigation time.

FormFlow addresses both halves: a self-service, multi-brand form CMS for the teams that own the forms, and an automated image-authenticity pipeline for the photos that arrive through them.

// the pipeline

Three independent checks
per attached image

AI-generation detection

Classifies whether the photo was synthesized by a generative model rather than captured by a camera, with a per-image confidence score.

classifierconfidence scoring

Manual-edit detection

Estimates the edited surface area of the image and flags local manipulations — cloning, splicing, content-aware fills — as a retouch heatmap.

forensicsheatmap

Metadata verification

Checks EXIF consistency — capture date, device, geolocation, re-save signatures — against what the submission claims.

exiftrust score
FormFlow verification log: each attachment row shows per-stage results for AI-generation, manual-edit, and metadata checks plus an overall verdict badge — authentic, suspect, or doctored.
fig. 02 — verification log: per-stage results, worst-case overall verdict · demo data

// the platform

Forms as a product,
not a ticket queue

The CMS half of FormFlow gives brand and quality teams full ownership of their forms. Non-technical staff assemble, version, and publish forms; the embed runs on the brand's own domain; submissions land in one cross-brand inbox with verification verdicts attached.

  • Multi-brand workspace — one tenant, many brands, each with its own forms, domains, and routing rules.
  • Drag-and-drop builder — field palette, validation, tooltips, required flags, draft → publish versioning with full history.
  • Topic-based routing — complaints, questions, and opinions land with the right people; recipients configured per brand × topic.
  • Embeddable forms — a lightweight embed served on the brand site's own domain, with per-form domain allow-lists.
  • Cross-brand inbox — filterable by brand, topic, status, and verification verdict; every attachment carries its authenticity report.
FormFlow form builder: a published complaint form with twelve draggable fields, required and verification badges, and publish controls.
fig. 03 — form builder: drag-to-reorder fields, draft/publish lifecycle · demo data
FormFlow submissions inbox: a cross-brand table of incoming complaints, questions, and opinions with status badges and filters.
fig. 04 — cross-brand submissions inbox · demo data

The consumer side

What the consumer sees is deliberately boring: a clean, fast, accessible form on the brand's own website. Polish-first, with validation and file upload that just works. The interesting part — the verification pipeline — runs after submit, invisibly.

A consumer-facing complaint form in Polish: name, e-mail, product dropdown, batch number, purchase details, problem description, and a photo upload area.
fig. 05 — embedded consumer form (Polish) · demo data

// under the hood

Boring infrastructure,
on purpose

FormFlow is a single Go service with a Next.js frontend, PostgreSQL for storage and queueing, and S3-compatible object storage for attachments — no separate message broker, no microservice sprawl. It ships as one Helm chart with overlays for SaaS and on-premise deployment, and runs on Kubernetes.

That shape is deliberate. A quality-management tool earns trust by being predictable: fewer moving parts, fewer failure modes, an audit trail for every verdict, and a deployment a client's own platform team can operate.

Screenshots show the product with demonstration data. Client names, brands, and submissions in the images are fictional.

// co-financing

Built within an
EU-backed programme

FormFlow is developed by Applied AI sp. z o.o. within KPT ScaleUp Booster (Edition III), co-financed by the European Funds for a Modern Economy 2021–2027 (FENG). Details on the project funding page.