Kaupo Kõrv

Tallinn, Estonia

Design engineer

I design product interfaces and ship the production code behind them. I’ve done both since the early 2000s. I co-founded TaxScouts, acquired by Taxfix in 2024, and ran a digital design studio before that. Now I build with agents.

Open for a hands-on IC role · from November 2026 · Remote

  1. How I build
  2. TaxScouts → Taxfix
  3. Now: The dad lab
  4. The studio, and before
Since 2000

How I build

The past year redefined how I work. Ideas can be turned into working prototypes in minutes, so I spend less time in Figma and more time in the browser now.

I’ve always coded my own designs, since the early 2000s, from <table> layouts all the way to modern React. Often refining them in the browser, where you can really feel the interaction and if something makes sense or not. The same approach, but now with zero delay.

What hasn’t changed is that someone has to decide what’s worth building and how it should feel. If anything that’s more of the job than it was. The agents write code much better than they design interfaces. This is where most of my decisions go.

Designer first, but never stopped at that. Full stack product builder from back-end to marketing analytics when the project needs it.

After years of leading, I want to spend my time making things again.

Design
Product, interaction, design systems, accessibility · Figma, Storybook
Build
React, TypeScript, Next.js, Styled Components, Tailwind, Expo, monorepos
Data
PostHog, Google Tag Manager
Agents
Claude Code, Claude API, MCP, Playwright, skills and workflows on Linear
2017–2026

TaxScouts → Taxfix

Co-founder · CPO/CDO · Lead Designer & Lead Frontend Engineer

I co-founded TaxScouts in 2017 with Mart Abramov and Daniel Karger, and was its CDO and CPO. It was a London company, whilst I ran our smaller Tallinn office. The customer side was a UX problem. We had to get ordinary people started with something they dreaded and get them to trust us with their data.

In the UK we did annual self-assessment returns. Later in Spain we served the self-employed from day one, with quarterly filings on a subscription. For them we built our own bookkeeping platform. We were about 50 people at peak. I led and hired for product, design and engineering, and for most of those years I was also the lead designer and lead frontend engineer.

Taxfix acquired us in 2024. Continued building the product under the TaxScouts brand until its rebrand in late 2025.

TaxScouts 2017–2026

Designing for people who don’t have the answers

One decision shaped the whole flow: the customer didn’t have to get it right themselves. You skip what you can’t answer, fill in what you know, and the accountant you’re matched with fills in the rest.

The income sources step, one of five: a checkbox list — self-employed (checked), capital gains or losses, pensions and benefits, dividends and interest, foreign income or residence, other sources — each with a plain-language line under it and a question-mark button
Step 1 of 5 · each income source has a plain line saying what it covers.
The income sources step, one of five: a checkbox list — self-employed (checked), capital gains or losses, pensions and benefits, dividends and interest, foreign income or residence, other sources — each with a plain-language line under it and a question-mark button
Step 1 of 5 · each income source has a plain line saying what it covers.

A few plain questions at a time, in a domain where the default has always been forms all the way down. The match shows who your accountant is, and why, before you pay. A question became required only once the accountants showed it was needed.

The Taxfix overview: a card offering to start the 2025/26 return, the 2023/24 return in progress with one lit step, Continue answering questions, above four greyed steps, and below them the tax consultation and bundle offers
The return in progress · the customer’s current step is highlighted, and the four after it are greyed out.
The questions page of the property section: the mortgage-interest question answered with a question mark, and the next question, other expenses from property rental, open with a £ field, a Not sure button and Next
The skip · choosing “Not sure” leaves a question mark, and that’s how the question reaches the accountant.
The Taxfix overview: a card offering to start the 2025/26 return, the 2023/24 return in progress with one lit step, Continue answering questions, above four greyed steps, and below them the tax consultation and bundle offers
The return in progress · the customer’s current step is highlighted, and the four after it are greyed out.
The questions page of the property section: the mortgage-interest question answered with a question mark, and the next question, other expenses from property rental, open with a £ field, a Not sure button and Next
The skip · choosing “Not sure” leaves a question mark, and that’s how the question reaches the accountant.

On the other side, we wanted the accountants to spend their time on the tax itself, so we automated the busy work around it: onboarding, identity checks, payments, importing the customer’s data. They worked from an inbox-style task manager we built. Each return was an item, and its status drove what happened next.

