Generate an ASC 606 / IFRS 15 revenue recognition engine for SaaS — the five-step model (identify contract, identify performance obligations, determine transaction price, allocate to performance obligations, recognize as POs are satisfied) applied to subscription contracts.
The English summary is being prepared. Showing the original description.
Review the instructions the agent will receive before you install.
ASC 606 / IFRS 15 Revenue Recognition Engine for SaaS
You generate a production-grade revenue recognition engine. ASC 606 (Topic 606) and IFRS 15 are converged standards — same five-step model — applied differently to SaaS than to product sales. Getting it wrong is a material weakness; getting it right earns a clean audit.
The core rule: revenue is recognized when (or as) you satisfy a performance obligation, not when cash is received. A customer paying $12k for an annual subscription generates $1k/month of recognized revenue, not $12k on day one. The contract value sits in deferred revenue until performed.
Reporting standard: US GAAP (ASC 606) or IFRS (IFRS 15). Identical model, footnote differences.
Contract types in scope: standard subscription, multi-year, ramp deals (e.g., $5k/mo year 1, $10k/mo year 2), usage-based, hybrid (committed + overage), one-time license + maintenance.
Billing platform: Stripe (subscriptions + metered), Chargebee, Maxio (Stax Bill), Recurly, Zuora, custom. Drives where billing events come from.
Implementation / training / data migration: sold separately or bundled? If bundled, may need SSP allocation.
Contract acquisition costs: sales commissions, broker fees — capitalize per ASC 340-40 if amortization period > 1 year.
Audit posture: pre-revenue (no audit yet), SOC 2 for ops, full SOX (public or pre-IPO).
Recovery:
If contract structure is simple (single SaaS subscription, no implementation, monthly billing), reduce to the minimum viable engine: pro-rate over service period, recognize ratably.
If contracts are complex (ramps, modifications, usage tiers), surface that complexity is real and outputs require accounting review.
Parties have approved the contract (written, oral, or implied) and are committed.
Each party's rights are identifiable.
Payment terms are identifiable.
Contract has commercial substance.
Collection is probable (more likely than not).
Generate contract.py capturing:
@dataclass
class Contract:
id: str
customer_id: str
signed_date: date
start_date: date
end_date: date # subscription term
contract_value_committed: Decimal # MRR × months OR fixed total
payment_terms: PaymentTerms
auto_renews: bool
cancellation_terms: CancellationTerms
related_contracts: list[str] # for combined-contracts analysis
Contract combination rule: separate written contracts may need to be combined if (a) negotiated as a package, (b) consideration in one depends on the other, or (c) services are a single PO. Flag this on signed-date proximity (within 30 days) for human review.
A performance obligation is a distinct promise. Test for distinct:
Can the customer benefit from the good/service on its own or with other readily-available resources?
Is the promise separately identifiable from other promises in the contract?
Common SaaS PO splits:
Item
Typical PO treatment
Subscription access
Single PO — series of distinct daily services, recognized over time
Implementation services
If material modification of platform → bundled with subscription; if standalone capability → separate PO
Data migration
Usually bundled (no value without subscription)
Training
Often separate PO if generic; bundled if proprietary
Customer success / CSM
Usually subsumed into subscription (no standalone value)
Custom development
Separate PO if customer takes title to IP
Premium support tier
Separate PO (distinct value)
Setup fee (non-refundable)
Not a PO — material right or up-front payment → recognized over expected customer life
Generate performance_obligations.py that takes a contract and outputs a list of PO records with recognition_pattern enum: OVER_TIME_RATABLE, OVER_TIME_USAGE, OVER_TIME_INPUT_METHOD, POINT_IN_TIME.
VALIDATION: Standard subscription = 1 PO recognized ratably. Implementation w/ standalone value = 2 POs.
Total consideration the entity expects, including:
Fixed consideration (subscription fee × term)
Variable consideration (usage overage, performance bonuses, refunds) — estimate using EITHER expected value OR most-likely-amount, whichever better predicts.
Constraint on variable consideration: only include amounts not subject to "significant revenue reversal" — i.e., be conservative on usage estimates that haven't materialized.
Significant financing component (if payment is > 1 year before/after performance) — discount to present value.
Non-cash consideration at fair value.
Consideration payable to customer (rebates, credits) — reduce transaction price.
For POINT_IN_TIME POs (e.g., one-time license, where customer gains control), recognize the full allocated amount when delivered/transferred.
For USAGE-BASED POs, recognize as usage is consumed.
Generate recognition_engine.py that takes contract + as-of date + previously recognized + usage data → emits new revenue and updated deferred balance per PO.
Generate journal entries (double-entry):
Event
Dr
Cr
Invoice issued (annual prepaid)
A/R
Deferred revenue
Cash collected
Cash
A/R
Month-end revenue recognition (1/12 of subscription)
Sales commissions paid to obtain a contract are capitalized if the amortization period > 1 year (practical expedient for shorter periods). Amortize over expected customer life, not just initial contract term.
Generate commissions.py:
Record commission as asset on payment.
Amortize over expected life (e.g., 5 years for a 1-year contract with 80% renewal rate).
Impair if customer churns.
VALIDATION: Asset balance reconciles to expected-life amortization schedule.
Audit-credible: Would a Big Four manager accept the engine output as ASC 606 compliant?
Common gap: treating non-refundable setup fees as POs. They're material-right / up-front consideration recognized over expected customer life, not at contract start.
Run a full Section 508 + WCAG 2.2 Level AA accessibility audit on a federal / .gov / public-sector website or ICT product. Triggers: "Section 508", "508 audit", "WCAG", "VPAT", "ACR".
The English summary is being prepared. Showing the original description.
Analyzes actuarial modeling systems for loss reserving accuracy, premium pricing methodology, mortality/morbidity tables, stochastic modeling, and capital adequacy per SOA and Solvency II standards..
The English summary is being prepared. Showing the original description.
Analyzes advertising yield across programmatic and direct-sold inventory including CPM/CPC/CPA performance, header bidding efficiency, fill rate optimization, inventory monetization strategies, and compliance with IAB standards and OpenRTB protocols..
The English summary is being prepared. Showing the original description.
Create and manage Architecture Decision Records using the Michael Nygard format. Triggers: you need to document architecture decisions, record technical choices, explain why a technology was chosen.
The English summary is being prepared. Showing the original description.
Analyzes affordable housing management software for unit allocation algorithms, waitlist management, income verification workflows, Fair Housing compliance, LIHTC and Section 8 program tracking, inspection scheduling, and tenant reporting..
The English summary is being prepared. Showing the original description.
Rewrites existing landing pages, blog posts, and documentation so AI search engines (Google AI Overviews, ChatGPT, Perplexity, Claude, Gemini) cite them. Triggers: an existing page underperforms in AI answers despite ranking well in classic SERPs.
The English summary is being prepared. Showing the original description.