Victor LaperutaLead full-stack engineer · AI agents in production
Contact

Victor Laperuta

Lead full-stack engineer · São Paulo, Brazil

Open to lead and senior full-stack roles, remote.

victorlaperutademoura@gmail.com

Victor Laperuta

Lead full-stack engineer · São Paulo, Brazil

I build products from the first commit, keep them running in production, and took a team to LLM agents in production.

Six years at Dolado, from first engineering hire to Head of Technology, through four products built from zero.

Open to lead and senior full-stack roles, remote.

What I build with

TypeScript and Node, NestJS on the back, React and React Native in front, PostgreSQL and MySQL, AWS with Terraform, LangGraph and MCP when there is an agent in it.

Education: B.S. Computer Engineering, Insper, São Paulo, 2016 to 2021. Honours for the capstone: a mobile app for visualising an investment portfolio.

Courses: Tech Ethics: Critical Thinking in the Age of Apps, Algorithms, and AI (HarvardX, completed 2026); Digital Wellbeing (University of York, in progress).

Languages: Portuguese, native; English, fluent.

Marks
TypeScriptNode.jsNestJSReactRNReact NativePostgreSQLawsAWSTerraformLangGraphMCPModel Context Protocol
09:1211 de outubroWhatsApp

The app, and what was under it

Screens: home, regions, location, search, shop, product, checkout, payment method, card, login, signup.

React Native, Redux, OneSignal for push, geolocation for the shops near you.

Backend: Express on MySQL. Search with Algolia. Payments with Asaas, card and bank slip. SMS with Twilio. Photos on S3. Delivery through a courier API.

The link a shop shared on WhatsApp opened the same catalogue on the web.

Marks
RNReact NativeExpressMySQLAlAlgoliaAsAsaasTwTwilioOSOneSignalS3Amazon S3WhatsApp

Three things I would tell another CTO

Start flexible for discovery, add structure for reliability. The monolithic agent found the real needs; the specialised nodes made them dependable.

Adoption is organisational, not technical. What won it: the agent ran in parallel with the spreadsheets for weeks, so the analysts compared its results with their own and trusted it on their own terms. The reframing that held: the intelligence team stays the owner of the process and its quality; their role moves from manual execution to insight and the client; the agent is their tool.

Track usage to discover value. Discovery happens in production, not in planning.

Marks
LangGraphClaudeoaiOpenAI

The architecture

Four repositories: the API, the app, the site, the LLM and speech service. About a thousand commits in about two months.

API: NestJS, hexagonal (interfaces, domain, infrastructure), PostgreSQL, TypeORM, Redis, BullMQ, SSE, JWT, an MCP server.

Speech and models: LiteLLM in front of Anthropic, OpenAI, DeepSeek and Gemini, with Groq and a local Ollama as fallbacks; Kokoro and XTTS for speech; Whisper for the voice-set weekly goals; Docker Compose for all of it.

App: Expo, React Native, Tamagui, Zustand, Reanimated. Site: Next.js 15, React 19, Chakra UI v3, Playwright.

Quality: promptfoo evals gate every prompt change.

Every repository blocks a commit that fails the architecture read, the tests, or lint.

Marks
NestJSPostgreSQLMQBullMQRedisLLLiteLLMOllamaTTSKokoro TTSSTTWhisperXDockerExpoNext.jsChakra UIPwPlaywrightpfpromptfooLfLangfuse

The app

Human-in-the-loop pauses and visible tool calls while an episode is built.

The player shows the transcript as it is read.

Marks
ExpoRNReact NativeTgTamagui