Andrea Tuci
I make systems that don't speak the same language agree.
Metto d'accordo sistemi che non si parlano.
I came to code late, and out of necessity: for ten years I worked as an educator, chaired associations and ran a family centre. In 2016 I started writing software to solve the problems in front of me, and haven't stopped since. Today I build integration middleware — catalog, stock and orders staying in step across systems that don't talk to each other — and the backends behind LLM-powered products. Since June 2025 I've led a tech team of about ten people, and I still write code every day: I'm lazy enough to always look for the solution that won't make me do the work twice.
Work
AI Brand-Intelligence Platform
FeaturedHow present a brand is inside AI answers.
A multi-service SaaS that measures how brands surface across AI answer engines and SEO data, and generates synthetic audience personas for market analysis. A Django/DRF core orchestrates an AI service and a FastAPI/Celery data worker; an LLM broker routes several model providers through a single cost-and-citation surface, and a deterministic set-cover algorithm assembles a full persona panel with one LLM call instead of many. Chat streams over SSE, access is governed per instance.
- Python
- Django
- DRF
- FastAPI
- Celery
- Huey
- Redis
- PostgreSQL
- OpenAI
- Anthropic
- SSE
- Docker
E-commerce Integration Middleware
FeaturedNearly a million variants kept in step across three systems.
A Django middleware that keeps a sports-equipment retailer's commerce ecosystem in step: it ingests a catalog of nearly a million variants from a PIM, pushes products, inventory and pricing to the storefront through the Shopify Admin GraphQL API (bulk operations), exchanges stock and order files with an ERP over FTP, and integrates a loyalty system over SOAP. Around sixty background tasks run on cooperative (gevent) concurrency, with HMAC-verified webhooks and self-healing reconciliation jobs that repair drift on their own.
- Python
- Django
- DRF
- Huey
- gevent
- Redis
- PostgreSQL
- Shopify GraphQL
- Akeneo PIM
- FTP
Shopify Checkout Extensions
The delivery, payment and discount rules stock checkout doesn't have.
An extension-only Shopify app built on Shopify Functions (JavaScript compiled to WebAssembly) and Checkout UI extensions. It adds parcel-locker delivery sourced live from an external API, conditional payment-method visibility, and loyalty-tier discounts — computed against the list price, so an already-discounted item isn't reduced twice.
- Shopify Functions
- WASM
- Checkout UI Extensions
- React
- GraphQL
- Vitest
- semantic-release
Shopify → ERP Order Export
Orders land in a legacy ERP in exactly the format it demands.
A Shopify embedded app (Remix) that exports orders into a strict legacy-ERP XML format. Field mapping lives in per-store templates editable in the browser, customers are indexed by fiscal code into stable ERP codes, and per-record validation isolates a malformed order instead of failing the whole batch. Bundle and discount logic resolves from product metafields.
- Remix
- React
- Shopify GraphQL
- App Bridge
- Polaris
- Prisma
- PostgreSQL
- Mustache
Multi-Tenant SaaS Platform
Who can see what, decided per instance.
A multi-tenant platform pairing a server-rendered public site (from a headless CMS) with an in-app interface on a Django/DRF backend. Its spine is an instance-level OWNER/EDITOR/VIEWER permission system, deliberately decoupled from framework admin flags: group-based internal roles, anti-enumeration invite redemption, audience-scoped serializers (field visibility decided server-side), and privilege-escalation regression tests.
- Astro
- Vue 3
- Django
- DRF
- headless CMS
- Huey
- Redis
- PostgreSQL
Multilingual CMS Marketing Site
The client edits the site where they see it.
A multilingual marketing site on Astro SSR backed by a headless CMS: a block-based page builder and inline visual editing — you click the text on the page and fix it there. Translations run through a localization platform on a schema-first model, a remote product catalog reconciles into the local CMS on a scheduled job, and SEO is fully server-rendered with hreflang alternates.
- Astro
- TypeScript
- Tailwind CSS
- Directus
- PostgreSQL
- Docker
B2B Product & Training Portal
A catalog in twenty languages and an academy that issues credits.
A long-running B2B portal for a brand and its partner network: a multi-brand, multi-country product catalog across roughly twenty locales, a professional-training academy with courses, surveys, certificates and training credits, an events and webinar system, and a versioned public API for partner integrations — behind single sign-on and a custom admin panel.
- Python
- Django
- DRF
- headless CMS
- PostgreSQL
- Redis
- Huey
- Keycloak
- Angular
CMS Translation Automation
Seven languages in and out of a single spreadsheet.
A middleware that automates multilingual content for a large WordPress/WPML site. It exports posts, custom fields and option strings into one per-language spreadsheet a non-technical client can fill in, then reconstructs valid XLIFF and writes it back over REST, handling dynamic field structures and cross-reference ID remapping. Built by reverse-engineering the CMS's undocumented internals: idempotent, regression-checked imports. (Around 390 field definitions across 26 groups, 7 languages.)
- Python
- WordPress
- WPML
- ACF
- openpyxl
- lxml
- MySQL
- Docker
Skills
- Python
- TypeScript
- JavaScript
- SQL
- PHP
- Django
- DRF
- FastAPI
- Celery
- Huey
- Pydantic
- Astro
- Vue
- Nuxt
- React
- Remix
- Tailwind CSS
- OpenAI
- Anthropic
- Gemini
- Perplexity
- SSE streaming
- LLM cost governance
- Directus
- WordPress
- WPML
- ACF
- Shopify
- Shopify Functions
- Stripe
- SOAP / WSDL
- Akeneo PIM
- geocoding APIs
- PostgreSQL
- Redis
- Docker
- Nginx
- Caddy
- GitLab / GitHub CI
- Sentry
- semantic-release
No embedded until now. PHP and WordPress when the job calls for it.
Experience
Fullstack developer, then Technical Lead — Lotrek
I get complex systems to agree, whether those systems are software or people. I build integration middleware, ERP synchronization, Shopify apps, multi-tenant SaaS, and the backends behind AI brand-intelligence platforms: event-driven architectures, asynchronous tasks, and self-healing reconciliation that corrects data drift on its own.
Since June 2025 I've led a tech team of around ten developers, working closely with technical project managers, designers and SEO specialists. We set our development and code-review standards together; I support junior developers as they grow, step in on the nastiest architectural problems, and take part in technical hiring. I still write the code.
Fullstack developer & tutor — vocational training
At a vocational-training centre I ran the network and Google Cloud, built a Python/Django management system that began the centre's digitalization, and shipped a React Native electronic register for families. In parallel, I took on my first freelance backend work, building a few management systems in Django.
Educator & community organizer
I founded and chaired a social-promotion association in 2010 with seven others, and in 2014 a second-level association that the town of Sesto Fiorentino entrusted with running its family centre. Over the same years I worked as a professional educator (2012–2019) in school services, in mental-health and social-exclusion facilities, and in day-centres for minors and people with disabilities — and that's where, in 2016, I began writing Python/Django and React to digitalize the processes around me. I learned coordination there, long before I coordinated developers.
Studies
Educatore professionale (professional educator qualification)
Università Pegaso
Laurea in Italianistica (Italian studies)
Università di Firenze
For a year I led the seminar on translating contemporary Spanish poetry that I had been attending as a student.
DITALS — teaching Italian as a second language
Università per Stranieri di Siena
Perito informatico (computer-science diploma)
ITI "Leonardo da Vinci"
Contact
If you have a problem sitting between two systems, or a team that has to build them, write to me — we'll look at the hard part together.