Proposals answered within 2 business days
All case studies
Analytics and BIPrivacy by designIntegrations

Analytics dashboard for a group of e-prescription online shops, with no patient data

Client: A chain of online shops selling e-prescription productsIndustry: Pharma16 June 2026
Results
patients' personal data in the dashboard
0
orders imported in the test without an error
4,758
cycle of automatic data reconciliation with the shops
1 h

Challenge

The owner runs several online shops selling e-prescription products. Each shop has its own orders and reports, so there was no single view of sales, products and trends.

The constraint was health data. Information about patients goes to doctors and cannot be collected in an analytics tool. Centralisation therefore could not move it to a new place.

Approach

The dashboard does not store personal data at all. It counts returning customers by a pseudonymous hash from which identity cannot be reconstructed. As a result, GDPR obligations for the dashboard are minimal.

Data arrives through two channels: signed notifications from the shops in real time, and API polling for importing history and reconciling every hour. We rejected polling alone (delays) and direct access to the shops' databases (brittle and breaking isolation).

Implementation

Each shop runs a lightweight plugin that sends order events signed with HMAC and without personal data. The dashboard verifies the signature in a way that resists timing attacks, encrypts the shops' secrets and acknowledges receipt immediately, while a queue worker does the write. The write is idempotent, so a repeated event does not corrupt the data.

The dashboard shows revenue, each shop's share, statuses, best-selling products and the change against the previous period, with filters and export. From the start the database has a vector extension for a future AI assistant that will answer questions about sales.

Results

In a test on a development shop, the dashboard imported 4,758 orders from 2021-2026 without a single error. The test also confirmed that events with an invalid signature are rejected and that writes are idempotent.

The project is at the pilot stage. The next steps are connecting all shops in production, user roles and alerts for missing events.

How it is built

Integration
A lightweight WooCommerce plugin in PHP sends order events signed with HMAC-SHA256, without personal data. History import goes through a separate endpoint, also authenticated with HMAC.
Event intake
The endpoint responds with 202 immediately, and a BullMQ worker performs the write. The signature is verified in constant time, store secrets are encrypted with AES-256-GCM and shown only once on rotation.
Data consistency
Idempotent writes (UPSERT by store and order number), permanent errors without retries, a synchronisation log. Every hour, orders changed in the last 25 hours are reconciled.
Privacy
A returning customer is recognised by a pseudonymous hash. The panel stores no names, addresses or health data.
Dashboard
Next.js with TypeScript, Drizzle ORM, PostgreSQL with pgvector, Tailwind, shadcn/ui and recharts. Filters, period comparison, order search and CSV export.
Decisions
Redis and BullMQ instead of RabbitMQ, because the scale is tens to hundreds of events per minute. The condition for changing this is recorded in the documentation: multiple consumers of the same event.

Technologies

  • Next.js
  • React
  • PostgreSQL
  • pgvector
  • Drizzle ORM
  • Redis
  • BullMQ
  • WooCommerce
  • PHP
  • Docker
Case studies

More case studies

Real estate

AI sales assistant platform for property developers, powered by live inventory

A chat on the developer’s website answers questions about available flats and prices using live data. In a test of 106 scenarios, the number of answers containing invented facts fell to zero.

View case study
Education and personal development

AI coach on WhatsApp with participant memory and handover to humans

A thirty-day programme run as a WhatsApp conversation, with the author’s knowledge base and a memory of each participant. AI resolved 92% of cases without human involvement, and difficult conversations went to the coaches.

View case study
Real estate

Sales and after-sales system for a developer, with 3D walkthroughs built from floor plans

An offer generator with open tracking, a defects dashboard with the statutory 14-day deadline, complaints with a phone line, and 360° walkthroughs generated automatically from floor plans for 81 of 82 flats.

View case study
Healthcare

Health app taken over, with a new product catalogue and 47 languages

We took over the app from the previous contractor: an audit, security and payment fixes, a new product search and localisation into 47 languages, without stopping sales.

View case study
Real estate

Automated system for statutory reporting of flat prices to dane.gov.pl

An audit of 612 files against the act and the ministry template, a fix to the generator at the source, and automatic upload of 409 overdue resources to a portal that has no write API.

View case study
Construction

Public tender analytics platform with a competitor relationship graph

The application combines data from the Public Procurement Bulletin, KRS, GUS and the VAT White List. It shows who is bidding, at what price and how they are connected, instead of manual searching before every tender.

View case study
Technology

Kubernetes platform with GitOps and image signing for 32 applications

We are moving several dozen applications from a single server to a Kubernetes cluster with Git-based deployments, a security policy and backups whose restoration we check every week.

View case study
Media

AI short-video factory with human approval in a mobile web app

Script, illustrations, voiceover, subtitles and render in a single pipeline. A person approves every episode in a phone app, and publishing runs in scheduled slots.

View case study
Customer service

Voice AI assistant for a helpline, with a custom audio pipeline for Polish

A phone line where the caller talks to an AI. We rebuilt the whole audio path so that conversation in Polish flows, and the system detects the end of an utterance by meaning, not by silence.

View case study
Hospitality

Video menu platform for restaurants with HLS streaming and QR codes

A guest scans a code at the table and sees short videos instead of a list of dishes, with no app to install. Video in three quality levels, data isolation for each restaurant and a database restore verified in practice.

View case study