Public documentation for a commercial SaaS platform built with Python. The system guides users through a structured content creation process using their brand profile, private knowledge base, and large language model APIs.
The source code remains private due to the commercial nature of the project. This repository presents the product, system architecture, data model, and key engineering decisions.
- Status: live and used in production
- Application: ai.akademia100k.pl
- Access: private; the public route displays the sign-in interface, while product features require an authorized customer account
- Portfolio access: sanitized screenshots were captured from an authorized administrator account
The administrator view intentionally exposes internal test assistants, system configuration, and aggregate usage statistics. Standard users see only published assistants assigned to their role and cannot access the administration dashboard.
The administrator-only production dashboard recorded the following aggregate usage at the time of the portfolio capture:
| Metric | Value |
|---|---|
| Users | 222 |
| Conversations | 3,664 |
| Messages | 24,196 |
These figures demonstrate sustained use beyond a prototype or internal proof of concept. The application interface and statistics contain no customer content in the portfolio materials.
The production interface is intentionally presented in Polish because the platform was built for the Polish market.
Administrator dashboard. Administrators can access internal test assistants and management features. Standard users see only published assistants assigned to their role.
Administrator analytics. This protected view exposes aggregate production usage without displaying customer content or personal information.
Public sign-in page. The production application is private and its features require an authorized customer account.
I was responsible for the technical direction of the platform: system architecture, backend and AI integration decisions, delivery planning, production hardening, and the prioritization of follow-up work.
After resolving the high- and medium-risk engineering issues, I turned the remaining low-priority backlog into a supervised development track for a junior developer. I defined bounded tasks, acceptance criteria, architectural constraints, and review checkpoints while retaining ownership of security, data integrity, and LLM reliability decisions.
- Python and Django — application logic, authentication, administration, and integrations
- PostgreSQL and pgvector — application data, access control, semantic search, and job queues
- Django Templates, HTML, and CSS — server-rendered user interface
- LLM APIs — generation, analysis, classification, and knowledge-assisted workflows
- Python SDKs and packages — validation, retries, document extraction, and testing
| Document | Contents |
|---|---|
| 00 — Platform overview | Product, users, problems, and technology stack |
| 01 — System architecture | Django layers, data flows, security, and background jobs |
| 02 — Data model | Django models, PostgreSQL tables, roles, RLS, and pgvector |
| 03 — AI layer and assistants | LLM integration, knowledge base, validation, and state machines |
| 04 — Lessons and roadmap | Decisions, delivered improvements, and remaining low-priority work |
- all model communication happens in server-side Python;
- prompts and assistant configuration are versioned in PostgreSQL;
- model outputs are validated against a closed knowledge base;
- semantic search is implemented with
pgvector; - roles and permissions are enforced by Django and PostgreSQL;
- the administration interface is built on Django Admin;
- post-release improvements were prioritized by risk and delivered before further product expansion;
- low-risk backlog items were used to develop a junior engineer through scoped ownership and review;
- the user interface requires neither a separate frontend application nor a frontend build pipeline.


