Software written
with agents,
reviewed by the engineer
responsible for it.

Banana Pancakes builds and operates Polarix, HOCR, Perdify, SealTask, HushGit and PrivaCycle.

Seven tools behind that work are open source: jig-sh, epicd, jig-skills, runledger, postgres-test-harness, runlimit, and syrup-rail. I’m taking audit work, but no new development projects in 2026.

Operator
Jiří Zajpt, managing director
Shipping since
May 2016 · ~10 years
Writing code since
~2005 · ~20 years
Products
5 live · 1 in beta
Based
Prague 5, CZ · CET

Products I own and run.

Banana Pancakes s.r.o. owns 100% of each product. No outside investors.
/ 01 · iOS puzzle game Live · App Store

Polarix

An iOS merge puzzle. Opposite charges fuse, while matching cores merge until they annihilate. Slide cores and set up chain reactions.

playpolarix.com Swift · SwiftUI
/ 02 · B2C call-center CRM Live · Sales-led

HOCR

A B2C CRM for call centers, combining a sales pipeline, e-sign agreements, Twilio Flex routing, a branded customer portal, and AI-driven call QA. HOCR can go live in days.

hocr.app Rails · Rust · Twilio Flex
/ 03 · AI interrogation game Live · App Store

Perdify

An AI interrogation mystery for iOS. Six suspects think, remember, and lie on their own. Question them by voice or text and find the killer before the room turns on you.

Swift · Rails · Postgres
/ 04 · Encrypted task manager Live · sealtask.com

SealTask

Zero-knowledge, end-to-end encrypted task management for teams. The browser encrypts tasks, comments, delegations, attachments, and notes before upload.

sealtask.com Rust · TypeScript
/ 05 · Zero-knowledge Git hosting Beta · hushgit.com

HushGit

Zero-knowledge Git hosting. The client encrypts code before push and decrypts it after pull; the server stores ciphertext. HushGit staff cannot read repository contents, and a server breach exposes ciphertext rather than plaintext.

hushgit.com Rust · TypeScript
/ 06 · Privacy-first period tracker Live · App Store

PrivaCycle

Menstrual cycle tracking for iOS. Cycle data, symptoms, and notes stay on the device by default, encrypted with AES-256-GCM. PrivaCycle has no developer-operated server. Encrypted iCloud sync, decoy mode, and a panic-erase code are available.

App Store Swift · SwiftUI · CryptoKit

An internal tool.

Proprietary. Not for sale, not open-sourced.
/

LandingAtlas

Rust Axum TimescaleDB Tera React admin
Proprietary · internal & client use

A multi-site landing-page engine for A/B tests, used in-house and on client engagements. One Rust service routes each request by Host header, renders the matching Tera template, assigns a sticky variant cookie, and writes events to TimescaleDB. A same-origin React admin shows experiments and results; the server runs a chi-square test for homogeneity. Declaring a winner makes its template the site’s runtime default and stops further assignment for that experiment.

landing-atlas  ·  capability map
├─ multi-site routing       Host header → template + asset bundle
├─ variant assignment       weighted, sticky per-visitor cookie
├─ conversion tracking      first-party JS · cookie-validated
├─ statistical analysis     chi-square · p-value · lift over control
├─ winner publication       promote variant to runtime default
├─ admin console            React UI · Basic Auth · same-origin API
└─ preview links            signed URLs survive process restarts

Open source & experiments.

Seven open-source tools, plus source-available jury. Issues welcome.
/

jig-sh

Rust MCP Receipts Work gates Encrypted vault
github.com/bpcakes/jig-sh

Keep coding agents on contract. Jig turns any repository into an operating environment for coding agents. It generates agent-facing context, a typed command contract and MCP runtime, then records command results as append-only receipts that can back completion gates. An open status-provider protocol joins repository, harness, and external inspection state. A stable local development proxy survives port changes, while a sealed project vault brokers selected secrets into child processes without putting them in the repository. jig update keeps the scaffolding current without overwriting project customizations.

jig-sh  ·  repository operating environment
├─ agent context             repository map · conventions · prompt library
├─ typed contract            stable commands across agents, machines, and CI
├─ MCP runtime               tools expose the same repository contract
├─ receipts + gates          append-only evidence · verifiable completion
├─ status providers          versioned external observations · aggregate view
├─ development proxy         stable local hostnames across port changes
├─ sealed vault              encrypted secrets · brokered child processes
└─ template sync             init · adopt · update without clobbering changes
/

epicd

TypeScript Codex Beads SQLite CLI + TUI
github.com/bpcakes/epicd

Durable Codex orchestration for dependency-safe Beads epics. Epicd claims one ready task at a time, gives it to an implementation agent, and sends the diff through an independent review and bounded repair loop. Approved work is committed locally, then a fresh verifier checks that exact revision before the task closes. SQLite preserves the lifecycle, agent sessions, findings, repair budget, and Git revisions so interrupted runs can resume. It supports direct Codex SDK threads and visible Herdr sessions, and never pushes.

