Download PDF
Software Architect OPEN TO THE RIGHT ROLE · ITALY · REMOTE

PaoloOttana.

I'm a software architect with 23 years in engineering: first on a 3D parametric CAD product at Think3, then 16 at Balsamiq, fully remote. I joined as the second engineer and architected the core of Balsamiq Wireframes 4, the current version of our UI wireframing app, still shipping 10+ years on. Most recently I took our AI from prototype to production: the agent loop, MCP layer and evals behind a feature that serves around 800 conversations a day at peak.

View career ↓ paolo.ottana@gmail.com
Now
Software Architect · Balsamiq
Tenure
16 yrs
Career
23 yrs
Base
Italy · Remote
By the numbers

What the work added up to.

23yrs
engineering, across two careers
3
platforms shipped from one portable core
~800/day
AI interactions in production, at peak
10+yrs
the Balsamiq Wireframes v4 architecture still ships the product
Career

Two decades, one throughline.

Same engineer, two domains: a decade in C++ on a large CAD core, then product software at Balsamiq, moving fluidly from rendering to backend to AI, and owning systems end to end.

01
16 yrs
REMOTE · 2010 — 2026

Balsamiq

Software Architect
  1. 01Joined in 2010 as Software Engineer, the second engineer hired; promoted to Senior Software Engineer, then to Software Architect.
  2. 02Worked across the product in phases: first the commerce and licensing backend and the Atlassian integrations, then the Wireframes 4 rewrite and the macOS app, and most recently the AI stack, with the editor running through all of them. Now responsible for the product architecture in a fully remote team, working closely with product, design and user research. We plan in Shape Up cycles: I write pitches (problem, user value, use cases), we bet on them, and cut scope to fit six weeks.
Stack
LLMsGeminiMCPClaude CodeAI agentsAgent skillsLLM evalsElasticsearchObservabilityCodexTypeScriptJavaScriptCanvasskia-canvasNode.jsReactPlatform abstractionSVGCore AnimationSwiftmacOSCI/CDnpmPostHogFeature flagsA/B testingAWSEC2LinuxJavaAtlassian APIs
02
7 yrs
ITALY · 2003 — 2010

Think3

Software Engineer, History & Features
  1. 01Developed and maintained the parametric history and features core of a 3D CAD product in C++: a very large, long-lived codebase with annual releases planned a year ahead and customer models that had to survive every change.
  2. 02Trained the Bangalore team on the history-and-features architecture on site, as part of a several-hundred-engineer organisation spread across Bologna, Pesaro and Bangalore.
Stack
C++
Ownership

Work I've owned end to end.

Not a task list. Systems and decisions I drove from zero, most of them still in production.

ARCHITECTURE
No. 01

Balsamiq's AI, from prototype to production

As a core developer and architect, I designed and built the LLM backend behind Balsamiq's AI: the workflows, an MCP layer so the model can act on product data and core logic, guardrails on its output, and evals that measure prompt changes against a baseline.

~800/dayAI interactions in production, at peak
0/12 → 12/12first-try success on a hard edit case, before and after a measured prompt fix
LLMsGeminiMCPClaude CodeAI agentsAgent skillsLLM evals
BACKEND
No. 02

Automated triage of production runtime errors

Built automated triage for production runtime errors: each error lands in Elasticsearch, a first model classifies it, and a coding agent picks up the issue and drafts a fix (multi-model LLM pipeline).

LLMsAI agentsElasticsearchObservability
ENGINEERING PRACTICE
No. 03

Migrated 80+ control classes to TypeScript with agent skills I wrote

Migrated 80+ editor UI control classes (about 45K lines) from JavaScript prototypes to a TypeScript hierarchy with Claude Code and agent skills I wrote, reviewing every change, with almost zero regressions.

I rebuilt the editor's UI "control" classes from old JS prototypes into a TypeScript hierarchy. I had to plan carefully, dig into the actual behaviors and use lots of testing. The AI gave me the rough power, I reviewed the output.

80+ classes, ~45K linesalmost zero regressions
Claude CodeCodexTypeScriptJavaScript
PERFORMANCE
No. 04

Rendering performance, client to server

Gave the AI stack eyes: built a headless rendering engine that draws PNGs from model files on the server with no browser, so AI edits render into logs and evals and finished wireframes appear in the agent chat via MCP (Node.js, skia-canvas).

