Universidata, parte del gruppo Ingenium Education Group S.p.A., sviluppa prodotti EdTech innovativi con l'obiettivo di trasformare il modo di fare didattica e di gestire la scuola nei prossimi decenni.
\n
La preghiamo di verificare di possedere il livello di esperienza e le qualifiche adeguate leggendo la panoramica completa di questa opportunità qui sotto.Vogliamo restituire a scuole e docenti il tempo e l'attenzione per ciò che conta davvero. L'Education è il nostro ambito di punta, affiancato da altri settori in cui applichiamo la nostra expertise in Data Science & AI.
\n
Il ruolo
\n
Backend Developer dual-stack (Python + Node/TypeScript) con 3+ anni (mid) o 5+ anni (senior) di esperienza, solida mentalità architetturale e cura maniacale per la qualità del codice.
\n
Lavorerai su due progetti greenfield in ambito EdTech, entrambi in fase iniziale: niente legacy da reverse-engineerare, nessun debito tecnico ereditato, decisioni architetturali ancora da prendere. Spazio reale per lasciare il segno sul design dei sistemi.
\n
Gli stack
\n
- Un backend Python async (FastAPI + PostgreSQL + Neo4j) con pipeline RAG e generative basate su LLM, ingestion documentale e workflow asincroni
- Un monolite NestJS 11 (TypeScript + Prisma + PostgreSQL + Pino + Passport/JWT), multi-tenant, con modello di permessi granulare e feature LLM integrate
Ci aspettiamo che tu sia a tuo agio a muoverti da un lato all'altro in base a dove sta la priorità. Un/una \"Java developer che ha visto Python di sfuggita\" non è il profilo. Un/una ingegnere/a che ha lavorato in produzione in entrambi i mondi, con la testa nel sistema e non nel linguaggio, sì.\n
Cosa farai
\n
Lato Python
\n
- Progetterai e scriverai servizi async in FastAPI
- Lavorerai su pipeline RAG e generative con LLM (prompt design, structured output, grounding, caching)
- Modellerai il dominio su PostgreSQL (SQLAlchemy async) e Neo4j
- Svilupperai pipeline di ingestion documentale (estrazione testo, OCR, chunking, embeddings)
- Orchestrerai job in background e workflow asincroni a lunga durata
Lato NestJS / TypeScript:\n
- Svilupperai feature backend su un monolite con modello di permessi granulare
- Scriverai codice production-grade: tipizzato, testato (unit + e2e), con contratti DTO/Swagger coerenti e migrazioni audited
- Parteciperai alle decisioni architetturali — boundary di modulo, strategie di autorizzazione, evoluzione dello schema, pattern di errore e logging
- Integrerai feature basate su LLM dove portano valore reale
Trasversale:\n
- Contribuirai all'evoluzione architetturale end-to-end — non solo implementazione
- Farai code review serie ai colleghi — qualità e manutenibilità sopra la velocità
Requisiti non negoziabili\n
Backend Python
\n
- 3+ anni di Python backend con pratica consolidata di async/await
- FastAPI e Pydantic
- SQLAlchemy (async) e PostgreSQL
- Neo4j o esperienza solida con database a grafo
Backend Node.js / TypeScript\n
- Esperienza solida su NestJS (o framework strutturalmente equivalenti: Spring, Rails, Django strutturato) — DI, moduli, guard/interceptor, pipe di validazione
- Ottima padronanza di un ORM tipizzato (preferibile Prisma; TypeORM/Drizzle accettabili se sai come migrare)
LLM & architettura\n
- Esperienza reale di integrazione di LLM in produzione — API (Anthropic, OpenAI o simili), tool use, structured output, prompt caching, gestione di contesto e costi. Non tutorial, non prototipi da hackathon.
- Confidenza con orchestrazione di job asincroni in background (task queue, worker pattern)
- Confidenza con pipeline di ingestion/parsing documentale (estrazione testo, OCR, chunking, embeddings)
- Solide basi di REST API design (versioning, contratti, error model, idempotenza) e microservizi
- Docker e principali modelli di deployment (container orchestration, multi-stage, rolling/blue-green, config e secrets)
Trasversali\n
- Testing non opzionale: unit e integration test, trade-off tra mock e fixture reali, consapevolezza che un test che passa non vuol dire codice corretto
- Ciclo di vita del software end-to-end: user story → refinement → implementazione → deploy → monitoring
- Attenzione all'architettura: riconosci l'astrazione vantaggioso da quella prematura. Leggi il codice prima di aggiungere codice.
- Seniority trasversale: genuinamente a tuo agio in entrambi gli stack
- Disponibile a lavorare in modalità ibrida su Roma
Claude Code (non negoziabile) Uso quotidiano di Claude Code come parte integrante del workflow: brainstorming, spec writing, TDD, refactoring, code review, debugging sistematico. Sai cos'è una skill, un hook, un MCP server, un sub-agent e l'hai già usato su progetti veri. Sai quando ti aiuta e quando no. Se non l'hai mai usato seriamente, que