Tomasznow

I build web products end to end. Lately, with LLMs inside them.

10+ years of building interfaces and applications with React, Next.js, TypeScript and Node.js. My latest product, Splitshape, uses a deterministic pacing engine for the numbers and Claude for the narrative, because knowing where AI belongs is half the job.

Featured project

Splitshape

Pacing and fueling plans for real race courses.

The problem

Even splits fail on real courses. Generic pacing tools adjust for elevation at best and ignore race-day weather, wind relative to the course heading, and the late-race fade.

What I built

A free web app for marathons and half marathons that turns a race course, a goal time and a recent result into a km-by-km pacing and fueling plan with coach-style notes. Built solo, end to end.

Built for my own sub-3 marathon attempt (current PB 3:02). I'm user #1.

680+ unique visitors and 90+ generated plans since going live in Aug 2026. A plan narrative costs about USD 0.05, median generation time 18 s. 1,500+ automated tests.

Next.js 15TypeScriptZodTailwind CSSSupabaseVercelClaude APInext-intlOpen-MeteoResend

Where AI is used, and where it isn't

<Engine />

The numbers: deterministic

  • The numbers come from the deterministic engine, tested against reference fixtures from courses I've raced (e.g. Warsaw).
  • An LLM should never invent a split.

<Claude />

The narrative: LLM

  • Claude (Sonnet) writes the segment-by-segment race narrative from the engine's numbers, in the user's language. It explains the numbers and never computes them.
  • Structured output with Zod, validators that check every pace and time in the text, one targeted repair call and a fallback on failure.
  • Model choice: Claude Sonnet, picked after measuring latency, cost and rejected outputs.
  • Race calendar: Claude Haiku reads race dates from official race sites, and only dates confirmed by a verbatim quote from the source are saved.

Career

Experience

Jul 2026 – Present

Creator & Full‑Stack Developer – Splitshape (own product)

  • Designed, built and launched a free pacing and fueling plan app for marathons and half marathons, solo: from market research and UX to code, infrastructure and launch.
  • A deterministic TypeScript engine computes every number, and Claude (Anthropic API) only explains them, with Zod structured output and validators that check every pace and time.
  • 680+ unique visitors and 90+ generated plans since going live in Aug 2026.
Read the case study →

Oct 2026 – Present

Freelance Full‑Stack Developer – TECODE (B2B)

  • Building, solo and full-stack, a web service for a primary care clinic. Patients register online and submit a doctor and nurse selection declaration signed with Profil Zaufany (Polish e-ID), and staff handle submissions in an admin panel.
  • Next.js (App Router) and TypeScript (strict) in a single monolith, Zod schemas shared between front-end and back-end, React Hook Form, PostgreSQL with Prisma.
  • Declarations go into PDF templates (pdf-lib) and reach the clinic over SFTP. Deployed with Docker Compose on a Hetzner server (Caddy, ClamAV, CrowdSec). Tests in Vitest and Playwright (e2e).

Mar 2026 – Jul 2026

AI engineering: learning and own projects

  • Courses (Udemy): Complete AI Engineer Training; AI Engineer Agentic Track: The Complete Agent & MCP Course; AI Engineer Core Track: LLM Engineering, RAG, QLoRA, Agents.
  • job-search-mcp: an MCP server in TypeScript that lets Claude search justjoin.it job listings, fetch posting details and track application status.
  • Ask My CV (ragsume): a Next.js RAG app that answers questions about my experience from my CV, project write-ups and blog posts, with sources and retrieval evaluated on a set of test questions.
  • Technical blog: RAG, building an MCP server, agentic workflows, QLoRA, working in Claude Code.

Jan 2023 – Jan 2026

Full‑Stack Developer – Be truly LOCAL (B2B contract)

  • US startup, remote. An app that lets local businesses compete with big retailers through location-based promotions and a rewards program.
  • Moved the internal business platform (the tool merchants use to create and publish promotions) from a legacy WordPress setup to a React, Vite and TypeScript app, making most front-end architecture decisions myself.
  • Built a reusable component library, improved responsiveness, and optimized rendering and bundle size. The new UI was noticeably faster.
  • Also wrote back-end code (Node.js, MongoDB, AWS S3), including work on generating promotion copy with the OpenAI API from what merchants entered.
  • In a 9-person team, implemented designs straight from the designer, agreed REST API contracts with the back-end developer and handed features to QA myself. Took part in planning, estimation and code review, and wrote unit and integration tests.

