Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 16 additions & 3 deletions .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,22 @@ jobs:
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
plugins: 'code-review@claude-code-plugins'
prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
prompt: |
REPO: ${{ github.repository }}
PR NUMBER: ${{ github.event.pull_request.number }}

Please review this pull request and provide feedback on:
- Code quality and best practices
- Potential bugs or issues
- Performance considerations
- Security concerns
- Test coverage

Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback.

Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR.

# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
claude_args: '--allowed-tools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)"'

15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# `profitable`

## [Unreleased]
- Add `Profitable.ttm_revenue` for trailing twelve-month revenue
- Add `Profitable.ttm` as a founder-friendly alias for `ttm_revenue`
- Add `Profitable.revenue_run_rate`, `estimated_arr_valuation`, `estimated_ttm_revenue_valuation`, and `estimated_revenue_run_rate_valuation`
- Make revenue metrics net of refunds when `amount_refunded` is present
- Make subscriber and MRR metrics distinguish between current billable subscriptions and historical period events
- Count `new_customers` from first monetization date rather than signup date
- Count `new_subscribers` / `new_mrr` from when a subscription becomes billable, not when a free trial starts
- Handle additional Pay status variants like `on_trial`, `cancelled`, and `deleted`
- Keep grace-period subscriptions billable until `ends_at`
- Exclude metered Stripe items from fixed run-rate MRR calculations
- Surface TTM revenue in the built-in dashboard

## [0.4.0] - 2026-02-10
- Add monthly summary (12mo) and daily summary (30d) tables to dashboard
- Add `period_data` method for efficient batch computation of period metrics
Expand Down Expand Up @@ -32,4 +45,4 @@

## [0.1.0] - 2024-08-29

- Initial test release (not production ready)
- Initial test release (not production ready)
257 changes: 244 additions & 13 deletions README.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/controllers/profitable/dashboard_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ def index
@mrr = Profitable.mrr
@mrr_growth_rate = Profitable.mrr_growth_rate
@total_customers = Profitable.total_customers
@ttm_revenue = Profitable.ttm_revenue
@all_time_revenue = Profitable.all_time_revenue
@estimated_valuation = Profitable.estimated_valuation
@average_revenue_per_customer = Profitable.average_revenue_per_customer
Expand Down
4 changes: 4 additions & 0 deletions app/views/profitable/dashboard/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@
<h2><%= @mrr.to_readable %></h2>
<p>MRR</p>
</div>
<div class="card">
<h2><%= @ttm_revenue.to_readable %></h2>
<p>TTM revenue</p>
</div>
<div class="card">
<h2><%= @estimated_valuation.to_readable %></h2>
<p>Valuation at 3x ARR</p>
Expand Down
Loading
Loading