The accountant side of TaxScouts: a client's 2021/22 tax return with status Info requested, the income and tax figures, the return and calculation files, income sources listed with a question mark where the customer skipped the answer, and a client sidebar with company details and the status of each year
The accountant’s side · the same return, with a question mark where the customer skipped.
The accountant side of TaxScouts: a client's 2021/22 tax return with status Info requested, the income and tax figures, the return and calculation files, income sources listed with a question mark where the customer skipped the answer, and a client sidebar with company details and the status of each year
The accountant’s side · the same return, with a question mark where the customer skipped.

Scouts UI

I set up our design system that ran both markets’ apps from 2020, with 80-odd components and up to 10 contributors. The recurring argument was how much to precompose. Juniors wanted templates, seniors wanted the parts. I went with composability.

Design review was never a release gate. My feedback came in code review.

When Taxfix rebranded us, the new brand rolled out on the live product while tens of thousands of people were using it.

The accountant match in TaxScouts’ colours: the TaxScouts by Taxfix logo, a 2024/25 Your accountant selector, All done with questions ticked, a pale blue card with the accountant’s photo and View profile, the price £126.75 with £169 struck through, an I agree with the terms checkbox, a black Pay & Get It Done button, a white Add a consultation call button, a referral discount line and the Trustpilot 4.8 rating
The same accountant match after the rebrand: the Taxfix logo with a TaxScouts is now Taxfix badge, the same selector and card now on warm grey, headings in Taxfix’s serif-flavoured type, the same price and terms checkbox, a light green Pay & get it done button and a paler green Add a consultation call button, the referral line and the Trustpilot rating
The same screen before and after the rebrand · drag to compare. About 80% of the change was tokens.

Two countries, one codebase

Spain started as a duplicate of the UK app, adapted to Spanish law. Later I moved the frontends into one monorepo, still as two apps, sharing the tooling, the design system and above all bookkeeping, built once with per-country configuration. In Spain an issued invoice can’t be edited, only corrected, so a correction sits under the original and the totals count the whole chain.

The Spanish bookkeeping product: an invoice list grouped by quarter, with corrections indented under the invoices they correct, reviewed rows marked Revisado and locked, and a banner saying one invoice is missing information
The Spanish bookkeeping product · corrections sit under the invoices they correct.
The Spanish bookkeeping product: an invoice list grouped by quarter, with corrections indented under the invoices they correct, reviewed rows marked Revisado and locked, and a banner saying one invoice is missing information
The Spanish bookkeeping product · corrections sit under the invoices they correct.

Customers in Spain kept asking for a mobile app, so I built one for both markets with Expo and React Native wrapping the web app. Not ideal, but for one person with a deadline it was the right call. Months after I left, most Spanish mobile sessions went through it.

Growth Scout Jan–Mar 2026

Growth Scout is an AI growth analyst I built on my own initiative in my last three months at Taxfix. It writes the Spanish business’s monthly growth report and answers questions in Slack.

Nobody owned why a number moved. Marketing had the channels, product the funnel, ops the service. Growth Scout connects them, retention first and channel spend last, and ends every report in actions with owners.

It’s built on one rule: the model explains the numbers but never invents them. Code computes every figure from PostHog, Snowflake, Intercom, NPS surveys and public reviews. The model writes on top, reading the business context the team keeps in Notion, and an adversarial pass tries to knock the top claims down before anything publishes.

A Slack post from Growth Scout under the headings “What happened” and “Why this matters”: a colleague, name blacked out, had challenged its lifetime-value figure; the system explains that its LTV counts gross revenue while his framework uses contribution margin, that both numbers are correct because they answer different questions, that the industry 3:1 LTV:CAC benchmark already assumes margin, and that it will make contribution-margin LTV the primary decision metric. Every euro figure and ratio is blacked out
Challenged on LTV · once shown it had counted gross revenue, it kept both and made the margin version the decision metric.
A Slack post from Growth Scout under the headings “What happened” and “Why this matters”: a colleague, name blacked out, had challenged its lifetime-value figure; the system explains that its LTV counts gross revenue while his framework uses contribution margin, that both numbers are correct because they answer different questions, that the industry 3:1 LTV:CAC benchmark already assumes margin, and that it will make contribution-margin LTV the primary decision metric. Every euro figure and ratio is blacked out
Challenged on LTV · once shown it had counted gross revenue, it kept both and made the margin version the decision metric.
A representative Growth Scout report with synthetic figures: the growth headline answering whether a record signup month should raise paid search spend, a decision map with a fix, a cut and an amplify row each sized and owned, and the stress-test verdicts that overturned the record-month claim and weakened the channel-profitability one
A representative report, synthetic figures in the real shape · the question, the evidence, the decision map and the stress-test verdicts.
A representative Growth Scout report with synthetic figures: the growth headline answering whether a record signup month should raise paid search spend, a decision map with a fix, a cut and an amplify row each sized and owned, and the stress-test verdicts that overturned the record-month claim and weakened the channel-profitability one
A representative report, synthetic figures in the real shape · the question, the evidence, the decision map and the stress-test verdicts.