Feb 2019 – Dec 2022

Front‑End Developer – T‑Create, Lublin (B2B contract)

  • Gamified sales-engagement tools for FMCG, including a multi-year project for an international manufacturer: sales reps compete in a mobile app on real sales targets.
  • Developed the admin panel the business team uses to configure the whole game (content, rules, rewards, player data). Worked in React, Vue and TypeScript from Figma designs, in an 8-person team.
  • Under a fixed production deadline, built a drag-and-drop editor for assembling pages from predefined blocks. A schema-driven architecture (a contract, lifecycle and validation for each block) meant new block types needed no changes to the core.
  • Focused Jest and React Testing Library tests on the highest-risk areas (block serialization, publishing). Owned the Bitbucket CI/CD pipeline from build to production.

Nov 2015 – Jan 2019

Front‑End Developer / UX Designer – News Hub Media

  • Turned UX flows into interactive prototypes and production components (React, Vue, TypeScript), worked with QA and back-end engineers on content publishing, and mentored junior developers (component architecture, CSS).

May 2014 – Nov 2015

Graphic / Web Designer – P4T (play for trade)

  • Websites and print design.

Skills

Building modern digital products across the stack.

From polished interfaces to APIs, data and LLM integration, plus the AI-native workflow I use to ship all of it.

10+Years experience
ProductFrontend & UX
Full-stackAPIs & data
LLMsInside real products

Front-end

Interfaces users actually finish flows in

TypeScriptJavaScript (ES6+)ReactNext.js (App Router)ViteTailwind CSSReact Hook FormVueHTML5CSS3i18n (next-intl)

Back-end & data

APIs, data and the plumbing around them

Node.jsExpressREST APIsZodPostgreSQLPrismaSupabaseMongoDBStripe

Testing & quality

Tests where the risk is

VitestJestReact Testing LibraryPlaywrightESLintPrettier

Cloud & DevOps

From branch to production

VercelDocker / Docker ComposeHetznerAWS S3CI/CD (Bitbucket, GitHub Actions)

Tools & process

How the work gets planned and shipped

GitGitHubGitLabJiraFigmaAgile/Scrum

AI & LLM

LLMs inside products, with guardrails around them

Anthropic API (Claude Sonnet, Haiku)OpenAI APIStructured outputs (Zod)Model output validationModel choice by measured latency and costCost telemetryMCP (building servers)Tool / function callingAgentic workflowsRAGChunkingEmbeddingsVector searchRetrieval evaluationClaude Code (CLAUDE.md, slash commands, subagents, hooks)Python (from coursework)LangChain (from coursework)Hugging Face Transformers (from coursework)Fine-tuning QLoRA (from coursework)

Side projects

Smaller builds, to learn RAG and MCP from the inside.

Personal learning projects, not commercial work, but real code you can read.

job-search-mcp

Personal project

An MCP server in TypeScript that lets Claude search justjoin.it job listings, fetch posting details and track application status.

MCPTypeScriptTool calling

Ask My CV (ragsume)

Personal project (live)

RAG over my CV, project write-ups and blog posts. Voyage AI embeddings and similarity search, Claude answers with sources in structured output, and retrieval is evaluated on a set of test questions.

RAGEmbeddingsStructured outputRetrieval evaluation

Currently deepening: agents, RAG, MCP.

Recent courses (Udemy):

  • Complete AI Engineer Training: Python, NLP, Transformers, LLMs, LangChain, Hugging Face
  • AI Engineer Agentic Track: The Complete Agent & MCP Course
  • AI Engineer Core Track: LLM Engineering, RAG, QLoRA, Agents

Beyond Work

Running marathons. Exploring continents. Chasing experiences.

Outside engineering I’m usually somewhere between a marathon start line, an airport gate and a local food spot in a city I’ve never seen before.

3149.7 kmRun this year
≈ 11.7× Mount EverestElevation climbed
≈ 394× marathonDistance run
22/30Days run (last 30)

Distance and elevation totals reflect Strava data since Jan 2022.

Running

Synced from Strava
5K18:26
10K37:59
Half Marathon1:22:15
Marathon3:02:05
Current focus

Chasing sub 3:00 marathon. Dreaming of completing all World Marathon Majors.

My Travel Map

16 countries visited

Contact

Looking for full-stack or front-end leaning JavaScript / TypeScript roles where AI is part of the product or the workflow. Remote. Employment or B2B.

info[at]tecode[dot]pl