Przemysław Zalewski

This page is a Cloudflare Worker

served from CMH US · written in by HTMLRewriter

A Cloudflare developer who ships to the edge, with the receipts

Workers, Durable Objects, R2, D1, Queues, Workers AI, rate limits, HTMLRewriter. Four of my side projects and this very page run on this stack. Scroll down and the page tells you which data center served it.

Available from November 2026 · Wrocław, Poland (CET), remote

Przemysław Zalewski
  • “someone you can always count on”public LinkedIn recommendation
  • “a true bias for action”client CTO, on LinkedIn
  • 15+ yearsshipping software
  • Free call, no pitch deck30 minutes, then you decide
300+generated sites deployed automatically
10,000+affiliate programs catalogd, ~97% found automatically
4months from first commit to the App Store
15+years shipping software

Why me

Cost caps, not surprises

Every AI or API endpoint I ship has a per-IP rate limit, a global rate limit and a daily cost cap in a Durable Object. The demo below trips its limit on the sixth click, on purpose.

The whole catalog, used in anger

Workers with static assets, R2 for generated images, Durable Objects for atomic counters, Workers AI for models, Cache API for expensive responses, HTMLRewriter for per-request HTML. Each one appears somewhere on ciunkos.com.

Migrations off WordPress and friends

A help center moved from WordPress into the repo with 301 redirects for every old address. One server less to break during holidays.

Security headers by default

CSP without inline scripts, nosniff, referrer and permissions policies, OAuth where it belongs. Same-day response to advisories, with a WAF rule while the patch ships.

Proof

Work I can show

Problem, what I did, result. Client names only where I am allowed to use them.

Four side projects on Cloudflare Workers under one domain

The problem
Ideas die when deploying them costs a weekend. I wanted a path from idea to a URL in an evening.
What I did
Korpo Tłumacz, Wyrocznia, Migawki and Flack: each a Worker with static assets, Workers AI with per-IP and global rate limits, a cost cap in a Durable Object, R2 for generated images, a first-party PostHog proxy and a CSP without inline scripts.
Result
Live at ciunkos.com/korpo-tlumacz, /wyrocznia, /migawki and /przemo. This page runs on the same pattern.

Workers AI Durable Objects R2 Open ↗

See also: AI & agents · Maintenance & CI/CD

Affiliate discovery: 300 seeds into a 10,000+ catalog, 97% automated

The problem
A manually curated list of ~300 affiliate programs could not keep up with the market.
What I did
Multi-phase semantic search over pgvector with query expansion and negative queries, embedding-based clustering, tiered caching in Cloudflare R2. Due diligence on 230+ brands against a 50-criterion scorecard rejected two thirds of them.
Result
A 10,000+ catalog with ~97% of entries found automatically.

10,000+ ~97% automated pgvector + R2

See also: AI & agents

Help center moved from WordPress into the repo as docs-as-code

The problem
An unmaintained WordPress help site: red in audits, no sitemap, expiring certificates, plugins nobody understood.
What I did
Markdown in the repo, versioned with the product, all languages generated automatically, interlinking, 301 redirects for every old address, help added to the Definition of Done.
Result
One machine less to break during holidays, docs that match the product, better SEO and GEO, context agents can read.

docs-as-code 301s i18n

See also: Next.js · Maintenance & CI/CD

One foot in the door

Not ready for a project? Start smaller.

Two ways to see how I work before you commit to a sprint. Fixed scope, a number in writing after a short call.

Cloudflare codebase audit, one week

I read the repo, CI, tests, security and the parts the team avoids. You get a written report with findings ranked by risk, a plan with milestones and a go or no-go you can defend. I have run this for a large software house before its clients saw the code.

Code review of one pull request or one module

Send me the diff that worries you. Within a few days you get line-level comments, the three things I would change first and whether I would merge it.

Ask about an audit Free 30-minute call first. If an audit is the wrong tool, I say so on the call.

Live demo

Served from the edge

The data center code and country above were written into this HTML by the Worker with HTMLRewriter before it left Cloudflare. The panel below asks the Worker a few more things: TLS version, round-trip time, a Cache API hit and a rate limit that bites.

Demo loading…

Click “Fetch twice” and compare the timings. Then hammer the rate limit button and watch the 429 arrive with a Retry-After header.

How it works

Three steps from this page to a running project.

  1. 1

    A 30-minute call

    You describe the product and the problem. I ask the questions I would ask on day one. If I am not the right person, I say so and point you to someone who is.

  2. 2

    Scope in writing

    A short written plan follows: what we build first, what we measure, how we work together and what it costs. No slide deck.

  3. 3

    Something to touch in week one

    The first slice ships in the first week: deployed, measured, reviewable. From there the work is paced by what the numbers say.

Fit check

Is this a fit?

A good fit when

  • You need a senior who owns delivery, not a pair of hands
  • The product has to ship and be measured, with or without a product manager
  • A solo engagement or a team of up to four
  • TypeScript, React, Node.js, Cloudflare, Postgres, PostHog

Probably not when

  • A program that needs a ten-person vendor team
  • A stack built around Java, Python or a cloud I do not sell
  • Body leasing by the hour with no say in how the work is done
  • A start before November 2026

Working style

How I work

Zero bug policy

A bug is fixed or consciously closed, never parked. Alerts and error tracking in every project, so I learn about problems before the client does.

Agents under rules

Claude Code and Codex work on main with hooks, lint and test gates. The model suggests, the criteria decide. Every PR gets a human review and AI-assisted content is disclosed.

Measured, not assumed

PostHog in every project from day one. A tracking plan per feature and dashboards leadership actually reads.

FAQ

Questions people ask before they book

Workers or a Node.js server?
Workers when the product is request-shaped: pages, APIs, edge logic, scheduled jobs, light AI. A Node.js server when you need long-lived processes, heavy libraries or a database on the same box. Often both, with Workers in front.
When do you reach for Durable Objects?
When two requests must agree on one piece of state right now: a cost counter, a rate limiter with memory, a per-channel archive, a WebSocket room. Not for a general database.
How do you keep Workers AI bills under control?
Rate limit per IP, global rate limit, a reservation in a Durable Object before the model runs and a settlement after it answers. The four side projects under ciunkos.com share that pattern, and the AI and agents page shows the agent that runs on it.
Can you move us off Vercel, WordPress or a VPS?
Yes. The usual shape is an audit of what the current host does for you, a worker that serves the static part first, then APIs one by one, with 301 redirects and a sitemap diff so search traffic survives. For Next.js specifically, start with the Next.js page.
Do you do Cloudflare for enterprise accounts?
I work on the Workers platform, DNS, WAF rules and Access. I do not resell plans and I am not a Cloudflare partner. Ask me about the engineering, ask Cloudflare about the contract.
How soon can you start?
November 2026. Book the call now and the first Worker can be live in the first week.
Przemysław Zalewski

Let’s find out in 30 minutes

A free 30-minute call. You bring the problem, I bring questions. No prices on this page because scope comes first.

If I am the wrong person I will say so on the call and point you to someone better.

After you book: a calendar invite, then the call. Nothing else to fill in.

Available from November 2026 · B2B contract or employment · Wrocław, Poland (CET), remote