Under it is a system built to be trusted: typed contracts between the pipeline stages, CI, and a check of every number in a report against its source before anything publishes. I built it in three months with a coding agent and handed it to a colleague who was already contributing.

2026–

Now: The dad lab

I’ve taken deliberate time off from work this year, as we welcomed our second daughter in April.

But the tinkering continued. And the agentic shift is exactly what allowed me to continue building and experimenting when hours were limited.

I’ve mostly spent time on two projects with different goals: a real app built from the ground up, end-to-end, through a fully agentic approach – to really see and learn what is possible, and my personal life assistant that now runs the majority of our household admin and beyond.

Wobblepot

I wanted to learn what building a product AI-first takes, with the aim of shipping something real. Instead of a todo app, I picked something small but real, rooted in our own family problem.

Wobblepot is a family meal planning app. There’s no plan for it to become a startup though.

The build is agentic. Product decisions are a two-way dialogue rooted in comprehensive context. The work is tracked in Linear, and I set up the skills that ideate, plan, implement, review and audit the build.

Terminal with two panes: on the left a Claude Code session laying out interface calls for Wobblepot's mobile navigation, hamburger against person icon and a Household-for-Pantry tab swap, my reply of five words, agree, swap, agree, and the three Linear issues it then wrote; on the right the orchestrator's status: three of three workers busy, 49 merged and none failed in this run, two issues in PR review with CI green and pending and one being implemented, the pull requests merged in the last hour, and a live log of each worker's steps
Wobblepot’s orchestrator, 23 September 2026 · the agent stops at three navigation decisions and leaves them to me.
Terminal with two panes: on the left a Claude Code session laying out interface calls for Wobblepot's mobile navigation, hamburger against person icon and a Household-for-Pantry tab swap, my reply of five words, agree, swap, agree, and the three Linear issues it then wrote; on the right the orchestrator's status: three of three workers busy, 49 merged and none failed in this run, two issues in PR review with CI green and pending and one being implemented, the pull requests merged in the last hour, and a live log of each worker's steps
Wobblepot’s orchestrator, 23 September 2026 · the agent stops at three navigation decisions and leaves them to me.
Wobblepot’s meal plan: today’s breakfast, a smoked salmon bagel, with 5 ingredients to buy, and dinner, a vegetable stir-fry, with 8; tomorrow’s shakshuka for one with 7 and a button to add a dinner, Saturday’s cheese toastie below; beside them a shopping list split into today and tomorrow, each ingredient with its amount, ending on plus 12 more for the next 5 days
The meal plan · each meal shows how many ingredients are still to buy.
Wobblepot’s meal plan: today’s breakfast, a smoked salmon bagel, with 5 ingredients to buy, and dinner, a vegetable stir-fry, with 8; tomorrow’s shakshuka for one with 7 and a button to add a dinner, Saturday’s cheese toastie below; beside them a shopping list split into today and tomorrow, each ingredient with its amount, ending on plus 12 more for the next 5 days
The meal plan · each meal shows how many ingredients are still to buy.
A Wobblepot recipe, salmon Caesar salad, open over the plan: 20 minutes, serves 2.5, five ingredients with salmon fillet and bread ticked and parmesan, mayonnaise and romaine lettuce in orange as the 3 to buy, 742 kcal per serving with a protein, carbs and fat bar and a note that nutrition values are estimates; on the right the plate, a You’ll need list of five tools each with an Ask button, and the first step, heat the oven to 200°C and cut the bread into 2cm cubes, highlighted
The cook view · what’s in the pantry is ticked, and what’s still to buy is orange.
Wobblepot’s front page: the headline Dinner, decided. For the whole week., a line on meals planned around your family, your allergies and your pantry with one shopping list, a Plan this week’s dinners button, the private-beta invite line, and Free while we’re in beta, No ads, Your data stays in the EU; below, Friday’s dinner, baked salmon with asparagus, as a card between a bacon egg sandwich and a beef stir-fry, and a This week row from Monday to Sunday with Friday highlighted
The front page · sign-up needs an invite code.
A Wobblepot recipe, salmon Caesar salad, open over the plan: 20 minutes, serves 2.5, five ingredients with salmon fillet and bread ticked and parmesan, mayonnaise and romaine lettuce in orange as the 3 to buy, 742 kcal per serving with a protein, carbs and fat bar and a note that nutrition values are estimates; on the right the plate, a You’ll need list of five tools each with an Ask button, and the first step, heat the oven to 200°C and cut the bread into 2cm cubes, highlighted
The cook view · what’s in the pantry is ticked, and what’s still to buy is orange.
Wobblepot’s front page: the headline Dinner, decided. For the whole week., a line on meals planned around your family, your allergies and your pantry with one shopping list, a Plan this week’s dinners button, the private-beta invite line, and Free while we’re in beta, No ads, Your data stays in the EU; below, Friday’s dinner, baked salmon with asparagus, as a card between a bacon egg sandwich and a beef stir-fry, and a This week row from Monday to Sunday with Friday highlighted
The front page · sign-up needs an invite code.

