Tomislav Ćalušić open to AI integration roles email github linkedin

I build the unglamorous parts of AI products.

Full-stack engineer, eight years across banking, telco, automotive, and government enterprise. Lately I've been wiring Claude into real products — agentic tool-use loops, multi-tenant infra, the boring auth/storage/DNS plumbing that lets a model-powered feature ship to actual users.

basedSplit, Croatia
roleAI integration eng.
stackJava · Angular · React · Python
modelsClaude · OpenAI
langsHR · EN · IT · DE
01

Case study — one AI project.

Side project · 2026v1 · live

Photo Portfolio Platform

Multi-tenant SaaS where each photographer gets their own domain and a full website that they manage entirely by chatting with a Telegram bot — uploads, captions, layout, copy, even DNS, all in plain language.

Claude Haiku agentic tool-use FastAPI psycopg3 (no ORM) Alembic Next.js 14 TypeScript Tailwind (CSS-var theme) Postgres 16 JSONB i18n Cloudflare R2 Caddy + on-demand TLS python-telegram-bot Docker Compose EN / HR

Architecture

Photographer (Telegram client) text · photos bot.py Claude Haiku · agentic loop alt-text · categorise · translate tools data FastAPI service psycopg3 / raw SQL pytest · Alembic migrations Postgres 16 photographer_id everywhere JSONB i18n + theme Cloudflare R2 (S3) UUID keys · orig / web / thumb Next.js 14 App Router · standalone CSS-var themed Caddy on-demand TLS · LE certs /photographers/exists → any custom domain → visitors

Fig. 1 — the bot is the only write path; the website is read-only output.

The interesting decision

The bot isn't a chat-UI on top of a CMS — it is the CMS. Every CMS operation has to be a tool the model can call: upload_photo, set_caption, reorder_gallery, set_theme_color, bind_domain. The non-obvious part was the DNS flow: photographers don't know what an A record is, so the bot walks them through it conversationally and the backend polls for propagation. Caddy's on-demand TLS gates on a /photographers/exists endpoint so we don't get cert-flooded by random domains pointed at our IP.

Choosing raw psycopg3 over an ORM mattered more than it sounds — multi-tenant queries need a WHERE photographer_id = $1 on every read, and I wanted that visible in every query rather than buried in a session scope. A small helper wraps the cursor so it's almost as ergonomic, without the magic.

What I'd do differently

The tool-use loop ran wide before it ran deep — I shipped 14 tools and only later realised the bot would have been sharper with 6 well-designed ones plus a fuzzy propose_change(intent) meta-tool that lets the model sketch a plan first. I'd also have built the eval harness before the second tool, not after the tenth.

02

Work — eight years, six roles.

Software Engineer · Intellexi

2024 — Present

Lead developer on front-office modernization at HPB — Croatian Postal Bank.

Architected and shipped a new Angular SPA replacing a JSF legacy used daily by bank personnel. Designed the secure Spring Boot REST APIs and a custom gateway/routing layer connecting the front-end to core financial back-ends.

Built the real-time integration with HROK (Croatian Credit Information Registry) for mandatory credit-availability checks, plus dynamic in-code PDF generation for regulated documents — credit agreements, compliance reports, account statements — all branded and legally compliant. Owned the Oracle PL/SQL layer, OpenLiberty config, and Jenkins CI/CD pipelines.

AngularSpring BootJavaOracle PL/SQLOpenLibertyJenkins

details

Senior Technical Consultant · CloudSense

2022 — 2024

Salesforce engagements for three telcos — A1, Telefónica, Liquid Telecom.

Shipped A1 Telecom's eCommerce on Salesforce in agile cycles, built with Apex and Lightning Web Components. Drove a new solution-management process for Telefónica engagements and ran the offline client comms.

Handled BAU bug-fix and feature work for Liquid Telecom (the largest African telecommunications provider) and contributed to Salesforce admin. Code-driven PDF generation via PDF Butler.

SalesforceApexLightning Web ComponentsPDF Butler

details

Software Engineer · GlobalLogic

2021 — 2022

Two automotive cloud platforms — Stellantis and Daimler / Mercedes Intelligent Cloud.

Stellantis — Internet of Vehicles. Device-management portal in React + TypeScript with Relay/GraphQL, a Java/Spring Boot application gateway behind it, Next.js + Tailwind on the front-end, and Elasticsearch for querying. Jest for front-end tests.

Daimler / Mercedes Intelligent Cloud. Vue.js + TypeScript front-end and Java/Spring Boot back-end with file converters, end-to-end tests in Cypress and JUnit. Multinational corporate environment with a globally distributed team.

ReactTypeScriptVue.jsJava 11Spring BootGraphQL / RelayNext.jsElasticsearch

details

Software Developer · Maurer Electronics GmbH

2019 — 2021

Government enterprise platform for tobacco-product traceability.

Helped countries detect illegal smoking products by tracking them from creation to delivery. Three React front-ends — for end users and for the administration team — and Java/Spring Boot REST APIs underneath.

PostgreSQL data layer with optimised SQL queries; unit and integration tests in JUnit; Docker on CentOS 7, Maven, Jenkins.

JavaSpring BootReactPostgreSQLJUnitDockerJenkins

details

Student Software Developer · Sedam IT

2019

Built the back-end for ZgPark — Zagreb's pay-parking-by-phone service.

Designed and developed back-end APIs used by thousands of drivers to buy parking tickets over the phone, plus the admin interface (front + back) used by parking-system operators. MS SQL Server, Tomcat.

JavaXMLMS SQL ServerTomcat

details

Student Software Engineer · Ericsson

2017 — 2019

Two years on the 4G/5G code that carries ~1B mobile subscribers.

Improved and tested cellular network code in an agile team. Optimised legacy C and Java for performance and reduced complexity. Wrote functional and component tests in Erlang and Java (JUnit).

Built a shell-pipeline runner using M4 macros and Bash so test suites ran consistently both locally and on Jenkins.

CJavaErlangBashM4JUnitJenkins

details

03

Education & misc.

M.Sc., Computer Science · FESB, University of Split

2017 — 2019

Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture.

B.Sc., Computer Science · FESB, University of Split

2014 — 2017

Salesforce Certified Associate · certification

cert.

Languages · Croatian (native) · English (professional) · Italian / German (elementary)