If you cannot draw a system on one page, you do not understand it yet. I design institutional web platforms and retrieval systems, turning requirements into a bounded technical scope and that scope into something that runs and can be handed over.
scope
Institutional
field
Full stack → Backend · RAG
span
20+ years
location
Ankara, TR
About
sheet 02
A web systems architect who designs web-based systems from survey to deployment, and builds everything between where a request arrives and where infrastructure takes over.
I spent 20+ years in IT and have been developing professionally since 2019. That order is not an accident. Coming to software after systems, networking and infrastructure makes it easier to see where today's decision lands three years from now. I started as a full stack web developer; today the weight is on backend architecture and RAG systems.
At Atılım University I work as Web Development Specialist within the Directorate of Corporate Communications and Promotion. The scope is not only code: I manage the content of the institutional site, set up and run the faculty and administrative unit sites, enter academic staff information, and support the research assistants and academics responsible for their department's web pages.
What decides the outcome is often not the code but keeping the boundaries of responsibility clear: translating the content side's needs into a workable technical scope, agreeing the interface with the infrastructure side, and leaving the work documented and transferable.
direct responsibilityrun in coordinationScale 1:1 · unit of measure: responsibility
Interfaces
sheet 03
On an institutional web platform, knowing where the work starts and stops decides more than the code does. I have two boundaries: the content side a request arrives from, and the point where infrastructure takes over.
Upper boundary
Directorate of Corporate Communications and Promotion
crosses the boundary
Publishing needs, content calendar, corporate identity rules, campaign and promotion requests.
Lower boundary
IT and Infrastructure
crosses the boundary
Server and certificate management, access rights, backups, security requirements.
Requests usually arrive as needs with a short turnaround: a campaign page, an application flow, a small service. Because the interface, application, data and deployment sit in one pair of hands, going from a requirement to a running version normally takes a single round of coordination.
How the work runs
01
Turning a request into scope
Work does not start until a request becomes a feasible technical scope with a clear boundary.
02
Keeping revisions traceable
Change requests are recorded; which decision was taken when, and why, can be read back later.
03
Leaving it transferable
Setup, dependencies and operating steps are documented, so the work does not depend on one person.
04
Planning maintenance
Version upgrades and maintenance windows are agreed so they do not collide with the publishing calendar.
Skills
sheet 04
backend
php
laravel
postgresql
mysql
rest api
filament
retrieval
pgvector
embeddings
rag pipeline
llm api
frontend
vue.js
nuxt
blade
tailwind
javascript
devops
linux
nginx
ssh
cloudflare
tools
git
wordpress
Retrieval
sheet 05
This drawing is a section through one installation: a source-citing assistant built over a bilingual institutional corpus of roughly seven thousand pages. The order of stages is similar in most RAG systems; what happens inside each stage is decided again for every data source, sector, language set and error tolerance. The details below are the decisions made for this installation, not a recipe.
The two lanes run separately: the offline one indexes the content, the online one drops the query into that same index. Most of the cost sits in the first lane; all of the latency sits in the second.
detail 01
Source
what
Content pages and structural modules from the CMS are gathered into a single corpus.
in this installation
Read directly from the database, selected by publication status and language; table, accordion and tab modules are flattened to plain text.
decision
Unpublished pages are excluded; archive pages were producing answers as if they were current, which the evaluation showed.
where it changes
If the source is a PDF archive, a ticketing system or a product catalogue, the collection layer is built entirely differently.
detail 02
Extraction and normalisation
what
Text is extracted; whitespace, heading hierarchy and character set are corrected.
in this installation
The heading chain is attached to every chunk as context.
decision
Content under 100 characters does not enter the index; roughly a third of the corpus was meaningless short records.
where it changes
In table-heavy data (price lists, technical dimensions) the table structure is preserved rather than flattened to text.
detail 03
Chunking
what
Text is split so that units of meaning stay intact.
in this installation
Overlapping chunks that respect heading boundaries; size set by the embedding model's limit.
decision
Attaching the heading chain to each chunk; a bare paragraph lost track of which unit it was about.
where it changes
In contracts or legislation the article is the chunk unit; in product data, the product record.
detail 04
Embedding
what
Each chunk is turned into a numeric vector.
in this installation
Gemini embedding-001, 768 dimensions; batch processing with per-chunk retry.
decision
The same model for query and document, with different task types; mixed use was shifting the scores.
where it changes
If data cannot leave the organisation, a local model (BGE-m3 was proposed for this installation's on-prem variant).
detail 05
Index
what
Vectors are kept in a queryable index.
in this installation
PostgreSQL + pgvector, HNSW with cosine; language and content-type columns, incremental re-indexing.
decision
pgvector instead of a separate vector database; the content already lives in Postgres, so one service, the same backups and the same permission model.
where it changes
With millions of chunks or a multi-tenant setup, a separate vector store (Qdrant in the on-prem variant).
detail 06
Query
what
The question is turned into a vector through the same pipeline, and its language is detected.
in this installation
Language is a retrieval filter; institutional abbreviations are expanded.
decision
Filtering by language at retrieval, not at generation; Turkish questions were pulling English sources and the citation link led to the wrong page.
where it changes
In a monolingual corpus this layer does not exist; for multi-step questions, query rewriting is added.
detail 07
Retrieval and ranking
what
The nearest chunks are fetched, filtered and assembled into context.
in this installation
12 candidates, a similarity threshold, per-page deduplication, 6 sources; recency as a secondary criterion.
decision
Setting the threshold by measurement; the first threshold (0.35) never fired in practice, and only the evaluation showed that.
where it changes
Where precision is critical (legal, medical) a re-ranking model is added; a chat product uses a looser threshold.
detail 08
Generation and citation
what
The model produces an answer from the context, and the source pages are shown beneath it.
in this installation
Gemini Flash; abstaining on questions outside the sources; finish-reason and token-limit checks; sources shown as chips.
decision
Dropping the structured output schema; it turned out to be the cause of the broken Turkish characters. Three of five hypotheses were wrong, and a single-variable test found it.
where it changes
For internal use, citation gives way to triggering actions (MCP); in a public product the abstention threshold is set higher.
Alongside the system runs an evaluation pipeline: a fixed question set, trap questions and four-category labelling. Most of the decisions above came out of it.
Case studies
sheet 06
campus portal
Connect Atılım
Atılım University
01 / 02
problem
Campus tools (QR, short URLs, micro-services) were scattered with no single entry point.
approach
A modular Laravel portal; each tool an independent service under a shared identity and UI layer.
outcome
Campus infrastructure managed from one address and open to new tools.
institutional web
Atılım University Web
Ongoing management
02 / 02
screenshot
problem
A multilingual, high-traffic institutional site with constant content and visual production needs.
approach
Custom development on WordPress; an SVG/HTML banner pipeline and content workflows.
outcome
A consistent, fast-updating institutional presence the content team can move on without waiting for technical support.
Breakdown
sheet 07
Every job is surveyed before it is priced. This is a summary of that survey: what came in, what was examined, which decisions were made. Methods are not explained; decisions and their reasons are. Jobs that stayed at proposal stage or were declined are here too, because saying no is also a decision.
came in
A template e-commerce site from 2021, and four months of no progress with the previous developer.
examined
Existing site score (38/100), hosting and payment infrastructure, backup state, the real size of the product range, delivery rules (district, day, time slot), legal compliance gaps.
decisions
For 6 products, not full e-commerce but product-led micro-commerce with a strong admin panel. Subscriptions and bundle building moved to a second phase; scope narrowed, price held. First task: revoking the previous developer's access.
"Our site and products don't show up in search; our dealers do." A trade fair three months out.
examined
Existing site (43/100), the data gap between a 736-product catalogue and the site (dimensions and colours in the PDF, absent from the site), a named competitor table, the dealer network's position in search results, the timeline against the fair.
decisions
Corporate site, technical catalogue and quote basket; dealer portal in a second phase. The document for senior management: a situation assessment with no budget and no methods.
techniques
Structured product data, technical SEO, catalogue migration, quote flow.
came in
A direct-sales site for the producer.
examined
Product variant structure, the need for a reusable core.
decisions
A reusable e-commerce core rather than one-off code; a custom panel rather than an off-the-shelf admin.
techniques
Laravel 12, Inertia, Vue 3, a PRD-driven automation loop.
came in
Moving a 242-screen CRM with four accounting integrations to a modern stack; 30 days, fixed price, no partial delivery.
examined
Screen count, integration surface, data migration risk, the ratio of time to scope.
decisions
No proposal. This scope in 30 days is not realistic; promising that timeline to a buyer who rejects partial delivery would not have been honest.
techniques
Not described.
came in
A printed form moved to the web for applications opened by a change in law, on a tight deadline.
examined
Form fields and their conditional logic, a reference list of about 25,000 records, the review unit's workflow, hosting options.
decisions
Form fields manageable from the panel; a multi-user review panel; Laravel rather than plain PHP.
techniques
Laravel, staged form, list matching, role-based review.
came in
A directorate's web, graphic, notice and news requests made written and trackable; event tracking.
examined
Existing request channels, the approval hierarchy, the variety of forms, a second unit's CRM-like need.
decisions
A separate application rather than an embedded module; forms and flows designable by an administrator; sign-in through institutional SSO.
techniques
JSON form schema, versioning, workflow builder, SAML2, Vue dashboard.
came in
Visitors unable to find answers across close to seven thousand pages.
examined
Content distribution and quality, how structural modules convert to text, the bilingual corpus, the risk of fabricated answers.
decisions
Source-citing answers; the evaluation pipeline as part of the product; a vector index on the existing database.
A marketing site for an authentication API that verifies a selfie with liveness detection in about 87 ms, stores no raw images and keeps only encrypted embeddings. The audience is developers and technical decision makers.
examined
Which parts of the promise are measurable (latency, liveness, encryption, KVKK/GDPR), the conversion model (free API sign-up, upgrade to Starter/Pro, sales contact for Enterprise), how the competitors (AWS Rekognition, Azure Face, FaceIO) present themselves.
decisions
The headline is a measurement, not a sentence: latency as a number on the first screen. A code sample on the first screen and a single monospace face for the developer audience. One accent colour on a dark ground; the privacy promise (no raw images stored) on the first screen. A six-page marketing site delivered as a clickable prototype.
techniques
Design system (Inter Tight + IBM Plex Mono, single accent), clickable prototype, a CC BY 4.0 licensed 3D wireframe model.