Skip to main content
All work

Own product · 2026

Ohlídáme.

A self-serve SaaS that checks a Czech e-shop against the rules it must follow and explains in plain Czech what to fix. It is my own business: I own the product, the architecture and every decision, and I built it with AI agents.

Role
Founder, product and engineering
Timeline
Aug 2026 – present
Sector
Compliance · Czech e-commerce
Ohlídáme home page: a free e-shop check with an address field next to a sample result listing four tasks with their Czech law paragraphs and a fix
Launch
61 days
First commit to production
AI agents
706 commits
Of 872, co-authored with Claude
Coverage
10 modules
Regulations on one crawler

The challenge

Every Czech e-shop answers to a long list of consumer, data and product rules, and the Czech Trade Inspection fines the shops that miss them. A lawyer’s review costs around 30,000 CZK, so a small shop often finds out what it got wrong only when an inspector does.

Ohlídáme reads a shop’s public pages, checks them against selected obligations and says what is missing, which paragraph it comes from and how to fix it. The scan is free. A deeper check for 490 CZK covers 70 products instead of 20 and adds ready-to-use fixes and a signed protocol.

There is no client and no team. I chose the market, set the price, wrote the terms and the privacy records, designed the system and run production. In a company these would be separate chief roles; here they are one person working with AI agents, who wrote most of the code while the decisions stayed with me.

What I owned

  • Product, business and brand

    Set the free-scan funnel, the 490 CZK deep check, refunds and Stripe billing, the plain-speaking brand and the public guides that bring shops in.

  • Architecture

    One crawler and ten regulation modules. A module is a set of pure functions that never fetch anything, and CI fails the build if that boundary is crossed.

  • Findings owners can trust

    A FAIL needs certainty: the right page confirmed and the required element clearly absent. Anything less is advice or an honest “could not tell”, and every finding links to its legal source.

  • Engineering with AI agents

    Ran Claude Code and OpenAI Codex as the engineering team. A domain glossary, 33 decision records and per-package rules keep them consistent; I set the direction, review and answer for the result.

  • Test strategy

    A fictional Test shop with 64 variants, a conformance suite and Playwright journeys against the production images. There is more test code than product code.

  • Privacy and operations

    Anyone can scan a shop, but detail goes only to a verified owner and unclaimed data is deleted after about eight days. Production runs on one self-hosted VPS with monitoring, immutable releases and backup drills.

Architecture

Browsers reach the Next.js web app and Stripe sends webhooks, both through Traefik to the Express API. The API calls pure regulation modules, reads and writes MySQL and enqueues scans in Redis. Scraper workers take jobs from Redis, read public e-shops and return evidence.

Observability: Alloy Prometheus and Loki Grafana. Alertmanager Discord. Umami for analytics.

A pnpm and Turborepo monorepo on one VPS. The API creates a scan and returns at once. A scraper worker walks a finite plan and hands the evidence back through an authenticated ingest, and pure regulation modules turn it into findings, so no rule ever touches the network.

Stack

  • Next.js
  • TypeScript
  • Express
  • Kysely
  • MySQL
  • Redis
  • BullMQ
  • Playwright
  • Stripe
  • Docker
  • Traefik
  • Grafana
  • Claude Code
  • OpenAI Codex
Ohlídáme report of a fictional test shop: one thing left to fix, a bar of passed and waiting checks, and questions about how the shop sells
Ohlídáme report panel listing the pages it read, the product sample and what it could not reach, with the reason for each
Ohlídáme scan in progress with seven steps, from preparing a safe scan through reading legal pages to the result
Ohlídáme offer for the 490 CZK deep check: 70 products instead of 20, with a comparison table of the free and deep check
Ohlídáme public guide for e-shops: a list of Czech obligations such as the 30-day discount rule and the withdrawal button
Fictional test e-shop used to exercise Ohlídáme, labelled as selling nothing, with a list of made-up paper machines

Let's take yours to production.

Part-time B2B, around 10 hours a week. Hybrid in Prague or fully remote. I reply within 24 hours on weekdays.

contact --jan

call
30 min, free
reply
< 24 h on weekdays
status
open to part-time B2B