Download PDF
Paolo Ottana
Software Architect & Staff Engineer
Italy · Open to fully remote
paolo.ottana@gmail.com
github.com/paull78
www.linkedin.com/in/paoloottana/

I've spent more than 20 years building software, and my focus has settled where everyday coding meets technical direction: the architecture, and the decisions we still live with years later.

The first decade was C++, in a 3D CAD engine. The rest is Balsamiq: product, infrastructure, developer experience, and lately AI.Most of the work now involves AI: in how we build, where I code with agents daily and contribute to the team's agent skills and best practices, so the speed never costs us control, and in the product, where we shipped a custom AI agent handling around 800 real conversations a day.I do my best work close to the product, owning the architecture. Fourteen years fully remote, well before it was the default, taught me to keep distributed teams engaged through long projects.
Experience
Senior Architect & Senior IC — Balsamiq
REMOTE · 2011–PRESENT
  • Joined as the second software engineer, when the company ran completely flat. Grew with it through every phase of its bootstrapped, profitable life, treating the company itself as a product and iterating on its culture, processes, and values with a kaizen mindset.
  • Senior architect and IC on Balsamiq's product, shipping across client rendering, server-side services, product features, AI agent design, and MCP.
  • Contributed to evolving the product operating model, a custom Shape Up (shaping, betting, fixed build/cooldown cycles) — and work inside it, writing pitches and running experiments for new developments.
  • Became the team's de facto architecture authority, setting technical direction that others build on, shaping the architecture of others' pitches through review, and coordinating frontend and backend groups on API definitions through to shipped features.
Software Engineer · Code Owner (History & Features) — Think3
ITALY · 2001–2011
  • Code owner of the history-and-features subsystem, the parametric modeling core, of one of Italy's reference 3D parametric CAD products.
  • Worked in C++ across a very large codebase: a single DLL of 60MB+.
  • Part of a several-hundred-engineer organization distributed across Bologna, Pesaro, and Bangalore.
  • Flew to Bangalore with the VP of Engineering to run a training session for the India team. It was a formative cross-site experience.
Selected Workat Balsamiq
Took 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, and guardrails on its output.
The image-to-wireframe workflow, which I first prototyped years before the current AI wave, is now the AI feature customers are happiest with.
LLMs · Gemini · MCP · Claude Code · AI agents · Agent skills
Automated triage of production runtime errors
Errors collect into Elasticsearch, then a two-stage, multi-model LLM pipeline takes over: one model triages each error, and a copilot agent picks up the issue and attempts a fix.
LLMs · AI agents · Elasticsearch · Observability
AI-augmented engineering practices and skills
Early adopter of agentic coding (Claude Code, Codex). I built a reusable body of AI "skills" shared across the team's repos: JS→TS conversion, test and comment review, PRD-to-task breakdown.
Claude Code · Codex · TypeScript
Rendering performance, end to end
Drove rendering performance end to end: client rendering optimization, a re-architected canvas rendering pipeline, and a headless rendering engine (skia-canvas) that generates PNGs from model files on the Node server, no browser needed.
Replaced the custom headless-Chromium build we maintained on AWS Lambda, and gave the AI stack eyes: it renders the outcome of AI edits into logs and evals, and draws finished wireframes directly in the agent chat via MCP.
Canvas · skia-canvas · Node.js
Core architect of the Balsamiq Wireframes 4 rewrite
Co-architected the Balsamiq Wireframes v4 rewrite: a portable vanilla-JS core model with platform abstraction layers, a platform-agnostic canvas rendering engine (SVG on web, native Core Animation on macOS), and modular native UI for each platform.
Shipped across web, macOS, and Windows; a decade on, that architecture still ships the product.
JavaScript · React · Platform abstraction · SVG · Core Animation
Built and ran Balsamiq's macOS app, end to end
I was the main developer of Balsamiq's macOS app (Swift and Core Animation), and I owned the remote build-and-release system that runs on the Mac machines.
The macOS app I built is still sold and in use today, 8+ years on.
Swift · Core Animation · macOS · CI/CD
Large-scale TypeScript migration of the Balsamiq Wireframes v4 codebase
Solo, I rebuilt 80+ UI "control" classes from JS prototypes into a full TypeScript class hierarchy — a ~100K-line subsystem — with almost zero regressions, and drove the codebase-wide JS→TS conversion.
TypeScript · JavaScript
Real-time collaboration server for concurrent editing
On the design team of the real-time collaboration server (Node.js): concurrent multi-editor editing with archive consistency, integrated through dedicated npm packages.
Node.js · npm
Skills
Languages
TypeScript, JavaScript, Swift, Java, C++
Frameworks
Node.js, React
Tools
Claude Code, Model Context Protocol (MCP), Gemini, Codex, AWS, Git, Linux, Playwright
Practice
AI System Design, LLM Engineering, Software architecture, AI-augmented engineering, Real-time & distributed systems, API design & integrations, Observability, Code review & technical mentorship, Applied ML / computer vision (pilot), Graphics & rendering performance, Large-scale refactoring & migration
How I Work
Clear and on the levelCross-functional partnershipAI-augmented engineering, without giving up controlLearn-it-all over know-it-allTeam play, and a few hard-won principlesCalm beats franticBias to actionBreadth over over-specializationContinuous improvement, beyond the code
Open Source
ariostea /paull78/ariostea
Local-first RAG over my Obsidian notes, exposed to AI agents as an MCP server: hybrid retrieval (multilingual embeddings + BM25, reciprocal-rank fusion) on sqlite-vec, fully offline.
skills /paull78/skills
Personal collection of Claude Code skills: reusable AI workflows and best practices for agentic coding.
claude-session-manager /paull78/claude-session-manager
Claude Code plugin to track and resume parallel development sessions across repo copies: auto-captured sessions, resume briefings, a cross-repo dashboard, knowledge search, and a web management UI.
morphogen /paull78/morphogen
A GPU learning playground: growth simulation in Zig where cells self-organize into branching, tree-like structures through local rules and volumetric raymarching.
Paolo Ottana — Software Architect & Staff Engineerpaolo.ottana@gmail.com