epicd  ·  delivery contract
├─ select                   dependency-safe task from the Beads graph
├─ claim                    atomic ownership before implementation
├─ implement                persistent Codex session · scoped contract
├─ review + repair          independent reviewer · bounded fix passes
├─ commit                   approved application tree · local only
├─ verify                  fresh agent checks the exact commit SHA
├─ close                   task closes only after verification
└─ resume                  SQLite state · SDK/Herdr cold handoff
/

jig-skills

Codex 6 plugins Rust Swift TypeScript Privacy audit
github.com/bpcakes/jig-skills

A marketplace of focused engineering skills for Codex. Six plugins cover Rust, Swift, and TypeScript refactoring and review; independent multi-model review; self-contained implementation plans; and evidence-backed privacy audits for zero-knowledge and end-to-end encrypted products. Each skill targets one concern rather than running a broad generic pass. The same compatible skill sources can also be installed directly into Codex or Claude Code.

jig-skills  ·  marketplace
├─ jig-rust                 refactor · architecture · async · security · SQL · tests
├─ jig-swift                Swift 6 · SwiftUI/UIKit · concurrency-aware cleanup
├─ jig-typescript           simplify · types · React hooks, state, APIs, tests
├─ jig-review               independent Claude, Codex, and Cursor review passes
├─ jig-exec-plans           write · improve · delegate checked-in ExecPlans
└─ jig-privacy-audit        claims · data flow · crypto · leakage · retesting
/

runledger

Rust PostgreSQL SQLx 5 crates
github.com/bpcakes/runledger

A durable PostgreSQL-backed job queue and workflow engine for Rust. Applications supply concrete handlers and a database; Runledger provides a persistent queue, lease-based workers and retries, cron schedules, and workflow DAGs with dependencies, fan-out/fan-in, results, continuation, replay, and external human or API gates. State lives entirely in PostgreSQL, so there is no separate broker to operate. A read-only terminal UI gives operators a live view of queue metrics, jobs, workflows, and definitions.

runledger  ·  workspace
├─ runledger-core            public contracts, traits, types
├─ runledger-postgres        SQLx persistence · queue · DAG
├─ runledger-runtime         supervisor · worker · scheduler · reaper
├─ runledger-tui             read-only queue + workflow operator console
└─ runledger-test-support    ephemeral PostgreSQL · scoped test utilities
/

postgres-test-harness

Rust PostgreSQL 18 Testcontainers Framework-neutral crates.io
github.com/bpcakes/postgres-test-harness

A fast, framework-neutral PostgreSQL integration-test harness for Rust. It starts a PostgreSQL 18 container or connects to an existing server, applies each distinct migration set once, caches the resulting template by fingerprint, and clones a fresh isolated database for every test. Applications keep their normal SQLx, Diesel, or tokio-postgres clients and migration entry points. Concurrent tests get separate databases, while bounded connection and cleanup work keep the suite predictable.

postgres-test-harness  ·  test lifecycle
├─ server                   owned PostgreSQL 18 container or external host
├─ fingerprint              content-addressed schema + migration identity
├─ template                 migrate each distinct schema once
├─ clone                    fresh isolated database per concurrent test
├─ client boundary          SQLx · Diesel · tokio-postgres · custom
├─ prewarm                 optional bounded pool of pristine clones
└─ cleanup                 safe drop · backpressure · failure reporting
/

runlimit

Rust Rate limiting PostgreSQL GCRA 5 crates
github.com/bpcakes/runlimit

A framework-neutral Rust library for keyed rate limiting. Runlimit provides anchored fixed windows in bounded process memory or across PostgreSQL-backed replicas, plus a process-local GCRA backend for continuously replenished quotas. Atomic multi-key checks prevent partial quota consumption, HMAC-derived subject keys keep raw identities out of storage, and shadow mode lets a policy warm up before enforcement. Optional crates add Axum/Tower admission middleware and typed HTTP rate-limit fields.

runlimit  ·  workspace
├─ runlimit-core            policies · HMAC subject keys · decisions
├─ runlimit-memory          bounded fixed-window + GCRA storage
├─ runlimit-postgres        replica-safe SQLx/PostgreSQL backend
├─ runlimit-axum            caller-controlled Axum/Tower middleware
└─ runlimit-http            framework-neutral RateLimit fields
/

syrup-rail

Rust Subscription billing PostgreSQL 18 NMI 4 crates
github.com/bpcakes/syrup-rail

A reusable Rust toolkit for subscription billing. Syrup Rail models enrollment, snapshotted terms, entitlements, cancellation, discounts, automatic renewal, dunning, and terminal non-payment without taking over a host application’s authentication or fulfillment. Its PostgreSQL layer provides the canonical schema and SQLx orchestration, including fail-closed transaction boundaries and replay-stable events. Optional NMI crates add a lifecycle adapter and a bounded, retry-free raw HTTP client.

