ARIBA ANJUM

Junior AI / software engineer · relocating to Germany

I ship AI and automation systems that teams actually adopt.

I scope the problem, build it, and talk to the people who'll use it while I do. Right now I'm building and leading a GenAI document pipeline at a German fintech.

availability0 h / week now
locationGermany · on-site ok
languagesEnglish C1 · German B1

currently: shipping BriefPilot sprint 2 · learning German

field: shipped

What I've shipped

  1. problem:Asset onboarding at vountain (a fintech in Hanover) ran on manual data entry.

    decision:Proposed and now lead a GenAI document pipeline: automated extraction with validation and a human check before anything is trusted.

    outcome:Automated extraction across 0+ documents a week.

    adoption:Running in production at vountain, replacing manual entry.

  2. problem:Untracked async standups, and client Slack requests turned into tickets by hand.

    decision:n8n + LLM automations: a standup summariser reporting to leadership, and a Slack-to-ClickUp intake with deadlines.

    outcome:Daily progress visibility without meetings, and client messages become tracked tasks automatically.

    adoption:Company-wide at two teams.

  3. problem:A Dubai school needed a learning platform built.

    decision:Delivered it over a six-month freelance engagement.

    outcome:Promoted mid-project from building it to reviewing the junior developers' pull requests.

field: work

Featured work

BriefPilot

in development

Photograph a German official letter and it reads the text back to you. That is the first step toward telling you, in plain language, what it means and what to do.

The OCR pipeline and a photo quality-gate (it asks you to retake an unreadable scan instead of showing garbled text) are shipped. Classification and the plain-English explanation come next. Next.js · FastAPI · Postgres · Docker · CI.

Quantum Playground

live

Quantum states are hard to reason about as vectors of complex numbers. This is a visual, interactive representation that makes gate effects and entanglement observable: build qubits, apply gates, and watch a Bell pair and a teleportation protocol play out in real time.

The state engine is fully typed and separated from the rendering layer. Every push builds and deploys automatically to the live site.

field: how_i_work_with_ai

How I work with AI

It's my job title, so I'll be specific about it. Generating code is the easy part now; knowing what not to hand over is the job.

I delegate

Boilerplate, first-draft tests, and mechanical refactors: work where I already know the answer and just need it typed out.

I don't delegate

Architecture, and the boundaries between parts. In BriefPilot the AI provider sits behind one interface I designed, so a model can be swapped without touching anything else.

I review everything

I read every diff, and mypy --strict plus CI catch what I miss. When the model wasn't sure what a document was, I made it return nothing rather than a confident guess.

field: decisions

One decision, from the log

Decision · BriefPilot · ADR-0003

Provider-Agnostic LLM Architecture Under a Zero-Budget Constraint

Chose
Designed a provider-agnostic AIService interface (dependency-inversion pattern) with three interchangeable adapters (Gemini, OpenAI, Azure OpenAI), and set the free-tier provider (Gemini Flash) as the hard default. No paid API is ever called unless a developer explicitly opts in.
Rejected
Defaulting to the paid OpenAI adapter with the free tier as opt-in (the original scaffolding); renaming the interface to llm_client to match the spec literally.
Cost
Every future AI provider (Anthropic, a self-hosted model) must now implement three abstract methods (extract_document, classify_document, summarize). That is a stricter integration bar per provider, accepted in exchange for one single contract that defines what an AI provider means across the whole app.
Why
A missing API key should never break the product. It degrades one feature (classification returns null, never a guess), not the whole pipeline. Cloning the repo and running it locally should carry zero risk of an unexpected bill. This is cost-aware architecture: the safe default has to be the free one, engineered so the failure mode of "no key configured" is invisible to the user rather than a crash.

See the rest of the decision log

field: path

The path

  1. 2024

    Freelance developer

    Shipping real things for real clients

  2. 2025

    Business analyst

    Learning to scope a system before building it

  3. 2025

    Project coordinator

    Shipping with a team, on deadlines

  4. 2026

    PM & automation

    Building the tools I used to spec

  5. 2026

    Data & GenAI engineer, vountain

    Where I am now

Every step added the next skill. I went from writing the specifications to building the systems those specifications described.

field: contact

Contact

I'm looking for a Werkstudent or junior AI / software engineering role in Germany, remote now and on-site once I relocate.