Abdulkadir İpek
CV
ENTR

I build AI products: search over real documents, tests that measure the model, and the app people use.

I’m Abdulkadir, a final-year computer engineering student heading into AI engineering. Coding agents write most of my code; I write the spec, the checks and the review rules, and I own what ships.

Currently on Erasmus at Poznań University of Technology

See the work abdulkadiripekk@gmail.com

Work

Things I’ve built

  • TEKNOFEST finalist
  • Team project

HititFinLex

An assistant for comparing Turkish participation-banking products. It collects campaign and financing texts from bank websites, extracts the numbers with fine-tuned Turkish transformers, and answers questions through a RAG pipeline that cites its sources.

  • 7,238passages in hybrid searchBGE-M3 + BM25, cited answers
  • 3,351documents from 10 banks~1M words
  • 0.87NER F1, 26 labelssilver-label test
  • 99.1%campaign classification

FastAPI · Next.js · PostgreSQL · Docker · Ollama

Code on GitHub ↗

HititFinLex overview screen showing document counts, extracted facts and coverage (Turkish UI).
  • Open source
  • Dev tool

Dugout

An orchestrator for coding agents. It gives each task its own git worktree, runs Codex or Claude, checks the result with your own test command, feeds failures back, has the other model review the diff and keeps a privacy-safe log of everything. Runs on existing subscriptions: no API keys.

2 agents with automatic fallback (Codex → Claude)370 tests passing (in the logged run)

TypeScript · Node.js · React

Watch a real run below ↓Code on GitHub ↗

Dugout board listing three real runs from its logs: one needs review, one failed, one passed.
  • Context engineering
  • Private

Jarvis

Coding agents start every session from zero, and on a $20 plan the tokens run out fast. Jarvis is my fix: the agent’s memory lives in plain Markdown files in Git, and hooks load only what matters for the current message, so it remembers past decisions without re-reading everything.

~22% less context per message (same three questions, before vs after)1 command to close a session (was 4–6 tool calls)4 bugs caught by a second model’s review (all fixed before merge)

Python · Claude Code hooks · Markdown + Git

Context added per message (characters)
BeforeAfter
Q1
2,0001,502
Q2
1,9921,415
Q3
1,8271,644

same three questions, before and after the change

  • Web app

Audio Splitter

Drop in a song, get back vocals, drums, bass and the rest as separate tracks, plus an instrumental. The separation model is Meta’s pretrained Demucs v4; I built the app around it: background jobs, in-browser playback with seeking, ZIP export.

Demucs v4 (htdemucs_ft) · FastAPI · Next.js

Code on GitHub ↗

VocalsDrumsBassOther

Watch it run · Dugout

The agent says “done”. The tests decide.

Dugout is the tool I use to hand coding tasks to AI agents. Every task comes with a command that has to pass; the agent saying “done” is not enough. Below are two real runs from its log.

Outcome: Codex added the feature, docs and tests on the first try, the checks passed, Claude reviewed the diff and approved it, and the task finished passed.

  1. Own git worktree

    dugout/list-status-filter-797d
  2. Setup passed

  3. Attempt 1 · first try

    codex · gpt-6.1-sol
  4. Agent says

    I’ll read the list implementation and CLI contract, add the status filter with tests, then run the requested checks.
  5. 6 tool calls

    command pwd && git · command rg -n 'summarizeLog|TaskStatus|status:|list|filter' · command cat packages/core/src/index.ts && · edit docs/contracts/cli.md · command head -12 packages/core/src/api-schemas.ts · edit packages/cli/src/cli.ts, packages/cli/src/list.ts
  6. Agent says

    The core schema already defines the five accepted statuses, so I’m reusing it for validation. The filter runs before the limit, and the tests will check every status, mixed-log ordering, and exact output without a filter.
  7. 5 tool calls

    edit packages/cli/src/cli.test.ts, … · command pnpm exec vitest · edit packages/cli/src/list.test.ts · command node scripts/scan-repo.mjs && · command git diff --check
  8. Agent says

    All 31 targeted tests passed, along with lint and typecheck. The full suite is still running and has reported failures outside the changed files. The repository scan also failed because the sandbox denied its attempt to spawn Git …
  9. 7 tool calls

    command git diff -- · command ps -eo pid,ppid,comm · command pnpm exec vitest · command pnpm lint && · command python3 - <<'PY' · command rg -n 'timeout|120_000|60_000|300_000|SIGTERM' · command pnpm lint &&
  10. Agent says

    Implemented `dugout list --status` with all five allowed values, exit-3 validation, rejection for delegate/eval, and filtering before `--limit`. Updated the CLI contract and verified exact unfiltered output. - Lint, typecheck, …
  11. Agent finished · 631.1k tokens

    2m 38s

  12. Checks passed

    Isolate  44 workers spawned · ~269ms startup each (spawn + environment, per file)
    at least ~521ms faster with isolate: false — reuses workers across files instead of one per file
    scan-repo: clean
  13. Review by claude: approved

    The diff meets all four acceptance criteria. Validation reuses `taskStatusSchema`, so the allowed values come from one source. `--status` is added to the forbidden lists for delegate and eval, giving …
  14. Task passed

    1 attempt · 5 files, +72 lines · 3m 0s

Replayed from real Dugout event logs. Agent messages are quoted as logged, shortened. Times are from the real run.

About

A bit more about me

Abdulkadir İpek in a park in Poznań

I study computer engineering at Hitit University (2023–2027) and I’m spending this year on Erasmus at Poznań University of Technology.

I started with deep learning and classic ML projects. Today I focus on AI engineering: LLM applications, retrieval and agents.

  • 2025–2026Head of the project committee, HSD Hitit
  • 2024–2025Core team, IEEE Hitit
  • 2023–2024Member, GDSC Hitit

Write to me

Internships, AI engineering roles, or a question about one of the projects: email is the fastest way to reach me.

abdulkadiripekk@gmail.com