Available now · B2B
Maciej Senderowski
Software Engineer · AI Automation · Integrations
I build software that connects AI, APIs and business processes.
Building websites and software since 2006 · Kraków, Poland
- AI Agents
- REST APIs
- System Integrations
- Process Automation
- TypeScript

What I do
Four things I do — and where each one runs
Open a card for the technologies and the deployments behind them. Nothing here is hypothetical: every example is running at a client or inside one of my own products.
Technologies
- Anthropic API
- OpenAI API
- Tool calling
- Structured output
- RAG
- Prompt engineering
- Cost control
Applications
- A health-record assistant whose tools run on the user's own token, so database policies — not the prompt — decide what it can read
- A consultant embeddable on a customer's site: numbered citations, an explicit refusal when the sources do not cover the question, and instructions kept apart from facts so they cannot be quoted back
- Reading veterinary visits and lab results straight from a photo or PDF into structured records
- A workshop that generates a brand strategy: its own output schema and a model chosen per step, every version kept
- Campaigns, posts and images generated against that strategy, inheriting its tone and personas instead of each being prompted separately
- Prospecting where the model plans the queries, crawls the results for contacts, qualifies the companies and drafts the first message
- Spend kept under control before it became a problem: per-model pricing, a monthly ceiling and a usage log — which is how I found a bug billing the cheapest model at the most expensive rate
- Bulk SEO edits driven by a model: structured data, FAQ blocks and missing image descriptions across hundreds of pages
Related projects
Technologies
- REST
- Webhooks
- OAuth 2.0
- Signature verification
- Idempotency
- Retries & backoff
Applications
- Payment gateways and invoicing systems behind one registry, with signature-verified webhooks and a reconciler for the notification that never arrives
- Two-way sync between a hosted application and each customer's own WordPress site, with a queue, loop protection and identifiers that survive a retry
- Both sides of a public-data integration: publishing a compliant feed for a government harvester, and consuming the same registry's API to analyse who publishes badly
- A plugin that turns a WordPress site into an authenticated API an external panel drives from the outside — token compared in constant time, 60 requests per minute per address
- Invoicing providers and pickup-point providers behind one contract each, so swapping one is a new class rather than a rewrite of the order
- A plugin an organisation installs itself and connects with its own key, after which adoptions synchronise both ways without me deploying anything
Technologies
- TypeScript
- Next.js
- React
- PostgreSQL
- Row Level Security
- Supabase
- PHP
Applications
- Products carried from first commit to paying customers, with the schema grown through versioned migrations rather than rebuilds
- Authorization enforced in the database rather than in client code, so a bug in the interface cannot widen access
- One shared identity and billing layer across a family of applications, so a single account works in all of them
- Twelve commercial plugins on one skeleton: shared autoloader, licence server and my own update channel
- An own checkout instead of a heavy e-commerce stack, because selling a digital product is a fraction of what a shop does — the rest is maintenance cost and room for error
- An MVP taken from an empty repository to a deployed product with accounts and an admin panel in a single day
Related projects
Technologies
- Cron & schedulers
- Event-driven workflows
- Web scraping & ETL
- Idempotent sync
- Resumable jobs
Applications
- A statutory price disclosure published daily to a government registry, generated and uploaded without anyone opening a spreadsheet
- Migrating a legacy shop into WooCommerce by scraping the old catalogue, rebuilding variable products, and shipping the repair tooling alongside the import
- Long jobs split into resumable chunks with state in the database, so a timeout costs one chunk instead of the whole run
- Payment, invoice and licence key issued on one webhook, idempotently — a repeated notification charges nobody twice and the order closes without a human
- Recurring donations and subscription renewals running on their own, including the invoice after every successful charge
- A licence walking itself through active → grace → read-only, with a beacon showing which installations are still alive
- An adoption sync queue built on post metadata: batches, a configurable schedule and a screen listing whatever has not synced yet
- Three configurable daily jobs generating the open-data files, with every price change landing in the history by itself
- Bulk operations across hundreds of pages as asynchronous jobs the panel polls for, instead of a request held open until a gateway kills it
- Medication reminders computed in the owner's own time zone and sent without anyone scheduling them
- Product catalogues filled by scraping, so a shop launches with real data instead of an empty database
- A 404 monitor that turns broken links into redirects instead of waiting for someone to report them
How I build
From business problem to working product
The same seven steps every time. AI is step six, not step one — that ordering is the whole point.
01
Understand the business problem
Before any technical decision: what does this cost today, who feels it, and what does 'solved' look like in numbers.
Selected projects
Systems I designed and shipped
I designed and built every one of these myself. Each card opens into the problem, the architecture and the decisions behind it.
6 projects
Ask my CV
Interrogate my experience directly
Deliberately built without a language model. Answers are assembled from a curated knowledge base, so there is nothing here that could invent a credential — on a CV, one hallucination costs the interview.
Match me to your role
Paste your job description
You get the requirements I actually have evidence for, the requirements I do not, and the reasoning for each. No single score — a percentage would say less than the list below it.
Experience
What the years since 2006 went into
Recent roles in full, earlier ones condensed.
- Built agents that call tools on real business systems, scoped by database policies rather than by prompt
- Put authorization in the database rather than in client code — row level security on every table, and AI tools called on the user's own token
- Built cost control for AI before it was needed: per-model pricing, a monthly spend ceiling and a usage log
- TypeScript
- Next.js
- Anthropic API
- OpenAI API
- Supabase
- PostgreSQL
- Wrote and maintain 12 commercial WordPress plugins, each with licensing, its own update channel and release discipline
- Built four SaaS products sharing one identity and billing layer, so a single account works across the family
- Integrated the external systems my clients run on: Stripe, PayU, Przelewy24, wFirma, Fakturownia, inFakt, KSeF, InPost and Apaczka pickup points, and the dane.gov.pl registry
- Designed a plugin an organisation installs itself and connects to the platform with its own key — running at KTOZ Kraków and Fundacja MEDOR among others
- Grow a live product's schema through versioned migrations — 231 consecutive steps without dropping the database
- Built client sites hands-on from the start, and trained the developers who joined the team rather than only managing them
- Ran sales and key accounts alongside the code — which is where the habit of starting from the business problem comes from
- PHP
- JavaScript
- TypeScript
- MySQL
- PostgreSQL
- WordPress plugin development
- Roots Bedrock
- REST
- Git
- Represent the foundation, raise funds for its statutory activity and manage its operations
- The work here is where the product requirements come from — I am my own most demanding user
- Led sales and managed the team and its projects
- Ran webinars and worked on the agency brand
- Elected to lead a national organisation and represent it at international events
Graphic Designer
OTCF / 4F07.2015 — 01.2016Graphic design and DTP, from printed materials to large-format graphics, plus work on e-commerce sites, events and advertising materials.
Web Developer & Graphic Designer
MK Group04.2014 — 07.2014Graphic design and web development.
DTP / Graphic Designer
Artpress04.2013 — 11.2013Graphic design, web development, DTP, brand identity, marketing activities and client relations.
- Wrote my own CMS and delivered it to clients; sites running on it are still online today, years later
- Built the first version of eAdopcje: sites with an adoption management panel for a dozen or more foundations and shelters, with user accounts and animal records — before responsive design existed
- Thousands of dogs found new homes through it
Technology
What I know, and how well
No percentages and no progress bars — those are invented numbers. Every item carries an evidence level instead, gaps included.
Evidence map
Select a level to filter the list below.
72 skills
Languages
- TypeScript · Strong
- JavaScript · Strong
- PHP · Strong
12 commercial WordPress plugins, 8.1+, strict types, PSR-4
- SQL · Strong
- Python · Limited
One production tool: public-data harvesting and validation
- Go · No evidence
- Java · No evidence
- C# · No evidence
Frontend
- React · Strong
- Next.js · Strong
- Tailwind CSS · Strong
- HTML & CSS · Strong
- Vite · Strong
- React Native · No evidence
Backend
- Node.js · Strong
- REST API design · Strong
- Deno · Working
21 Supabase Edge Functions in one product
- Queues & background jobs · Working
Cron, scheduled events and resumable chunked processing — no external broker
- Laravel · No evidence
- GraphQL · No evidence
Databases
- PostgreSQL · Strong
- MySQL · Strong
- Supabase · Strong
Postgres, Auth, Storage, Edge Functions — and row level security on every table
- Row Level Security · Strong
Authorization enforced in the database, not in client code
- SQLite · Working
- Redis · No evidence
- Vector databases · No evidence
APIs & Integrations
- REST · Strong
- Webhooks · Strong
Signature verification, idempotency and a reconciler for missed deliveries
- OAuth 2.0 · Strong
- Authentication & authorization · Strong
Two-factor login, API tokens compared in constant time, database-level policies
- Two-way system sync · Strong
Queue, loop protection, stable identifiers across retries, sandbox mode
- Web scraping & ETL · Strong
- OpenAPI · No evidence
- gRPC · No evidence
Payments & invoicing
- Stripe · Strong
- PayU · Strong
- Przelewy24 · Strong
- wFirma · Strong
- Fakturownia · Strong
- inFakt · Strong
- KSeF · Limited
Handled through the invoicing provider, not integrated directly
AI
- Anthropic API · Strong
Tool use scoped by database policies, not by prompt
- AI agents · Strong
Tool calling against real business systems, scoped by database policies
- Prompt engineering · Strong
- AI-assisted development · Strong
How I work daily — it is also how I get productive in an unfamiliar stack quickly
- RAG · Working
RedAgent's consultant: lexical retrieval before every turn, citations verified server-side, refusal below the relevance threshold
- LLM cost control · Strong
Per-model pricing, monthly spend ceiling, usage log
- OpenAI API · Working
Image generation and editing
- LangGraph · No evidence
- Model training · No evidence
I integrate models, I do not train them
Automation
- Cron & schedulers · Strong
- Event-driven workflows · Strong
- Idempotent sync · Strong
Repeated runs cannot duplicate or reverse a completed record
- n8n · No evidence
I write automation in code rather than in a no-code tool
- Make · No evidence
- Zapier · No evidence
- RPA platforms · No evidence
UiPath and similar — I automate in code, not on an RPA platform
WordPress
- WordPress plugin development · Strong
12 commercial plugins with licensing, update channel and release discipline
- WooCommerce · Strong
- Roots Bedrock · Strong
- ACF Pro · Strong
- WP-CLI · Working
Infrastructure
- Git · Strong
- PowerShell · Working
Daily shell on Windows; scripting where a one-off job is faster than a tool
- Netlify · Strong
- Vercel · Limited
This site only — production work runs on Netlify
- Automated tests · Limited
One hand-written suite for a licence state machine; no runner, no pipeline
- CI/CD · No evidence
- Docker · No evidence
- Kubernetes · No evidence
- AWS · No evidence
Why work with me
Five things you can hold me to
- 01
I start from the business problem, not the technology
In my own agency I ran sales and talked to clients about money in parallel with writing the code — nobody ever handed me a finished specification. So my first question is what this costs you today, not what we will write it in. If a spreadsheet solves it, I will say so.
- 02
MVP in a day, or a product that holds up for years
DlaStrzelca went from an empty repository to a deployed app with accounts and an admin panel in one day. Twelve commercial plugins and several SaaS products are the other side of the same skill — licensing, an update channel and releases maintained for years. I can test an idea in a day, and I can then carry it to a product.
- 03
I build with AI — I do not bolt a model onto everything
With AI I do in a day what used to take me a week, and part of this list exists because of that. Wiring a model into the product itself is a different matter — I do that only where ordinary code cannot cope: reading a vet's visit note from a photo, an agent calling tools on real systems. Everything else runs on ordinary code, because it is cheaper, faster and cannot invent anything. This CV has no model in it either — and that was a decision, not a shortcut.
- 04
I build for the night the system breaks
A payment notification sent twice does not charge the customer twice. When one never arrives, the system asks the provider itself instead of waiting for a complaint. That is the difference between a demo and something you can leave running over a weekend.
- 05
I tell you what I cannot do
The technology section on this page marks 20 entries as no evidence, openly. You do not have to take my word for the rest either — every claim points at something you can check.
Hiring? Get in touch.
Tell me what you are looking for and I will answer plainly whether it is a role for me. If I am not the right person, I will say so.
Kraków, Poland · CET (UTC+1) · Available now · B2B