Half of the experiment is figuring out where LLMs can be trusted, and where they need hard guardrails. Allergens are one of the hard ones. They’re filtered out in the database before the model sees a recipe, and the model then picks from what’s left, for variety and balance.

The repo I run my life from

My life assistant is one git repo I work in with a coding agent, at the desk or from my phone. Eleven areas, from the household and a renovation to health, money and the kids’ routines.

The question that has kept me busy recently is what it may do without me. It reads my mail, calendar, bank, wearables and the smart homes in two houses, but it can’t send mail or push the repo anywhere, and personal data doesn’t go to services that aren’t mine. A background worker runs on regular intervals. It tracks the replies I’m waiting on, sorts new mail and messages to their areas, and flags plans that clash with the calendar. Anything that moves money, commits my time or speaks in my name, it prepares and leaves to me. The rest it does as a commit I can undo with one command. When it gets something wrong, the lesson becomes a written rule.

On our A-frame renovation, the project lead runs a second agent, and the two work one shared Notion space from both sides. The repo is private and local, so there’s nothing to link, but I’m happy to talk about it.

2000–2020

The studio, and before

Haiku, the agencies, where it started at 14

Vigvam → Haiku 2010–2020

I started Vigvam in 2010 with partners and in 2014 I founded Haiku on my own. It ran alongside TaxScouts until 2020. I hired a small team for bandwidth and kept doing the work myself, from brand to code to client relationships. Much of it went out fully built or as a working prototype.

In 2014 Haiku spent half a year reworking Wise’s core send-money flow. Mart, who ran it on Wise’s side, became my TaxScouts co-founder three years later.

Haiku was Estonian Digital Agency of the Year in 2016.

Other clients included Toggl, Veriff, Pipedrive, MarketInvoice, Lingvist, Testlio, the Arvo Pärt Centre, Tallinn Music Week and e-Estonia. In 2016 I joined the team creating Estonia’s national brand, and designed and built brand.estonia.ee and estonia.ee.

The haiku.ee front page: Haiku was a design studio, in large type on grey, with the is struck through, and the menu Haiku, Studio, Work, Contact down the left
haiku.ee · the studio’s site, still up.
The Education technology compass case on haiku.ee: the title in large violet type on peach, the line Trends in technology linked to education, the roles Web design, Development, Illustrations, a Visit website link, Won Bronze Egg 2019 set vertically at the right, and a phone showing the site rising from the bottom edge
Education technology compass · design, build and illustrations · Bronze Egg 2019.

Before that 2000–2010

I started freelancing at 14. At 15 I built a social and chat platform. It spread through Estonian high schools before Facebook and got to more than 10,000 accounts. It ran on PHP and MySQL, with an IRC-based chat at its centre. Later I added an ad system I wrote myself. I sold it at 18 to a long-time client.

I dropped out of high school and moved to Tallinn in early 2005. I spent five years in agencies, first as a designer, then as art director. First Kolm Karu, then Zavod BBDO from 2007, then Plektrum in 2008. I kept programming for freelance clients on the side.

Tallinn, Estonia

Say hello

Open for a hands-on IC role from November 2026 · Remote