Skip to main content
Engineering/technical-intent-parser

Technical Intent Parser

You need to decompose a feature description into structured technical signals – systems, services, data entities, backend actions, and event triggers.

Contributed by: Mark Whaley · Source: PM Starter Kit

Use this when a PM needs to bridge the gap between product language and engineering architecture. Takes a feature name, description, and acceptance criteria and decomposes them into structured technical signals — systems, services, data entities, UI components, backend actions, and event triggers — that downstream analysis skills can reason about.

This skill is the entry point for the Feature Impact Radar pipeline: /technical-intent-parser/architecture-context-reviewer/repository-discovery/codependency-analyzer.

Process

Step 1: Gather inputs

Ask the user:

  1. Feature name — A short name for the feature or capability.
  2. Feature description — What the feature does, in product language.
  3. Acceptance criteria (REQUIRED) — The conditions that must be true for the feature to be considered complete. If acceptance criteria are missing, stop and request them before proceeding.
  4. User flow (optional) — If available, the step-by-step interaction the user follows.

Step 2: Identify which personas are affected

Before generating the intent model, prompt the user:

Persona check: Which user persona(s) does this feature serve? If you have defined personas (e.g., from /persona-create or /persona-draft), name them. If not, describe the key user types briefly.

This grounds the decomposition in real user context and ensures the technical signals map to actual user outcomes, not just system internals.

Step 3: Identify systems involved

Map the feature to logical system domains implied by the description and acceptance criteria. Only include systems clearly implied by the request — do not invent systems.

Common system domains:

  • authentication, billing, notifications, search, payments, user profile, messaging, analytics, scheduling, content management

Step 4: Identify data entities, UI components, backend actions, and event triggers

For each category, extract what the feature implies:

Data entities — Business objects mentioned or implied (e.g., user, order, invoice, subscription, reminder, document).

UI components — User-facing surfaces affected (e.g., settings page, dashboard widget, notification panel, form, modal). Only include if the feature explicitly involves user interaction.

Backend actions — Core system responsibilities required to satisfy the acceptance criteria (e.g., create, update, retrieve, schedule, validate, authorize, send, process, store).

Event triggers — Signals that imply asynchronous behavior (e.g., due date reached, user action, scheduled job, system state change, webhook). Events often drive cross-service dependencies.

Step 5: Produce the technical intent model

Present the structured output:

## Technical Intent Model — (Feature Name)

**Date:** (Date)
**Persona(s):** (Persona names from Step 2)

---

### Systems Involved
- (System domain 1)
- (System domain 2)

### Possible Services
- (Candidate service 1 — kebab-case, e.g., billing-service)
- (Candidate service 2)

### Data Entities
- (Entity 1)
- (Entity 2)

### UI Components
- (Component 1)
- (Component 2)

### Backend Actions
- (Action 1)
- (Action 2)

### Event Triggers
- (Trigger 1)
- (Trigger 2)

Step 6: Review and validate

Ask the user:

  • Does this decomposition match your understanding of the feature?
  • Are there systems or entities I missed?
  • Do the event triggers capture the async behavior you expect?
  • Ready to proceed to /architecture-context-reviewer with these signals?

Adjust as needed.

Related skills

  • /architecture-context-reviewer — next step: retrieve verified architecture context for the systems and entities identified here.
  • /repository-discovery — maps verified services to code repositories and maintainers.
  • /codependency-analyzer — extracts evidence-based dependencies from the identified codebases.
  • /prd-draft — when you need to write the PRD that defines the feature this skill decomposes.
  • /story-write — when you're ready to write stories after the full impact analysis.

Output location

Present the technical intent model as formatted text in the conversation. The output feeds directly into /architecture-context-reviewer and downstream pipeline skills. The user may also copy it into planning documentation or feature briefs.

Example Output

Input

  • Feature name: Automated Invoice Retry
  • Feature description: When a customer's payment fails during subscription renewal, automatically retry the charge on a configurable schedule (e.g., day 1, day 3, day 7) and notify the customer at each attempt. If all retries are exhausted, downgrade the account to a free tier and send a final dunning email.
  • Acceptance criteria:
    • Failed payment triggers a retry schedule immediately
    • Retry attempts occur on days 1, 3, and 7 after initial failure
    • Customer receives an email notification before each retry attempt
    • After 3 failed retries, subscription status is set to past_due then canceled
    • Account is downgraded to free tier upon cancellation
    • Admin dashboard displays retry history and current dunning status per customer
    • All retry events are logged with timestamp, attempt number, and outcome
  • User flow: Payment fails at renewal → customer receives heads-up email → system retries on schedule → customer can update payment method from email link → if unresolved, account downgrades and final email is sent

Output (abbreviated)

Technical Intent Model — Automated Invoice Retry

Date: 2025-01-14 Persona(s): Paying Subscriber (self-serve B2B customer managing their own account); Finance Admin (internal operator monitoring dunning health across accounts)


Systems Involved

  • billing
  • notifications
  • authentication / identity
  • user profile / account management
  • analytics / audit logging

Possible Services

  • billing-service
  • subscription-service
  • payment-retry-scheduler
  • notification-service
  • account-lifecycle-service
  • audit-log-service

Data Entities

  • Invoice
  • PaymentMethod
  • Subscription
  • RetrySchedule
  • DunningAttempt
  • Account (with tier/status)
  • NotificationEvent

UI Components

  • Admin Dashboard — dunning status table (retry history, attempt count, outcome per customer)
  • Customer email — payment failure notice with "Update Payment Method" CTA link
  • Account settings page — payment method update form (linked from email)
  • Status badge / indicator — subscription state (active, past_due, canceled) visible in admin view

Backend Actions

  • Detect failed payment event from payment processor webhook
  • Create and persist RetrySchedule upon first failure
  • Schedule timed retry jobs (day 1, day 3, day 7)
  • Execute charge retry against stored PaymentMethod
  • Update Invoice and DunningAttempt status after each attempt outcome
  • Evaluate exhaustion condition (3 failed retries)
  • Transition Subscription status: activepast_duecanceled
  • Downgrade Account to free tier upon cancellation
  • Send pre-retry and post-exhaustion dunning emails via notification-service
  • Write structured log entry per retry event (timestamp, attempt number, outcome)

Event Triggers

  • payment.failed — webhook from payment processor initiates retry schedule creation
  • retry.scheduled — internal timer event fires retry job on days 1, 3, 7
  • retry.succeeded — clears dunning state, restores active subscription
  • retry.failed — increments attempt counter, triggers customer notification
  • retries.exhausted — fires account downgrade and final dunning email workflow
  • subscription.canceled — downstream trigger for account-lifecycle-service to apply free-tier entitlements
  • payment_method.updated — customer self-serve action that may cancel pending retry schedule

Review questions before proceeding:

  • Does the retry schedule (day 1 / 3 / 7) need to be admin-configurable per plan type, or is it fixed globally?
  • Is the free-tier downgrade reversible if the customer updates their payment method after cancellation?
  • Should payment_method.updated cancel the active retry schedule or allow the next scheduled retry to run naturally?
  • Ready to pipe these signals into /architecture-context-reviewer to validate which of these services exist in your current architecture?