Canvasskia-canvasNode.js
ARCHITECTURE
No. 05

Core architect of the Balsamiq Wireframes 4 rewrite

Architected the Balsamiq Wireframes 4 rewrite: about 80% of the code is shared across web, macOS and Windows, and the architecture still ships the product 10+ years on. A portable core model behind platform abstraction layers and a canvas rendering engine (JavaScript, SVG on web, Core Animation on macOS).

~80%of the code shared across web, macOS and Windows
10+ yrsstill shipping the product
TypeScriptJavaScriptReactPlatform abstractionSVGCore Animation
PLATFORM
No. 06

Built and ran Balsamiq's macOS app

Main developer of the macOS app, still sold 8+ years on, and owner of its remote build-and-release system (Swift, Core Animation).

8+ yrsmacOS app, still sold
SwiftCore AnimationmacOSCI/CD
ARCHITECTURE
No. 07

Real-time collaboration server for concurrent editing

Co-designed the real-time collaboration server: several people edit the same project at once while the shared state stays correct under concurrent edits, integrated into the editor through dedicated npm packages.

Node.jsnpm
FRONTEND
No. 08

Built the editor's snapping engine

Built the editor's infinite canvas and its layout aids: the snapping engine and smart arrows that attach to shapes and follow them.

~2.6K linesthe snapping subsystem, shipping since 2024
TypeScriptJavaScriptCanvas
FRONTEND
No. 09

Brought product analytics into the editor

Introduced product analytics to the editor so the team sees how people use it instead of guessing: built the analytics layer, 156 event capture sites across widgets, menus and the AI chat, and the feature flags the team's A/B experiments run on (TypeScript, PostHog).

156event capture sites in the editor today
PostHogTypeScriptFeature flagsA/B testing
BACKEND
No. 10

Built Balsamiq's e-commerce, billing, and licensing backend (Olio)

Built Olio, the commerce backend behind subscriptions and desktop licenses, handling up to $4M/yr from tens of thousands of customers: purchases, upgrades, invoicing, billing and license keys (Groovy, Grails, early AWS).

Up to $4M/yrin subscriptions & desktop licenses, tens of thousands of customers
AWSEC2Linux
INTEGRATIONS
No. 11

Owned Balsamiq's Atlassian integrations

Built and owned the Jira and Confluence integrations for three years, against the Atlassian APIs in Java.

3 yrsowned, Jira + Confluence
JavaAtlassian APIs
Skills index

What I reach for.

The stack across CAD, web, and cloud, plus the agentic-AI tools I'm building real workflows around now.

Languages

3 entries
  1. 01TypeScriptBalsamiq editor & core model, codebase-wide JS→TS migration
  2. 02JavaScriptPortable core model, Node.js services, tooling
  3. 03SwiftBalsamiq Wireframes macOS app (Core Animation)

Frameworks

6 entries
  1. 01Node.jsReal-time collaboration (RTC) server
  2. 02ReactBalsamiq Wireframes web shell
  3. 03MobXView-state management for the React UI, via the mobx-react bindings
  4. 04SVG & HTML CanvasWeb rendering of the editor canvas, Canvas-based client rendering pipeline
  5. 05skia-canvasHeadless rendering engine that draws PNGs from model files on the Node server
  6. 06Core AnimationHardware-accelerated macOS rendering

Databases

3 entries
  1. 01MySQLProduction AI backend persistence
  2. 02RedisCaching and fast state for the AI backend
  3. 03SQLiteBalsamiq Wireframes v4 editor document file format, embedded storage in the AI backend

Tools

6 entries
  1. 01AWSEarly Olio deployment (EC2, load balancers)
  2. 02CI/CDRemote build-and-release system for the macOS app
  3. 03GitHub ActionsBuilding shared libraries and publishing packages to a private npm registry
  4. 04PostHogProduct analytics in the Balsamiq editor, feature flags and A/B experiments
  5. 05Model Context Protocol (MCP)Tooling for production AI agents
  6. 06GeminiLLM powering the production AI backend

Practices

