18 set - Cagliari
Dott.House
Backend & Data Engineer, founding seat
Il layer dati del prodotto: sincronizzazione, integrazioni e riconciliazione su milioni di prenotazioni, dove ogni euro deve tornare.
Il ruolo
Cerchiamo una persona che tratti i dati come un sistema da ingegnerizzare, non come una pipeline da far girare.
Chiamare un'API è la parte facile. Quello che fa la differenza è tutto il resto. Il PMS che cambia schema senza avvisare. Il webhook che non arriva. Il backfill di tre anni che non deve duplicare niente. La prenotazione che va riconciliata con il payout di Booking, con il movimento sul conto e con la fattura nel Cassetto Fiscale. E quando qualcosa non torna, te ne accorgi tu prima che se ne accorga il cliente.
Per questo script e cron non ci bastano. I nostri sync girano già come workflow durevoli su Temporal: sopravvivono a un deploy, riprendono da dove si erano fermati, e si possono rilanciare su un cliente, un immobile o un mese senza toccare nient'altro. Il prossimo passo è lo strato di controlli che verifica in continuo che i numeri tornino.
Il vincolo che rende il problema più coinvolgente della media è che i nostri dati finiscono in un conto economico. Una prenotazione sincronizzata due volte non è un record in più in una tabella: è un fatturato gonfiato, un margine sbagliato, una dichiarazione IVA che non torna. Tenere coerenti milioni di record che arrivano da decine di sorgenti inaffidabili, e farlo all'euro, è il problema tecnico su cui poggia tutto Dott.House. Sarà il tuo.
Siamo un team piccolo, con autonomia totale e niente deadline calate dall'alto. Decidi tu l'architettura, la misuri, e scegli cosa merita di andare in produzione oggi. Il layer dati è la fondazione del prodotto, compreso il layer AI che ci gira sopra, e chi lo costruisce ne possiede una parte, nelle decisioni e nell'equity.
Cosa farai
- Orchestrazione durevole. Workflow Temporal per sync, backfill e riconciliazione: retry con backoff, timeout, heartbeat, compensazioni, versioning dei workflow senza rompere quelli in corso. Le API dei PMS cadono, i deploy succedono, e il sync deve finire lo stesso.
- Code e flussi a eventi. Webhook in ingresso, code di lavoro, backpressure verso sorgenti con rate limit aggressivi, dead letter queue che qualcuno guarda davvero. Consegna almeno una volta, effetto esattamente una volta.
- Resync come operazione di prima classe. Rilanciare la sincronizzazione di un cliente, di un periodo o di una singola prenotazione dev'essere un bottone, non un'emergenza. Idempotenza by design, deduplicazione, correzioni retroattive che si propagano fino ai margini senza duplicare niente.
- Integrazioni. Connettori verso PMS, channel manager, OTA, Cassetto Fiscale e tutto quello che arriverà dopo. API documentate male, rate limit aggressivi, autenticazioni fragili, export CSV scritti a mano.
Un'architettura in cui aggiungere l'integrazione numero trenta costa meno della numero tre.
- Riconciliazione. Collegare prenotazioni, payout, commissioni, transazioni e fatture elettroniche, anche quando gli importi differiscono di pochi centesimi, le date non coincidono e un payout copre quaranta prenotazioni. Match automatici dove è possibile, eccezioni chiare dove non lo è.
- Il modello dati. Lo schema su cui si calcolano margini, conto economico e KPI per prenotazione, immobile e azienda. Storicizzazione, correzioni retroattive, tracciabilità di ogni numero fino al documento da cui viene. Multi-tenancy seria: i dati dei clienti non si mischiano mai.
- PostgreSQL che regge. Query, indici, partizionamento e job che reggono con 5.000 immobili oggi e con dieci volte tanto domani, senza rallentare l'app.
- Data quality come codice. I controlli sui dati vivono nel repository, versionati e testati come il resto: vincoli, test di coerenza, confronti tra sorgenti, soglie sulle anomalie. Il fatturato di un immobile che cambia del 30% da un giorno all'altro, un payout senza prenotazioni, una fattura fuori periodo. Potenzialmente dbt o qualcosa di simile: la scelta dello strumento è tua, conta che un numero sbagliato venga fermato prima di arrivare al conto economico.
- Osservabilità. Lag di ogni sync, workflow falliti, code in crescita, tasso di match della riconciliazione, test di data quality rossi. Gli alert partono prima del ticket del cliente. Gli strumenti per capire il sistema li costruisci insieme al sistema.
- Tutto lo stack, quando serve. Il tuo centro di gravità è il backend, ma se una feature richiede di mettere le mani su React lo fai. E lavori a stretto contatto con il layer AI, che senza dati puliti non vale niente.
Chi cerchiamo
- Hai già costruito sistemi che muovono dati veri, in volumi veri, per utenti veri. Ci interessa cosa hai messo in produzione e cosa è successo quando si è rotto, non i certificati.
- Hai combattuto con dati sporchi e sistemi distribuiti. Duplicati, fusi orari, valute, arrotondamenti, eventi fuori ordine, messaggi consegnati due volte. Sai perché un sync idempotente è diverso da un sync che di solito funziona.
- Hai già orchestrato lavoro che non può perdersi. Temporal, code (Service Bus, RabbitMQ, SQS, Kafka) o qualcosa di equivalente, in produzione. Non serve che tu conosca Temporal: serve che tu abbia già avuto il problema che risolve.
- Conosci PostgreSQL oltre l'ORM. Leggi un query plan, sai quando serve un indice e quando serve ripensare lo schema,
hai già gestito una migrazione su una tabella grossa senza fermare nessuno.
- Misuri, e te lo ricordi. Il lag del sync, il tasso di match della riconciliazione, i record persi per strada. Se alla domanda "come sapevi che era corretto" rispondi con un numero, siamo già d'accordo.
- Sai distinguere un sistema che funziona in staging da uno che regge il lunedì mattina , quando tre PMS vanno in timeout insieme e un cliente ha appena importato quattro anni di storico.
- Ownership vera. Non esegui ticket: decidi cosa va in produzione, e il giorno dopo guardi i numeri. La struttura minima non ti spaventa, ti serve.
- Usi Claude ogni giorno. Per noi è il modo in cui lavoriamo, non un nice-to-have.
- Parli italiano fluentemente. I clienti sono property manager e hotel italiani, e i documenti sono fatture elettroniche e normativa fiscale italiana: il dominio si capisce solo nella lingua in cui è scritto.
- Sei ottimista di default e alzi il livello di chi ti sta intorno.
Nice to have: esperienza con Temporal o workflow engine simili, dbt, Great Expectations o strumenti di data quality, pagamenti, fintech o sistemi contabili (partita doppia, ledger), event sourcing, Azure. Interesse per hospitality, finanza e real estate. Idealmente hai già un po' di esperienza. Se non ne hai, ma hai costruito da solo qualcosa che sincronizza, integra o riconcilia dati reali e non riesci a smettere di pensarci, parliamone lo stesso.
Stack
Python (FastAPI, SQLAlchemy 2 async, Pydantic v2), PostgreSQL, Temporal in produzione, code di messaggi, TypeScript/React, Azure. Per i controlli sui dati valutiamo dbt o simili, e la decisione la prendi tu.
Cosa offriamo
- RAL su scala milanese, in una città dove quello stipendio vale il doppio.
- Equity: una percentuale reale del business che costruisci.
- MacBook e Claude Max dal primo giorno.
- Sede a Cagliari, ibrido. Il mare a dieci minuti dall'ufficio.
- Tre founder under 30, seed-stage, con traction: 200 clienti su 5.000 immobili. Le tue idee arrivano in produzione in giorni, non in trimestri.
Come candidarsi Scrivi a (email hidden) raccontandoci il sistema dati più difficile che hai costruito: cosa muoveva, dove si rompeva, come te ne accorgevi. Se hai un link, un repo o un post-mortem, mandacelo. Salta la cover letter generica: facci vedere qualcosa di vero.
Rispondiamo a tutte le candidature che arrivano con un progetto reale allegato.
Un'ultima cosa La lista qui sopra descrive la persona ideale, e la persona ideale non esiste: nessuno di noi tre spunterebbe tutte le caselle. Sappiamo che le donne, più spesso degli uomini, si candidano solo quando le spuntano tutte, e che chi ha meno anni di esperienza si autoesclude per primo.
Se sei arrivata fin qui e ti manca qualcosa, scrivici lo stesso. Preferiamo dire di no noi, piuttosto che perderti perché ti sei esclusa da sola.
19 set - Sona
Studio medico
19 set - Trieste
Euroservis
19 set - Marina di Ravenna
MedTug
19 set - Caserta
Bufalè srls