Managing Self Driving Spend
PostHogOfficialPublished by PostHog
- Skill
- Workflow
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured workflow for auditing and managing the costs of Self-driving (Inbox) features. It enables users to understand their spending patterns by breaking down credits used by signal sources, scouts, and daily activity. By linking costs to report production and resolution rates, the agent helps identify inefficiencies and recommends specific, user-confirmed actions to reduce or cap expenses without compromising critical data ingestion.
What it does
- Calculates and explains monthly Self-driving spend in credits and USD.
- Drills down into spend by specific signal sources, scouts, and daily usage.
- Evaluates the yield and effectiveness of scouts and sources based on settled reports.
- Identifies high-cost areas within sources that account for significant spend.
- Recommends actionable controls like pausing scouts, setting limits, or adjusting source configurations.
- Applies cost-saving changes only after explicit user confirmation.
When to use it
- When you need to understand why your Self-driving or Inbox bill is higher than expected.
- When you want to identify which specific scouts or signal sources are driving the most costs.
- When you need to implement daily report limits or billing caps to control expenses.
- When you want to optimize your configuration by pausing underperforming scouts or sources.
- When you need to investigate daily spend spikes or evaluate the ROI of automated reporting.
Advantages
- Provides granular visibility into cost drivers by source and scout.
- Distinguishes between necessary operational costs and potential waste.
- Ensures safety by requiring explicit user approval before applying any configuration changes.
- Offers data-driven recommendations based on report resolution and yield metrics.
- Helps balance cost-saving measures with the need to maintain data integrity.
Usage examples
- “Why is my Inbox spend so high this month?”
- The agent will analyze the current month's usage, break down the spend by source and scout, and highlight any specific areas contributing to the high bill.
- “Can you help me reduce my scout costs?”
- The agent will evaluate scout performance and yield, then suggest specific scouts to pause or optimize based on their contribution to spend and report resolution.
- “How do I set a daily limit for my reports?”
- The agent will explain how to set the daily report limit in the settings and describe the impact on signal processing and potential data loss.
- “Which signal sources are costing the most?”
- The agent will provide a breakdown of spend by source, identifying those responsible for more than 10% of the total signal spend and offering a deep dive into their components.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/posthog/managing-self-driving-spend/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip managing-self-driving-spend.zip -d .agents/skills
Documentation by PostHog
Managing Self-driving spend
Start with posthog:inbox-usage-get for monthly recorded usage, including processing, research, repository selection, scout execution, and automatic report implementation.
Pass month: "YYYY-MM", or omit it for this month; history starts no earlier than October 2026, and a project's first receipt can be later.
Show amounts as AI credits, with the USD value next to them: multiply decimal credits by the returned pricing.usd_per_credit.
Recorded usage includes exempt work and is not an invoice; use posthog:billing-limits-get for the billing spend and limit.
On a large project these tools can return more than fits in your context. If yours saves the output to a file, parse the file with a script, and keep the fields you need.
Workflow
Scope. Use the selected project and requested dates, defaulting to this UTC calendar month. Read
posthog:inbox-usage-getandposthog:billing-limits-get. Use the returned canonicalproject_idfor SQL reconciliation; child environments resolve to their parent and require access there.Inventory. List sources with
posthog:inbox-source-configs-listand scouts withposthog:scout-config-list. Explain historical spend even for disabled items; recommend controls only where they still apply.By source and scout. Use the monthly tool's
sourcesandscouts; theirtotal_creditssum to the overall total. Sources include downstream research and implementation; scouts contain execution only, including runs with no reports.Drill down. Use
posthog:execute-sqlwith references/queries.md for custom dates, individual runs or reports, and finer source breakdowns. If the monthly tool is unavailable, use the SQL ledger subject to its access controls; report credits if no verified USD conversion is available.By day. Run "First receipt" and "Spend by day" in references/queries-spend.md, and investigate spikes by source, scout, or
kind.Yield. Run "Baselines", "Yield by signal source", and "Yield by scout" in references/queries-yield.md. Yield is the share of settled reports that were resolved. Compare each item with its baseline on both settled rate and cost per resolved.
Inside each large source. Run "Breakdown inside a source" in references/queries-source-parts.md for every source that holds more than 10% of signal spend. This finds the specific scanners, signal types, evaluations, alerts, or channels behind the spend, which is where most recommendations come from.
Recommend. Go through every control in references/controls.md and decide whether it applies, using references/recommendations.md. Before you judge a scout, find out what kind of scout it is. A quiet run or an unresolved report is not always waste. Name the specific item to change, give a dollar figure, say what the user loses, and say whether you can apply it.
Apply. Change nothing without an explicit yes for that specific change. references/controls.md lists the tool for each control, or where to change it in the app when no tool exists. Read the setting back after you change it.
Present the result with references/report-template.md.
Rules
Sum each
system.signal_spendrecord once. Signalmetadata.total_spend, scoutspend_credits, and report detail totals are copies or overlapping views, not additional charges.Filter finalized usage by
finalized_atwith inclusive start and exclusive end in UTC. Work started earlier can finalize in this period.Show
exempt_creditsas a subset, not an additional cost. Use receipt exemptions rather than excluding named sources or scouts; non-exempt usage is still not necessarily invoiced usage.Report
unsettled_credits,untracked_scout_run_count, and any row withincompletetrue. Unsettled credits cover work created in the requested month, exclude finalized totals, and are not the outstanding balance across all months. Missing receipts mean unknown cost.Explain the two summary flags by their cause.
incompleteis true when any work is unsettled, any scout run is untracked, or any row is incomplete, so it is usually true while Self-driving is running.attribution_incompleteis true when any spend has no source, which is the null-source row.Preserve unattributed costs, including implementation for deleted reports. Implementation is attributed to the report's current triggering signal, which can change.
Implementation usage covers automatic runs only. A fix that a person starts from a report is metered as PostHog AI, so it has no receipt here. Do not present implementation usage as the total cost of fixing reports, and do not estimate fix cost from pull request counts.
Use latest signal metadata only for attribution, with one embedding model and rendering. Do not filter metadata by signal arrival date when attributing period spend.
Reports need about 14 days to resolve, so measure yield on settled reports: reports first shown at least 14 days ago. Take them from the last 60 days, even when the spend period is shorter. When a source or scout has fewer than 20 settled reports, call its yield too new to judge, and recommend no cut that rests on it.
Do not treat a low resolved share as waste for a scout that measures, digests, or hands off work. references/recommendations.md says how to judge each kind.
Private scout trials are excluded from the SQL tables. Scout report counts can overlap; deduplicate IDs for project totals, and never add shared scout costs across report details.
A scout that rarely creates reports can still be useful if it edits existing ones. Check
edited_report_idsbefore you recommend pausing it.A scout with a pre-check can have few runs on purpose, because a skipped run leaves no run row. Read
last_precheck_atandlast_precheck_outcomebefore you call its runs missing.Turn off a source only after you check its narrowing settings and source steering. references/controls.md lists which sources read
steering.Never turn off error tracking ingestion or lower its rate limits to save Self-driving spend. That drops exception data permanently. Change the Self-driving source instead.
Files
- ATTRIBUTION.mdAdded by AutoGineer873 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md7.1 KiB
- references/controls.md16.2 KiB
- references/queries-controls.md4.0 KiB
- references/queries-source-parts.md5.3 KiB
- references/queries-spend.md5.0 KiB
- references/queries-yield.md7.1 KiB
- references/queries.md3.2 KiB
- references/recommendations.md10.2 KiB
- references/report-template.md2.5 KiB
references/recommendations.md
Recommendation rules
Go through every control in controls.md and decide whether it applies to this project. A good recommendation names the specific item to change (a scanner, a signal type, a scout, an evaluation), the evidence from the queries, the monthly saving in dollars, and what the user loses. "Reduce replay spend" is not a recommendation. "Turn off inbox findings for the 'Checkout errors' scanner: 3 of 140 reports resolved, saves about $40 a month" is.
Let the project's data decide what to keep. Do not assume that one signal type, scanner, or scout is always worth more than another. Skip any change that saves less than about $10 a month, unless the user asked about that item.
Estimate monthly spend
Use non-exempt recorded usage from complete UTC days after the project's first receipt (see "First receipt" in queries-spend.md).
Estimate a month as (5 * weekday_average + 2 * weekend_average) / 7 * days_in_month.
If the sample has no weekend day, use the average of all days and say that the figure can run high.
Scale each item's period spend by the same ratio, so the items and the total agree.
Label the result as an estimate, not an invoice forecast, and do not double-count overlapping controls.
Judge yield
Base every yield judgment on settled reports (see "Yield" in queries-yield.md), not on reports still waiting for a fix. Settled rate shows how often an item's reports get resolved, and cost per resolved shows what each fix costs. Use them together:
| Settled rate against the baseline | Cost per resolved against the baseline | What it supports |
|---|---|---|
| Low | Higher | Recommend turning it down or off |
| Low, with none resolved | No estimate possible | Recommend turning it down or off |
| Low | Same or lower | Worth a look. The fixes are cheap, so the user decides |
| Same or higher | Higher | Worth a look if the saving is large |
| Same or higher | Same or lower | No change |
A low rate is under about two thirds of the baseline's settled rate.
Compare sources with the source baseline and scouts with the scout baseline (see "Baselines" in queries-yield.md).
Fewer than 20 settled reports means the yield is too new to judge. Recommend no cut that rests on it.
Fewer than about 3 expected resolved reports (
reports_created * settled_rate) makes cost per resolved too unstable to use. Say so, and judge on the settled rate and raw spend.Running something less often is a lighter cut than turning it off. A low rate alone can support it.
For a scout that is too new, read "Outcomes of reports too new to settle" in queries-yield.md. A large share already resolved is a reason to leave it alone. A large share dismissed is a reason to look closer, not a reason to cut.
Know what a scout is for
Yield only measures a scout whose job is to find problems for people to fix.
Before you judge a scout, read its description, output_destinations, structured_output_schema, and scout_role from posthog:scout-config-list, and read "What a quiet scout does" in queries-yield.md.
| Kind of scout | How to recognize it | How to judge it |
|---|---|---|
| Finder | Reports for people to act on. Includes scouts that sweep a codebase or list in pages | Use yield. Running a sweep less often makes each pass through the code or list take longer. Say so |
| Watchdog | Watches for rare events such as abuse or failures. Its summaries show checks that found nothing | Quiet runs are the expected result. Prefer a pre-check, which keeps detection time. Run it less often only when detection time does not matter |
| Measurement | Has a structured_output_schema, and its description says it records, measures, or judges | Yield does not apply. Ask how many samples are needed, and check whether alerts or dashboards read the series before you run it less often |
| Digest or handoff | inbox is false, delivers to Slack or a canvas, or hands work to a named person or team | Yield does not apply. Ask its owner how fresh it must be. Run it less often before you suggest a pause |
| Operational | scout_role is operational. Watches Self-driving itself | Do not recommend pausing it |
What to check
Spend limit. Compare the current limit with billed spend from
posthog:billing-limits-getand with the monthly estimate, keeping recorded usage separate. Billing periods need not match UTC months, so read the period fromposthog:billing-usage-summary-get. It also shows whether PostHog is limiting the product now. If the limit is below the estimate, put this first and say on which day of the period the limit would be reached. If billed spend is far below recorded usage, for example $0.00, do not call the limit reached. Say the day is hypothetical, say that billed spend and recorded usage disagree, and ask whether the limit is meant to apply. Otherwise put it last, and suggest about 1.2 times the expected monthly spend after the other changes. Explain that once the limit is reached, new signals are dropped for the rest of the period, not held until it resets.Parts of a large source. For each source over 10% of signal spend, run "Breakdown inside a source" in queries-source-parts.md. Recommend turning down the specific parts that "Judge yield" supports: a scanner's inbox findings or sampling rate, an error tracking signal type, an evaluation report, an alert's investigation. Prefer this to turning off the whole source.
Source steering. When a kind of record inside a source does poorly, and the source reads
steering(see controls.md), suggest a rule that names that kind of record. This drops records before they become signals, so it can reduce processing and research. You cannot estimate the saving in advance, so give no dollar figure and check it again after two weeks.Whole sources. Recommend turning off a source only when "Judge yield" supports it and neither a narrowing setting nor source steering applies. When its yield is too new to judge, use other evidence such as how many of its reports anyone opened, and say that resolution is not known yet.
Scouts with no output. Finder scouts with at least 20 runs in the period that created and edited no reports. Fewer runs prove little. Group them into one recommendation with their total spend, name the largest ones, and recommend a pre-check or a slower schedule before a pause. Check their history first: a scout with a strong settled rate may have finished its backlog.
Frequent scouts with low yield. Finder scouts that run hourly or more often and have a low settled rate. Recommend a pre-check or a slower schedule before a pause, and give the saving for the new schedule. A scout that edits many reports keeps them current. Run it less often, do not pause it.
Scout pre-checks. Scouts with
precheck_query_sourceofoffand highempty_run_creditsin "Spend by scout" in queries-spend.md. When a query can tell that nothing new arrived, prefer a pre-check to a slower schedule, because findings do not arrive later. Read the scout's description and recent summaries, write a query, and dry-run it withposthog:scout-config-precheck-testso you recommend a query that works. The dry run changes nothing and shows only what the query finds now. Say "up to" and giveempty_run_credits, scaled to a month, as the saving: some empty runs will still start, because the query can find new data that is not worth a report. For a measurement scout, gate only on whether new samples exist. Its empty runs can still record data, so itsempty_run_creditsoverstates waste. Do not count this saving together with a slower schedule for the same scout.Research steering. When one kind of report has a low settled rate and neither a setting nor source steering selects it, suggest research instructions that name it. Give no dollar figure.
Automatic pull requests. Compare pull requests linked and merged, by source and by scout (see queries-controls.md). When an item has many and few merge, suggest a higher priority threshold. Use implementation receipts for the affected reports to estimate savings; do not assume all implementation spend would disappear. A person who then starts one of those fixes by hand moves its cost to PostHog AI usage, so say that the saving can be partly offset.
Daily report limit. Run "Reports shown per day" in queries-controls.md. Recommend a limit only when a few days hold much more than the rest, near the 75th percentile of daily reports. Say that signals past the limit are dropped, so a real incident on a spike day can be missed.
How to present them
Split the list in three parts:
Recommended. Changes with a clear case, ranked by monthly saving.
Worth a look. Changes with a real saving and a real cost, where the user has to decide. Say what decides it.
Checked, no change. Controls you looked at that need no change, each with one line on why. This shows the user that you went through all of them. Say which settings you could not read.
For each recommendation, end with "I can apply this" or with where the user changes it in the app.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/omnibus/managing-self-driving-spend · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by PostHog or PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download managing-self-driving-spend.zip