syrup-rail  ·  workspace
├─ syrup-rail               domain types · lifecycle policy · entitlements
├─ syrup-rail-postgres      PostgreSQL 18 schema · SQLx orchestration
├─ syrup-rail-nmi           NMI gateway · lifecycle-evidence adapter
└─ syrup-rail-nmi-client    bounded, retry-free raw NMI HTTP client
/

jury

Rust Linux Secrets vault Pre-alpha Elastic-2.0
github.com/bpcakes/jury

An experimental portable secrets vault exploring fresh approval for each governed action. The design lets an encrypted vault travel with a Git repository while private identities stay outside it. Governed access binds signed approvals and witness contributions to a specific item revision and action. A Linux CLI works with a self-hosted juryd witness daemon. Pre-alpha and unsuitable for real secrets; it has not had independent security review. Source-available and free to self-host under Elastic License 2.0, which restricts third-party hosted or managed services exposing a substantial set of jury’s features.

jury  ·  experimental access model
├─ portable vault           encrypted artifact · versioned in Git
├─ private identity         local storage outside the repository
├─ approval                 signed decision for an exact action
├─ witness                  contribution to a governed open
└─ receipt                  verifiable signed decision evidence

Work I take on.

Audits are open. New development projects are closed for 2026.
01 / Agentic development

Agentic development

I use coding agents to write the code, but I remain responsible for the design, review, and result. Based on twenty years of engineering work, I decide what ships and what goes back through the loop.

01Scoped product or feature, end-to-end
02Rust, TypeScript, Ruby, Python, Swift
03Evals, observability & rollback paths
04Handover documentation
02 / Workflow audit

Workflow audit

For teams already using coding agents but getting stuck at review, scoping, or handover. I inspect the tools, prompts, evals, models, and review process, then change the weak parts and document the resulting workflow.

01Workflow audit & written report
02Prompt, eval & tooling changes
03Model selection & routing review
04Team playbook & handover
Run the diagnostic
03 / Growth

Growth & acquisition

I build and test landing pages, run paid campaigns on Google, LinkedIn, and Meta, and report spend and results each week. Client landing pages run on LandingAtlas, my in-house A/B testing engine.

01Landing pages & A/B testing
02Paid: Google, LinkedIn, Meta
03SEO & technical content
04Attribution & weekly readouts

A recent engagement.

Client name redacted at their request. Engagement active.
Redacted project · evidence snapshot
$ find frontend/ admin-panel/ -iname "*.tsx" | xargs cat | wc -l
    78980
$ find crates/ -iname "*.rs" | xargs cat | wc -l
   377899
$ git log --reverse --format="%ai" | head -1
2026-02-13 18:24:49 +0100  # first commit
$ date
  Sat Apr 25 22:40:10 CEST 2026
~456k
lines, total
~10
weeks since first commit
1
engineer · agentic
We bet on Banana Pancakes’ agentic development approach and got the work of five engineers in the first month — with the judgment to tell us when we were wrong. Startup speed, senior taste, zero hand-holding. Hire them before someone else does.
Client founder Active engagement · 2026

I’ve led software teams for twenty years. Agents changed who types the code, not who chooses the design, sets the checks, and rejects bad work. Shipping is faster; responsibility still sits with the engineer.

On engineering with coding agents Jiří Zajpt Managing director & principal engineer, since 2016
2016
founded · 24 May · Prague
~20
years writing software
1
principal engineer

The current stack.

Languages, databases, coding agents, and operations tools.

Principles

I use types to catch mistakes early and familiar infrastructure until a constraint rules it out.

/ 01Rustbackends · hot paths
/ 02TypeScriptfrontends · tooling
/ 03Ruby on RailsCRUD · backoffice · MVPs
/ 04SwiftiOS · Polarix & Perdify
/ 05Pythonresearch · ML · glue
/ 06Postgresthe database
/ 07Codexprimary driver · Claude for UI
/ 08Grafanabusiness dashboards · alerts

How an engagement runs.

Four checkpoints. Timing depends on the scope.
Phase 01

First call

45 minutes to understand the business, the team, and what needs to change. I’ll tell you if I’m the right shop and, if not, who is.

~ 1 week
Phase 02

Written proposal

Scope, cost, and timeline on one page. If I’m wrong about scope, I say so before you sign.

~ 1 week
Phase 03

Ship & iterate

Weekly demos, a shared Linear board, and direct answers from me on Slack. No status-update theatre, no middleman.

3 – 12 months
Phase 04

Handover (or stay)

When the work is finished, I document it, then either leave or stay on a lighter retainer. Your call, not mine.

open-ended
§ 07 · Contact

Get in touch.

Use the form for product questions, short workflow audits, or the waitlist for my next development opening. I’m not taking new development projects in 2026. Write in Czech or English; I reply within one working day.

Contact
Use the contact form
Signal / Phone
on request
Registered office
Na pomezí 910/2
Jinonice, 158 00 Praha 5
Česká republika
Company
IČO 05108438
DIČ CZ05108438
C 258440, MS v Praze
By sending this, you’re okay with a reply by email. The processors are listed in the privacy policy.