Head of Product & Engineering, Clean Logic · since December 2025
B2C home-services platform
A home-services business where customers see the price upfront and pay by card, and self-employed specialists pick jobs themselves. Three sides (customer, specialist, operator) with money, quality and personal data under control and no large staff.
- Next.js 16
- React 19
- TypeScript
- PostgreSQL (Supabase)
- bePaid
- Playwright
- GitHub Actions
Numbers
- Apps
- 3
- DB migrations
- 1,000+
- Automated tests
- 1,800+
- E2E scenarios
- 46
- Public pages
- 446
- Commits
- 2,000+
Architecture
Key decisions
1. Business logic in the database, thin apps
Pricing, discounts, order states and money are computed in PostgreSQL functions, and row-level security policies enforce access. Users hit the database under their own role; the secret key exists only on the server. Result: one source of truth for money, whichever app sends the request.
2. Outbox for the outside world
Notifications and Telegram messages are written to an outbox in the same transaction as the order change and delivered by a separate service. Nothing gets lost, and nothing is sent about an action that didn't happen.
3. Payments behind a switch
bePaid handles immediate charges or an authorization hold until work starts, refunds, chargebacks, webhooks and reconciliation. The payment mode is an owner-controlled switch, with no release needed. Extra work is billed only after the customer approves it in their account.
4. Data and access
SMS one-time codes for customers and specialists, password + TOTP for staff. Addresses and personal data are stored encrypted in a separate schema. Every operator action on money or data requires 2FA and lands in the audit log.
5. Remote quality control
Specialists follow a checklist, take before/after photos and mark stages (arrived, started, finished) with geolocation and timestamps. Operators accept the result or send it back.
6. Pricing rules as a product decision
Fixed published price, +10% at peak times, total discount capped at 20%, bonus points cover up to 15% of an order. Discounts come out of the platform's share; the specialist's share stays intact.
How quality is kept
- Every change ships with a test; commits without one fail the check.
- Database tests on PGlite, unit tests on node:test, role-based end-to-end scenarios on Playwright.
- GitHub Actions on a self-hosted runner, branches and PR reviews, a bug registry and a decision log.
- AI-assisted development (Claude Code) under strict rules: custom skills, guard hooks (no edits to applied migrations, no secrets, no bulk commits), reviewer agents for security, UX and SEO.
Acquisition
SEO architecture: 446 pages (articles, services, categories, Minsk districts), with a sitemap built only from indexable pages. 14 ad landing pages for 97 keywords, Yandex Metrica, a bot for automated social publishing.
What I did myself
All of it: the product and money model, requirements, architecture, database, code for the three apps, tests, CI, VPS infrastructure, SEO and preparing the launch. AI agents are my development tool; the decisions and the verification are mine.