# André Marinho > Software engineer in Salvador, Brazil, with a background in business operations and data. Full-stack web products and open-source tools. André Marinho is a software engineer in Salvador, Brazil. His work spans full-stack client products and his own open-source projects, from product decisions to deployment and maintenance. He works on interfaces, APIs, data models, authentication, tenant isolation, payments and automated tests, with a focus on accessibility and performance. His background includes financial planning, logistics dashboards, business intelligence and digital strategy. He founded Duonorth in 2017, moved its focus toward websites and software in 2023, and made software product development his main occupation in July 2025. He is open to remote software engineering roles, including international teams. Portuguese is his native language, and he is fluent in English. Project cases explain his role, scope, decisions and available evidence, including links to public source code and technical notes. Client work may have an anonymized identity and reconstructed visuals; each case's Disclosure section explains what is illustrative. Team deliveries are distinguished from individual contributions. Measurements retain their scenario and limitations. ## Profile - [About André](https://andremarinho.me/about): Professional scope, background, and life outside code. - [Résumé](https://andremarinho.me/resume.pdf): Downloadable résumé in English (PDF). ## Full context - [Complete professional context](https://andremarinho.me/llms-full.txt): Public overview and complete published project cases and posts in one file. ## Projects - [Engineering Skills](https://andremarinho.me/projects/skills/index.md): Four open-source agent skills for engineering documentation, technical SEO, content review and web accessibility, with scoped sources and automated plugin releases. - [typed-svg-sprite](https://andremarinho.me/projects/typed-svg-sprite/index.md): A React SVG sprite reference implementation that generates icon names and symbols from one validated list, with a Node.js build step and a typed component API. - [create-mvp](https://andremarinho.me/projects/create-mvp/index.md): An open-source npm CLI I built to scaffold SaaS projects using the same foundation I use in production. - [LawFlow](https://andremarinho.me/projects/lawflow/index.md): A CRM I built from architecture to deployment for law firms to manage leads, follow-ups, proposals, and client acceptance. - [Anvil](https://andremarinho.me/projects/anvil/index.md): A browser IDE for working with an AI agent, inspecting its changes, and running the result in the same workspace. - [Northstar](https://andremarinho.me/projects/northstar/index.md): Product analytics for following user behavior through to revenue, conversion, and experiments, with the context behind each result. - [Kestrel](https://andremarinho.me/projects/kestrel/index.md): An agent for Outlook email and calendars, with controls over what it can do and which actions need approval. - [Turistar](https://andremarinho.me/projects/turistar/index.md): An open-source trip planner I built and maintain, with shared itineraries, maps, budgets, and real-time collaboration. ## Writing - [Designing agent skills around evidence and checks](https://andremarinho.me/posts/engineering-skills-evidence-and-checks/index.md): How I split engineering reviews into four agent skills, kept source authority explicit, and separated packaging tests from checks of agent behavior. - [A shared demo account without a reset scheduler](https://andremarinho.me/posts/shared-demo-without-reset-scheduler/index.md): How Turistar lets visitors use the real product through a shared account, restores its examples on dashboard entry, and keeps reset rules in PostgreSQL. - [Keeping drag-and-drop stable during realtime updates](https://andremarinho.me/posts/drag-and-drop-with-realtime/index.md): How Turistar separated drag previews from persistence, what a seven-to-one write simulation measured, and why later commits carry a move intention instead of a whole draft. - [The partial unique index that broke my Supabase upsert](https://andremarinho.me/posts/partial-index-supabase-upsert/index.md): Batching LawFlow notifications exposed a mismatch between a partial unique index and Supabase's conflict target. Removing a redundant predicate fixed it. - [Fetching dashboard summaries instead of full snapshots](https://andremarinho.me/posts/dashboard-summaries-instead-of-snapshots/index.md): Turistar's dashboard moved from loading itinerary snapshots per destination to one PostgreSQL summary query, while keeping all map destinations and the card limit. - [Removing the login-to-dashboard waterfall in Next.js](https://andremarinho.me/posts/removing-login-dashboard-waterfall/index.md): How I moved LawFlow's authenticated bootstrap to the server, preserved billing gates and stopped the browser from rebuilding the same initial state. - [When the event version was current but the snapshot wasn't](https://andremarinho.me/posts/event-version-and-stale-snapshot/index.md): A Turistar persistence bug let snapshot versions advance while retaining old content. The fix builds snapshot state on the server and sends it with the events. - [Why my Postgres pagination cursor needs a timestamp and an ID](https://andremarinho.me/posts/postgres-cursor-timestamp-and-id/index.md): LawFlow's notification history uses a composite cursor to keep timestamp ties stable, avoid deep offsets and detect the next page without a total count. - [Hello World](https://andremarinho.me/posts/hello-world/index.md): Why I built this site from scratch and started writing about the decisions, bugs, and mistakes behind my projects. - [Learning While AI Writes the Code](https://andremarinho.me/posts/learning-to-code-with-ai/index.md): How I use AI to build software while making time to understand the code, investigate failures, and test my assumptions. - [I Was Building Software Before I Called It Code](https://andremarinho.me/posts/before-i-called-it-code/index.md): How work in finance, logistics and business intelligence led me to software product development. ## Contact - [Email](mailto:hey@andremarinho.me): Professional contact. - [GitHub](https://github.com/andre-lmarinho): André Marinho on GitHub. - [LinkedIn](https://linkedin.com/in/andre-lmarinho): André Marinho on LinkedIn.