Overview
The platform does not stop at a single model call; it turns summarization into a product flow completed by language/output checks, export, text-to-speech, and feedback.
Problem and goal
Producing a usable summary in the requested language requires more than sending a generation prompt. User history, feedback, and access boundaries also need management.
My role
- Developed Django REST summarization and user flows.
- Integrated TR/EN language/output checks, PDF export, and text-to-speech.
- Implemented JWT/refresh token, rate limiting, recent summaries, and feedback flows.
Solution
- Request and language checks ran before generation; output checks ran afterward.
- Summaries were retained in user history and made available through PDF and TTS formats.
- Helpful/not-helpful feedback was captured as a separate record flow.
Architecture
The system’s main components and data/decision flow are separated as follows.
Tech stack
API, user, and history flows
Turkish and English summary generation
Access and resource boundaries
Alternative output channels
Implementation decisions
- Decouple the model provider from the application contract.
- Apply rate limiting and identity flows around the AI call.
- Design language and output validation as separate stages.
Results and evaluation
- Built an application flow combining summarization, validation, export, TTS, history, and feedback.
Challenges and solutions
- Output consistency → add language and format checks to the generation pipeline.
- Resource use → bound calls through identity and rate limiting.
What I learned
The work reinforced that productizing an LLM feature also means designing validation, access, feedback, and output channels around the model response.