11 entries
  1. 01Agentic coding (Claude Code, Codex)Agentic coding, agent skills, MCP tooling, best practices
  2. 02Software architecturePortable cross-platform core, real-time systems, platform abstraction layers
  3. 03AI system designAgent architectures, Multi-model LLM pipelines, Production LLM backend design, Cost-optimized inference
  4. 04LLM agents & tool callingPrompt & agent-workflow design, Tool calling via MCP, Agent systems, Context retrieval via MCP (grounding on live product state), Evaluation & guardrails
  5. 05LLM evalsA/B eval harness that scores prompt changes against a baseline, LLM-judged image-to-wireframe eval
  6. 06RAG & hybrid retrievalariostea: local-first RAG over notes, embeddings + BM25 on sqlite-vec
  7. 07Distributed systemsReal-time collaboration server, concurrent multi-editor editing with archive consistency
  8. 08Graphics & rendering performanceClient rendering optimization, canvas rendering pipeline, Core Animation
  9. 09API design & integrationsAtlassian APIs, editor ↔ Cloud contracts
  10. 10Product analytics & A/B testingEvent instrumentation, usage tracking, feature-flag plumbing for A/B experiments
  11. 11Shape Up (pitches, betting, six-week cycles)Writing pitches with problem, user value and use cases, betting on them, six-week cycles with scope cut to fit the time box
How I work

Principles, not posture.

01

Clear and on the level

Be transparent, be clear. Most problems are miscommunication, not too little of it. Ambiguity and byzantine process are where trust goes to die.

02

Cross-functional partnership

Works hands-on alongside product, design, and user research, turning shared questions into shipped features.

03

AI-augmented engineering, without giving up control

I use AI every day and it makes the whole team faster, but I stay deliberate about it: the tools serve the goal, they don't replace judgment, and I don't chase every new one. Sometimes the right move is to switch the AI off and pair with a real person to get the feel back.

04

Learn-it-all over know-it-all

Things change fast, and plenty of it is momentary trend. What I know today is obsolete in months, so what's worth cultivating is the ability to learn: look at what's new with a balanced eye, drill into the details when that's what it takes. What sticks are the principles and the habit of learning, not the tools: I've worked in many languages over the years and never felt defined by any of them.

05

Team play, and a few hard-won principles

The real multiplier is the team, not the lone genius. I argue for the right call, then commit fully once it's made, even when it wasn't mine. "Easy" is mostly what we call the work we don't do ourselves, so I assume the thing I don't understand is harder than it looks. And when something keeps going wrong I look at the process before the people: heroics are a symptom.

06

Calm beats frantic

Sustainable pace over grind. I've been through high and low tides, and steady wins. Not everything is ASAP, and burning people out was never a smart plan. The deep, uninterrupted hours are where the real work happens, and I protect them.

07

Bias to action

When in doubt, do. I lean toward shipping and learning over deliberating, especially where friction is low and trying something is cheap.

08

Breadth over over-specialization

Broad by choice, not over-specialized: C++ CAD, product, commerce, real-time, rendering, AI. Range over narrow specialization.

09

Continuous improvement, beyond the code

Brings a kaizen mindset to everything, not just the codebase, treating how a company works (its culture, vision, and values) as things a team keeps iterating on together.

Open source

Built in the open.

Tools and explorations that started as scratch projects and turned into something worth sharing.

No. 01
flatmate ↗
paull78/flatmate

Collaborative 2D CAD editor for floor plans: live multi-user editing through a server that validates every change, a platform-neutral core shared by browser, tests and server, Canvas2D and WebGL2 renderers, and an MCP server so Claude draws as a third collaborator. TypeScript.

TypeScriptReactNode.jsWebSocketCanvas2DWebGL2MCPVitestPlaywright
No. 02
ariostea ↗
paull78/ariostea

Local-first RAG over Obsidian notes, exposed to AI agents as an MCP server: hybrid retrieval (embeddings + BM25) on sqlite-vec, fully offline. Python.

PythonMCPsqlite-vecfastembed
No. 03
skills ↗
paull78/skills

Agent skills for Claude Code and other coding agents: reusable workflows for agentic coding, also used at work.

Claude Code
Get in touch

Let's talk.

Based in Italy, currently employed and open to a genuinely compelling role. Email is the fastest way to reach me.

paolo.ottana@gmail.com →
What I'm looking for
  • Roles where product design, engineering, and real impact meet, hands-on, with room for technical ownership and architectural influence as a senior IC.
  • Environments that treat AI as a way to multiply a good team, adopted deliberately, with judgment and control.
  • Fully remote, based in Italy, building on a career spent largely in distributed teams.