Doctoral applicant
Danil Tyumentsev
Research field 5.2.6 “Management”
I study product-portfolio management in a small technology company: how to decide on launching, pausing and closing products when external conditions change faster than the planning cycle. The research material is ten of my own products in production.
- Products in production
- 10
- Domains on one server
- 14
- Databases
- 11
- Payment providers
- 4
Research interest
Research interest
Research field 5.2.6, “Management”. The area is digital product-portfolio management under regulatory and technological uncertainty. The empirical base is not borrowed: these are my own products, for which the decisions, their rationale and their consequences — including the unsuccessful ones — are available.
Lines of enquiry
- 01
Product-portfolio management under regulatory constraints
How a micro-company allocates limited resources across products when external constraints can devalue any of them within a week. Criteria for pausing and closing a line of work as a management instrument rather than an admission of defeat.
- 02
Unit economics of subscription services under a multi-provider payment scheme
What happens to margins when payment acceptance is spread across several providers with different fees, currencies and reliability, while part of the cost base is variable. The effect of pricing constants and currency conversion on realised margin.
- 03
Operational resilience and incident management in small technology companies
How a company without a dedicated operations team builds reversibility of changes, failure detection and security-incident response. The price of choosing “irreversible but fast”.
Management competencies
Management competencies
Each competency is backed by a specific decision in a specific project, not by a line in a CV.
Product-portfolio management
Ten products on shared infrastructure at different lifecycle stages: some in production, some in development, one deliberately paused. The decision to pause was made on economics, not on fatigue with the project.
Evidenced by projects
Unit economics and pricing
Prices derive from calculated cost rather than from competitors. A pricing defect was found and quantified, in which a hard-coded rate inflated the customer price by roughly a quarter; for the generator the model was changed so that the costly operation is the one being charged for.
Evidenced by projects
Vendor management
Four payment providers, a card issuer, an eSIM profile vendor, infrastructure sites. The governing principle: store the external event first, process it second, and detect state divergence through regular reconciliation rather than through a customer complaint.
Evidenced by projects
Operational resilience and incident management
Changes to live systems are made reversibly: backup, configuration check before applying, rollback window. During a security incident the full cycle was executed — detection, containment, an access-rotation plan, and prioritisation by blast radius.
Evidenced by projects
Development and release management
Staged rollout without service interruption, separation of operator permissions, an action log, and documentation of architectural decisions together with the alternatives that were rejected. The launch date follows a list of conditions, not a calendar.
Evidenced by projects
Projects
Projects
10 projects in the portfolio
Ten products on shared infrastructure. For each one: the management problem it addressed and how it ended — including the ones that were paused.
012024 — н. в.In productionPromVPNA subscription network-access service: a Telegram bot, a Mini App and a web dashboard on top of self-managed server infrastructure. The product operates in a regulatory environment where technical conditions change faster than any planning cycle.
Management role
Product owner, head of development and operations
Problem
The key product risk is not competition but external constraints: addresses and protocols fail without warning, while the user must not have to reconfigure anything. A separate difficulty is keeping a single stable link on the client side through a complete change of internal configuration.
Approach
A “one link, interchangeable profiles” architecture: the subscription serves configuration dynamically, so switching protocol or site requires nothing from the user. Several independent transports run in parallel, so the failure of one does not mean the failure of the service. Changes to the live system are rolled out in stages, with a backup and a configuration check before any restart.
Outcome
The service survived several waves of blocking without migrating users to new links. This produced a management practice later carried over to the other products: reversible changes, a rollback window, and a pre-restart check as a mandatory part of every release.
Figures
- Transport protocols
- 4
- Points of presence
- 3
- Years in production
- 2
Technical scope
- Python
- aiogram
- FastAPI
- PostgreSQL
- Xray
- Next.js
- nginx
022024 — н. в.In productionFloxio — infrastructure panelThe internal layer beneath PromVPN: traffic accounting, access provisioning, node health and limits. Not a customer-facing product but a tool for managing capacity and cost.
Management role
Architect, accountable for operations
Problem
Without consumption accounting you can neither price a plan nor tell when capacity will run out. Yet the data source is a set of network services that report statistics inconsistently, and some counters stay silent because of configuration.
Approach
A regular one-minute metric collection loop with a dedicated history store. Discrepancies were traced to root cause rather than papered over: some of the “zeros” turned out to be incomplete provisioning, not absence of traffic. The gaps found were written up as prioritised operational defects.
Outcome
A factual basis for pricing and capacity planning replaced eyeball estimates. A separate class of defects was documented: cases where the system shows plausible but wrong numbers — more dangerous than an outright failure.
Figures
- Metric collection interval
- 60 с
- Managed nodes
- 3
Technical scope
- Python
- PostgreSQL
- Xray
- systemd
- Grafana-подход к метрикам
032025 — н. в.In productioneSIM PROMSale of travel eSIM profiles: storefront, magic-link sign-in, ordering and profile delivery, purchase history. Procurement from an external vendor in foreign currency, sales in roubles.
Management role
Product owner, accountable for unit economics
Problem
A foreign-currency catalogue with rouble revenue is a pricing problem, not an interface one. The conversion rate turned out to be hard-coded and had drifted from the market by roughly a quarter: the customer price was inflated, and the live rate source was unreachable from the server.
Approach
The defect was framed as a management issue rather than a technical one: what it costs the customer and the seller, and why the inverted price bands make some plans structurally unprofitable. The product was moved to its own domain and database with a full data migration and a sign-in check before cutover.
Outcome
The migration completed without data loss or downtime for buyers. The pricing defect was escalated as a separate decision with an impact estimate — a clear case of a single constant costing more than a month of product work.
Figures
- Orders placed
- 17
- Payments processed
- 12
- FX gap before the fix
- ≈28 %
Technical scope
- Next.js
- TypeScript
- PostgreSQL
- Prisma
- внешний API поставщика
042025 — н. в.In productionPayBot — invoicingA tool for sales managers: deal, invoice, payment link, confirmation of payment. A manager workspace plus an admin layer with separated permissions.
Management role
Product owner, designer of the sales process
Problem
Payment is confirmed by a webhook from an external provider. If the application is unavailable at that moment the notification is lost, and the deal stays permanently unpaid in the system while the money has in fact arrived. For a sales process that costs more than interface downtime.
Approach
Payment handling was rebuilt around an outbox pattern: receiving the webhook is separated from processing it, and redelivery does not create duplicate deals. An admin view surfaces any divergence between the provider’s status and ours.
Outcome
Payment stopped depending on whether the service happened to be up at a given second. This produced a principle later applied to every other payment integration: store the external event first, process it second.
Figures
- Payment links issued
- 267
- Deals in the system
- 110
- Access roles
- 3
Technical scope
- Python
- aiogram
- PostgreSQL
- вебхуки платёжного провайдера
- nginx
052025 — н. в.In productionKoshelich — personal finance trackingExpense tracking through Telegram, by text and by voice. The core hypothesis: people abandon finance apps because of friction at input, not because of reports.
Management role
Product owner, author of the input scenarios
Problem
Every extra second and extra screen when logging an expense lowers the odds the entry is made at all. The classic “amount — category — date” form loses to a single spoken sentence.
Approach
Input was reduced to a single message: a short phrase or a voice note from which amount, category and comment are extracted. Voice processing runs server-side so as not to depend on the phone’s capabilities.
Outcome
Input stopped being the barrier: logging an entry takes less time than opening an app. The product doubles as a testbed for retention hypotheses before they are moved into the paid services.
Figures
- Transactions logged
- 83
- Input methods
- 2
Technical scope
- Python
- aiogram
- PostgreSQL
- распознавание речи
- pm2
062025 — н. в.In developmentPROM GeneratorA short-video production pipeline: script, voice-over, subtitles, assembly, scheduled publishing. A product whose unit cost is not zero — which changes the entire economics.
Management role
Product owner, accountable for the monetisation model
Problem
An unlimited subscription is impossible here: every clip consumes machine time and external calls. The classic “pay monthly, use as much as you like” model with such a product reliably turns heavy users into losses.
Approach
The pricing model was split: publishing and scheduling are unlimited, generation is what you pay for. Per-clip cost was calculated and used to size the render farm needed for the declared volume. Launch is deliberately held until a list of blocking conditions is closed rather than fixed to a calendar date.
Outcome
There is a pricing grid derived from calculation rather than from competitors’ prices, and an explicit list of launch conditions. A deliberate delay is a management decision too: shipping a negative-margin product costs more than waiting.
Figures
- Pricing tiers
- 3
- Pipeline stages
- 5
Technical scope
- Next.js
- TypeScript
- PostgreSQL
- очередь рендера
- ffmpeg
- планировщик публикаций
072025 — н. в.PausedFreelanceBot / CodiAn aggregator of freelance-marketplace postings with keyword-subscription alerts. A project honestly carried through to the conclusion “the hypothesis did not hold”.
Management role
Product owner, demand-hypothesis testing
Problem
Data collection depends on third-party sites: they change markup and add anti-automation defences without notice. A working collector at some point started returning nothing — with the application itself entirely healthy.
Approach
The accumulated posting dataset was preserved and analysed to separate the product conclusion from the technical failure. Development was paused deliberately: maintaining collection requires continuous investment, and demand for alerts fell below the break-even threshold.
Outcome
A dataset of 8,659 postings was collected and analysed as a basis for market assessment. Resources were redirected to products with confirmed payment. Closing a line of work on time is part of portfolio management, not a sign of failure.
Figures
- Postings parsed
- 8 659
- Collection sources
- 3
Technical scope
- Python
- PostgreSQL
- парсеры площадок
- aiogram
- Next.js
082025 — н. в.In productionPromCard — virtual cardsIssuance of virtual payment cards through an external issuer: application, issuance, balance, transaction history. Plus an in-house content pipeline for search traffic.
Management role
Product owner, accountable for issuer reconciliation
Problem
Working with an external issuer, the state in our database and the state at the issuer diverge: applications remain for which no card was actually issued, and vice versa. The divergence surfaces only on explicit reconciliation, never in the interface.
Approach
A reconciliation procedure with the issuer was introduced, real card-state indicators were surfaced in the lists, and the “ghost cards” found were collected into a separate register. Fund write-offs and card closures happen only after explicit owner approval — irreversible operations are not automated.
Outcome
The first card was issued and taken through the full lifecycle. The handling of irreversible operations was fixed as a rule: first the register and the assessment, then approval, and only then execution.
Figures
- Published articles
- 4
- Articles in the pipeline
- 11
Technical scope
- Next.js
- TypeScript
- Prisma
- PostgreSQL
- API эмитента
- nginx
092026 — н. в.In developmentUnified administration panelA shared control layer above all products: a person card, access extension, support, and an operator action log.
Management role
Solution architect
Problem
The products grew separately, each with its own database of live users. The obvious solution — merging everything into one shared database — would create tight coupling: a schema change in one product would break the others, and a mistake in the panel would hit everyone at once.
Approach
The inverse architecture was chosen: the panel keeps a small database only for what belongs to it (operators, audit log, tickets, identity mapping), while product data is read through their narrow internal interfaces. Each product decides what to expose — least privilege. Operator access uses two-factor authentication and role separation.
Outcome
A panel outage does not take the products down, and a product schema change does not require changing the panel. The architectural decision was made before any code was written and documented together with the rationale for rejecting the alternative.
Figures
- Products in scope
- 4
- Access levels
- 3
Technical scope
- Next.js
- TypeScript
- PostgreSQL
- служебные API продуктов
- RBAC
- 2FA
102025 — н. в.In productioncode-package.comA bilingual services storefront. A side result that proved useful: verifying that several independent sites can share one server without dedicated infrastructure for each.
Management role
Owner, offering design
Problem
A dedicated server per site is a recurring cost that creates no value. But co-hosting has its own price: the shared port entry point must route traffic correctly, or a single new domain breaks all the others at once.
Approach
Domain-name routing is configured so that adding a site is an isolated change with a configuration check before it is applied and a rollback path. Some content is separated by domain inside a single application — where standing up a separate service would cost more than it is worth.
Outcome
Around fourteen domains run on a single server, and infrastructure cost does not grow linearly with the number of projects. Adding a domain became a repeatable procedure rather than a one-off feat.
Figures
- Domains on one server
- ≈14
- Language versions
- 2
Technical scope
- Next.js
- TypeScript
- nginx
- Let’s Encrypt
- pm2
Incident management
Responding to a production-server compromise
Through a framework vulnerability (CVE-2025-55182) a production host received unauthorised access and a foreign process was started. The sequence: detection through a consumption anomaly, containment, blast-radius assessment, a register of credentials for mandatory rotation prioritised by confirmed exposure, and only then the upgrade of the vulnerable component in an agreed window. User-facing services were not taken down.
- Detected through a resource-consumption anomaly, not an external report
- Containment carried out before root-cause analysis
- Credential rotation prioritised by confirmed exposure, not alphabetically
- The vulnerable component upgraded in a separate, agreed window
Documents
Documents
CV, list of works and supporting materials for the admissions committee.
Documents will be published later.
Contact
Contacts
Open to discussing the research topic and academic supervision.
- Website
- prom-project.com