Repository Analysis

we-promise/sure

The personal finance app for everyone (by everyone)

6.3 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of we-promise/sure, a Ruby project with 9,639 GitHub stars. SynthScan v2.0 examined 541,943 lines of code across 4878 source files, recording 1787 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 6.3 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

6.3
Adjusted Score
6.3
Raw Score
100%
Time Factor
2026-08-28
Last Push
9.6K
Stars
Ruby
Language
541.9K
Lines of Code
4.9K
Files
1.8K
Pattern Hits
2026-08-29
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 18HIGH 32MEDIUM 581LOW 1156

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 1787 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators367 hits · 1122 pts
SeverityFileLineSnippetContext
MEDIUMcompose.example.yml1# ===========================================================================COMMENT
MEDIUMcompose.example.yml3# ===========================================================================COMMENT
MEDIUMcompose.example.yml23# ----------------COMMENT
MEDIUMcompose.example.yml30# ----------------------------------------COMMENT
MEDIUMcompose.example.ai.yml1# ===========================================================================COMMENT
MEDIUMcompose.example.ai.yml4# ===========================================================================COMMENT
MEDIUMcompose.example.ai.yml44# ----------------COMMENT
MEDIUMcompose.example.ai.yml51# ----------------------------------------COMMENT
MEDIUMapp/models/budget.rb401 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb403 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb443 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb445 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb473 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb475 # =============================================================================COMMENT
MEDIUMapp/models/qif_import.rb162 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb164 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb243 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb245 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb333 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb335 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb411 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb413 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb872 # -----------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb874 # -----------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb993 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb995 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1018 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1020 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1173 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1175 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1238 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1240 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1247 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1249 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb705 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb707 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb121 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb123 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb192 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb194 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb562 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb564 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb632 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb634 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb688 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb690 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb859 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb861 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb60 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb62 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb130 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb132 # ================================COMMENT
MEDIUMapp/models/provider/alpha_vantage.rb89 # ================================COMMENT
MEDIUMapp/models/provider/alpha_vantage.rb91 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb80 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb82 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb180 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb182 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb205 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb207 # ================================COMMENT
307 more matches not shown…
Self-Referential Comments194 hits · 592 pts
SeverityFileLineSnippetContext
MEDIUMpipelock.example.yaml4# This file is validated in CI with Pipelock 3.4.0. See the release changelogCOMMENT
MEDIUMcompose.example.yml8# This file is an example Docker Compose configuration for self hostingCOMMENT
MEDIUMcompose.example.ai.yml145 # Create the dirs yourself first so they are owned by your host userCOMMENT
MEDIUMapp/models/recurring_transaction.rb103 # Create a manual recurring transfer from an existing Transfer pair.COMMENT
MEDIUMapp/models/recurring_transaction.rb156 # Create a manual recurring transaction from an existing transactionCOMMENT
MEDIUMapp/models/assistant/function/import_bank_statement.rb132 # Create a CSV from extracted transactionsCOMMENT
MEDIUMapp/models/assistant/function/import_bank_statement.rb135 # Create a TransactionImportCOMMENT
MEDIUM…/models/plaid_account/transactions/category_matcher.rb11# This class is simply a FAST and CHEAP way to match categories that are high confidence.COMMENT
MEDIUMapp/models/family/data_exporter.rb12 # Create a StringIO to hold the zip data in memoryCOMMENT
MEDIUMapp/models/family/up_connectable.rb13 # Create an Up item with the given token and trigger an initial sync.COMMENT
MEDIUMapp/models/family/auto_transfer_matchable.rb79 # Create the transfer for a matched candidate, tolerating a concurrent syncCOMMENT
MEDIUMapp/models/provider/configurable.rb125 # Define a custom check for whether this provider is configuredCOMMENT
MEDIUMapp/models/provider/configurable.rb133 # Define a configuration fieldCOMMENT
MEDIUMapp/models/sophtron_entry/processor.rb137 # Create a stable merchant ID from the merchant nameCOMMENT
MEDIUMapp/models/mercury_entry/processor.rb99 # Create a stable merchant ID from the counterparty nameCOMMENT
MEDIUMapp/models/vector_store/base.rb7 # Create a new vector store / collection / namespaceCOMMENT
MEDIUMapp/models/eval/langfuse/client.rb248 # Create a new request with the same properties (needed for retry since request body may be consumed)COMMENT
MEDIUMapp/models/coinbase_account/processor.rb206 # Create the tradeCOMMENT
MEDIUMapp/models/holding/gapfillable.rb22 # Create a new holding based on the previous day's dataCOMMENT
MEDIUMapp/models/lunchflow_entry/processor.rb85 # Create a deterministic hash from key transaction attributesCOMMENT
MEDIUMapp/models/lunchflow_entry/processor.rb142 # Create a stable merchant ID from the merchant nameCOMMENT
MEDIUMapp/models/concerns/enrichable.rb4# This module defines how models should, lock, unlock, and edit attributesCOMMENT
MEDIUMapp/jobs/rule_job.rb18 # Create the RuleRun record first with pending statusCOMMENT
MEDIUMapp/jobs/rule_job.rb70 # Create a failed rule run if we hadn't created one yetCOMMENT
MEDIUMapp/controllers/lunchflow_items_controller.rb185 # Create the internal Account with proper balance initializationCOMMENT
MEDIUMapp/controllers/simplefin_items_controller.rb150 # Create a Sync and enqueue it to run asynchronously with a runtime-only flagCOMMENT
MEDIUMapp/controllers/up_items_controller.rb28 # Create an Up connection and kick off its first sync.COMMENT
MEDIUMapp/controllers/snaptrade_items_controller.rb641 # Create the Sure accountCOMMENT
MEDIUMapp/controllers/plaid_items_controller.rb90 # Create the link via AccountProviderCOMMENT
MEDIUMapp/controllers/oidc_accounts_controller.rb170 # Create the OIDC (or other SSO) identityCOMMENT
MEDIUMapp/controllers/enable_banking_items_controller.rb294 # Create the internal Account (uses save! internally, will raise on failure)COMMENT
MEDIUMapp/controllers/mercury_items_controller.rb185 # Create the internal Account with proper balance initializationCOMMENT
MEDIUMapp/controllers/api/v1/test_controller.rb17 # Create a mock resource that belongs to a different familyCOMMENT
MEDIUMapp/controllers/api/v1/tags_controller.rb44 # Create a new tag for the familyCOMMENT
MEDIUMtest/models/coinstats_item_test.rb160 # Create a linked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb178 # Create an unlinked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb209 # Create a linked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb223 # Create an unlinked accountCOMMENT
MEDIUMtest/models/income_statement_test.rb207 # Create a regular transfer between accountsCOMMENT
MEDIUMtest/models/income_statement_test.rb221 # Create a loan payment transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb234 # Create a one-time transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb247 # Create a payment transaction (credit card payment)COMMENT
MEDIUMtest/models/income_statement_test.rb260 # Create an excluded transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb309 # Create a truly empty familyCOMMENT
MEDIUMtest/models/income_statement_test.rb341 # Create a transfer to investment account (marked as investment_contribution)COMMENT
MEDIUMtest/models/income_statement_test.rb390 # Create a Roth IRA (tax-exempt) investment accountCOMMENT
MEDIUMtest/models/income_statement_test.rb398 # Create a dividend transaction in the Roth IRACOMMENT
MEDIUMtest/models/income_statement_test.rb412 # Create a 401k (tax-deferred) investment accountCOMMENT
MEDIUMtest/models/income_statement_test.rb420 # Create a dividend transaction in the 401kCOMMENT
MEDIUMtest/models/income_statement_test.rb434 # Create a taxable brokerage accountCOMMENT
MEDIUMtest/models/income_statement_test.rb442 # Create a dividend transaction in the taxable accountCOMMENT
MEDIUMtest/models/income_statement_test.rb456 # Create a crypto account (default taxable)COMMENT
MEDIUMtest/models/income_statement_test.rb464 # Create a transaction in the crypto accountCOMMENT
MEDIUMtest/models/income_statement_test.rb476 # Create a crypto account in a tax-deferred retirement accountCOMMENT
MEDIUMtest/models/income_statement_test.rb484 # Create a transaction in the tax-deferred crypto accountCOMMENT
MEDIUMtest/models/income_statement_test.rb672 # Create a fresh family with ONLY tax-advantaged accountsCOMMENT
MEDIUMtest/models/income_statement_test.rb680 # Create a 401k account (tax-deferred)COMMENT
MEDIUMtest/models/income_statement_test.rb688 # Create a Roth IRA account (tax-exempt)COMMENT
MEDIUMtest/models/snaptrade_data_helpers_test.rb4 # Create a test class that includes the concernCOMMENT
MEDIUMtest/models/snaptrade_data_helpers_test.rb141 # Create the security before resolve_security canCOMMENT
134 more matches not shown…
Hyper-Verbose Identifiers478 hits · 494 pts
SeverityFileLineSnippetContext
LOWapp/models/snaptrade_account.rb199 def cash_equivalent_position_value(currency_code = currency)CODE
LOWapp/models/category_import.rb113 def ensure_placeholder_category(name)CODE
LOWapp/models/redbark_item.rb42 def import_latest_redbark_data(sync: nil)CODE
LOWapp/models/account.rb200 def create_from_simplefin_account(simplefin_account, account_type, subtype = nil)CODE
LOWapp/models/account.rb249 def create_from_enable_banking_account(enable_banking_account, account_type, subtype = nil)CODE
LOWapp/models/account.rb300 def create_from_coinbase_account(coinbase_account)CODE
LOWapp/models/account.rb325 def create_from_binance_account(binance_account)CODE
LOWapp/models/account.rb373 def create_from_kraken_account(kraken_account)CODE
LOWapp/models/account.rb380 def create_from_onchain_wallet_account(onchain_wallet_account)CODE
LOWapp/models/account.rb402 def create_from_crypto_exchange_account(provider_account, family:)CODE
LOWapp/models/account.rb419 def build_simplefin_accountable_attributes(simplefin_account, account_type, subtype)CODE
LOWapp/models/category.rb273 def localized_default_name_for(name)CODE
LOWapp/models/category.rb280 def default_category_translation_key_for(name)CODE
LOWapp/models/investment_statement.rb288 def convert_to_family_currency(amount, from_currency)CODE
LOWapp/models/market_data_importer.rb103 def get_first_required_price_date(security)CODE
LOWapp/models/market_data_importer.rb110 def get_first_required_exchange_rate_date(from_currency:)CODE
LOWapp/models/rule_import.rb99 def extract_conditions_and_actions(fragments)CODE
LOWapp/models/rule_import.rb119 def create_or_update_rule_from_row(row)CODE
LOWapp/models/rule_import.rb210 def resolve_import_condition_value(condition_data)CODE
LOWapp/models/rule_import.rb241 def resolve_import_action_value(action_data)CODE
LOWapp/models/goal.rb216 def whole_account_conflicts_on(account_ids, excluding_link_id: nil)CODE
LOWapp/models/ai_health.rb263 def openai_compatible_provider_name(value)CODE
LOWapp/models/sure_import.rb62 def dry_run_totals_from_ndjson(content)CODE
LOWapp/models/sure_import.rb66 def dry_run_totals_from_line_type_counts(counts)CODE
LOWapp/models/sure_import.rb72 def expected_record_counts_from_ndjson(content)CODE
LOWapp/models/sure_import.rb76 def expected_record_counts_from_line_type_counts(counts)CODE
LOWapp/models/sure_import.rb294 def build_readback_verification(before_counts:, status_for_mismatch:)CODE
LOWapp/models/sophtron_item.rb74 def import_latest_sophtron_data(sync: nil)CODE
LOWapp/models/sophtron_item.rb274 def persist_remote_sophtron_accounts(accounts)CODE
LOWapp/models/brex_account.rb190 def build_institution_metadata(snapshot, kind)CODE
LOWapp/models/provider_merchant.rb10 def convert_to_family_merchant_for(family, attributes = {})CODE
LOWapp/models/snaptrade_item.rb48 def import_latest_snaptrade_data(sync: nil)CODE
LOWapp/models/indexa_capital_item.rb52 def import_latest_indexa_capital_data(sync: nil)CODE
LOWapp/models/family.rb197 def secondary_enabled_currency_objects(extra: [])CODE
LOWapp/models/family.rb238 def auto_share_existing_accounts_with(user)CODE
LOWapp/models/family.rb327 def auto_categorize_transactions_later(transactions, rule_run_id: nil)CODE
LOWapp/models/family.rb331 def auto_categorize_transactions(transaction_ids)CODE
LOWapp/models/family.rb335 def auto_detect_transaction_merchants_later(transactions, rule_run_id: nil)CODE
LOWapp/models/family.rb339 def auto_detect_transaction_merchants(transaction_ids)CODE
LOWapp/models/family.rb458 def securities_with_plan_restrictions(provider:)CODE
LOWapp/models/questrade_account.rb142 def extract_institution_metadata(data)CODE
LOWapp/models/enable_banking_item.rb402 def import_accounts_from_session(accounts_data)CODE
LOWapp/models/valuation.rb11 def build_reconciliation_name(accountable_type)CODE
LOWapp/models/valuation.rb15 def build_opening_anchor_name(accountable_type)CODE
LOWapp/models/valuation.rb19 def build_current_anchor_name(accountable_type)CODE
LOWapp/models/chat.rb213 def undelivered_error_payload(assistant_message)CODE
LOWapp/models/pdf_import.rb467 def partition_already_recorded(candidates)CODE
LOWapp/models/investment.rb131 def subtypes_grouped_for_select(currency: nil)CODE
LOWapp/models/account_statement.rb126 def reconciliation_statuses_for(statements, account:)CODE
LOWapp/models/account_statement.rb167 def allowed_content_types_for_filename(filename)CODE
LOWapp/models/trade_import.rb81 def investment_activity_label_for(qty)CODE
LOWapp/models/transaction.rb179 def set_preloaded_activity_security(security)CODE
LOWapp/models/transaction.rb357 def pending_duplicate_candidates(limit: 20, offset: 0)CODE
LOWapp/models/budget.rb99 def latest_valid_budget_start_date(family)CODE
LOWapp/models/budget.rb412 def budget_category_actual_spending(budget_category)CODE
LOWapp/models/budget.rb419 def category_median_monthly_expense(category)CODE
LOWapp/models/budget.rb423 def category_avg_monthly_expense(category)CODE
LOWapp/models/budget.rb507 def convert_to_budget_currency(amount, from_currency)CODE
LOWapp/models/questrade_item.rb45 def import_latest_questrade_data(sync: nil)CODE
LOWapp/models/qif_import.rb379 def investment_activity_label_for(action)CODE
418 more matches not shown…
Over-Commented Block375 hits · 334 pts
SeverityFileLineSnippetContext
LOWpipelock.example.yaml1# Pipelock configuration for Docker ComposeCOMMENT
LOWcompose.example.yml1# ===========================================================================COMMENT
LOWcompose.example.yml21#COMMENT
LOWcompose.example.ai.yml1# ===========================================================================COMMENT
LOWcompose.example.ai.yml21# directly to Sure's /mcp endpoint. Note: /mcp is still reachableCOMMENT
LOWcompose.example.ai.yml41# https://github.com/we-promise/sure/blob/main/docs/hosting/docker.mdCOMMENT
LOWcompose.example.ai.yml81 # Set both values to activate. MCP_USER_EMAIL must match an existing user's email.COMMENT
LOWcompose.example.ai.yml101 #COMMENT
LOWcompose.example.ai.yml141 - ./pipelock.example.yaml:/etc/pipelock/pipelock.yaml:roCOMMENT
LOWapp/constraints/super_admin_constraint.rb1# Routing constraint for mounting engines that bypass ApplicationControllerCOMMENT
LOWapp/models/snaptrade_account.rb81 # {COMMENT
LOWapp/models/account.rb101 # Writer for subtype that delegates to the accountable, allowing forms to setCOMMENT
LOWapp/models/account.rb461COMMENT
LOWapp/models/goal.rb1class Goal < ApplicationRecordCOMMENT
LOWapp/models/goal.rb41 # the monthly job would leave a brand-new one wrong until the 1st, so theCOMMENT
LOWapp/models/goal.rb81 # own account lock in association order. Two goals saving links on the sameCOMMENT
LOWapp/models/goal.rb101 FUNDABLE_ACCOUNT_TYPES = %w[Depository Investment].freezeCOMMENT
LOWapp/models/goal.rb181 # Whole-account links held by OTHER goals of this family on any ofCOMMENT
LOWapp/models/goal.rb221 # two requests can both find no conflict and both commit a whole-accountCOMMENT
LOWapp/models/goal.rb381 # earmarked slice (goal_accounts.allocated_amount) or — when unallocated —COMMENT
LOWapp/models/goal.rb481COMMENT
LOWapp/models/goal.rb541 # for counts as found: it did its job. Without that term, coming home fromCOMMENT
LOWapp/models/goal.rb561 # the transaction is stamped and a second attempt on the same outflow isCOMMENT
LOWapp/models/goal.rb601 # A fixed earmark never has that window, because shrinking it caps theCOMMENT
LOWapp/models/goal.rb701 (remaining_amount.to_d / months_remaining.to_d).ceil(2)COMMENT
LOWapp/models/goal.rb761 series_values = balance_series_valuesCOMMENT
LOWapp/models/goal.rb921 # Confirm dialog for deleting this goal, shared by the show-page kebab andCOMMENT
LOWapp/models/goal.rb1181 # under its previous life goes with the frozen figure — leaving it wouldCOMMENT
LOWapp/models/goal.rb1201 # Runs on a target_amount edit too, and overwrites it. In this mode theCOMMENT
LOWapp/models/goal.rb1381 return unless goal_accounts.where.not(id: nil).exists?COMMENT
LOWapp/models/sophtron_item.rb1# Represents a Sophtron integration item for a family.COMMENT
LOWapp/models/sophtron_item.rb61COMMENT
LOWapp/models/entry.rb341 update!(reconciled_at: nil, reconciled_by_statement: nil)COMMENT
LOWapp/models/sophtron_account.rb1# Represents a single bank account from Sophtron.COMMENT
LOWapp/models/family.rb121 # Families with at least one opted-in member. Lets a job filter in oneCOMMENT
LOWapp/models/family.rb221 endCOMMENT
LOWapp/models/family.rb581 # uses at request time, so "valid at save time" and "valid when rendering"COMMENT
LOWapp/models/onchain_wallet_item.rb101 # them would throw away the balance history the user came here for.COMMENT
LOWapp/models/insight.rb1# A proactive, typed observation about a family's finances, produced nightlyCOMMENT
LOWapp/models/budget_category.rb41 # step — YNAB's "roll with the punches". Deliberately keeps no history:COMMENT
LOWapp/models/budget_category.rb81 # on read and carries no budget_id, so it would otherwise be reportedCOMMENT
LOWapp/models/budget.rb181 # --- Cash on hand, next to the plan ---COMMENT
LOWapp/models/goal_pledge.rb41 #COMMENT
LOWapp/models/background_job_console.rb1require "sidekiq/api"COMMENT
LOWapp/models/auth_config.rb21COMMENT
LOWapp/models/goal_account.rb21 privateCOMMENT
LOWapp/models/goal_account.rb41 # Only guard what is being written now. Rows that predate thisCOMMENT
LOWapp/models/sidekiq_health.rb1# Snapshot of Sidekiq's current operational state, used to surface aCOMMENT
LOWapp/models/sidekiq_health.rb21 # conservative — covers a temporarily-paused worker, deploy restart, orCOMMENT
LOWapp/models/trade.rb21 #COMMENT
LOWapp/models/import.rb121 class << selfCOMMENT
LOWapp/models/import.rb541COMMENT
LOWapp/models/import.rb661COMMENT
LOWapp/models/notification_delivery.rb1class NotificationDelivery < ApplicationRecordCOMMENT
LOWapp/models/simplefin_item.rb221 # trigger autosave on the preloaded account association, reverting the FK we just set!COMMENT
LOWapp/models/demo/generator.rb1require "securerandom"COMMENT
LOWapp/models/enable_banking_entry/processor.rb1require "digest/md5"COMMENT
LOWapp/models/enable_banking_item/importer.rb641 date_from: start_date,COMMENT
LOWapp/models/sophtron_item/unlinking.rb1# frozen_string_literal: trueCOMMENT
LOWapp/models/sophtron_item/importer.rb1require "set"COMMENT
315 more matches not shown…
Hallucination Indicators18 hits · 195 pts
SeverityFileLineSnippetContext
CRITICALapp/models/goal.rb1269 "#{symbol}#{amount_f.round.to_i.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\1,').reverse}"CODE
CRITICALapp/models/provider/kraken_adapter.rb16 kraken_items = family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/models/provider/kraken_adapter.rb97 credentialed_items = family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/controllers/insights_controller.rb69 @feed_insights = Current.family.insights.visible.ordered.limit(Insight::FEED_LIMIT).to_aCODE
CRITICALapp/controllers/categories_controller.rb133 Current.family.categories.alphabetically.roots.where.not(id: @category.id)CODE
CRITICALapp/controllers/brex_items_controller.rb61 @brex_items = Current.family.brex_items.active.ordered.includes(:syncs, :brex_accounts)CODE
CRITICALapp/controllers/wise_items_controller.rb275 @wise_items = Current.family.wise_items.active.ordered.includes(:syncs, :wise_accounts)CODE
CRITICALapp/controllers/pages_controller.rb56 @feed_insights = preview_features_enabled? ? Current.family.insights.visible.ordered.limit(Insight::FEED_LIMIT) : InCODE
CRITICALapp/controllers/kraken_items_controller.rb193 credentialed_items = Current.family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configCODE
CRITICALapp/controllers/mercury_items_controller.rb415 @mercury_items = Current.family.mercury_items.active.ordered.includes(:syncs, :mercury_accounts)CODE
CRITICALapp/controllers/mercury_items_controller.rb454 @mercury_items = Current.family.mercury_items.active.ordered.includes(:syncs, :mercury_accounts)CODE
CRITICALapp/controllers/mercury_items_controller.rb753 Current.family.mercury_items.active.ordered.select(&:credentials_configured?)CODE
CRITICALapp/controllers/settings/providers_controller.rb256 @wise_items = Current.family.wise_items.active.ordered.includes(:syncs, :wise_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb258 @mercury_items = Current.family.mercury_items.active.ordered.includes(:syncs, :mercury_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb260 @brex_items = Current.family.brex_items.active.ordered.includes(:syncs, :brex_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb313 @questrade_items = Current.family.questrade_items.active.ordered.select(:id)CODE
CRITICALapp/controllers/settings/api_keys_controller.rb9 @api_keys = Current.user.api_keys.active.visible.order(created_at: :desc)CODE
CRITICALapp/controllers/settings/api_keys_controller.rb57 @api_key = Current.user.api_keys.active.visible.find(params[:id])CODE
Redundant / Tautological Comments107 hits · 162 pts
SeverityFileLineSnippetContext
LOWapp/models/sso_provider_tester.rb66 # Check if issuer matches exactly. OIDC discovery requires the configuredCOMMENT
LOWapp/models/llm_usage.rb178 # Check if this usage record represents a failed API callCOMMENT
LOWapp/models/oidc_identity.rb69 # Check if user is in any of the mapped groupsCOMMENT
LOWapp/models/enable_banking_account.rb30 # Check if account_id looks like a valid UUID (not an identification_hash)COMMENT
LOWapp/models/setting.rb229 # Check if it's a declared field firstCOMMENT
LOWapp/models/setting.rb258 # Check if a dynamic field exists (useful to distinguish nil value vs missing key)COMMENT
LOWapp/models/setting.rb263 # Check if dynamic entry existsCOMMENT
LOWapp/models/holding.rb102 # Check if this holding's cost_basis can be overwritten by the given sourceCOMMENT
LOWapp/models/holding.rb134 # Check if this holding's security can be changed by provider syncCOMMENT
LOWapp/models/holding.rb139 # Check if user has remapped this holding to a different securityCOMMENT
LOWapp/models/holding.rb246 # Check if cost_basis is known (has a source and positive value)COMMENT
LOWapp/models/simplefin_item.rb201 # Check if linked via legacy FK (use to_s for UUID comparison safety)COMMENT
LOWapp/models/simplefin_item.rb207 # Check if linked via AccountProviderCOMMENT
LOWapp/models/simplefin_item.rb397 # Check if last sync was more than 3 days agoCOMMENT
LOWapp/models/simplefin_item.rb407 # Check if linked accounts have recent transactionsCOMMENT
LOWapp/models/simplefin_item.rb430 # Check if the SimpleFin connection needs user attentionCOMMENT
LOWapp/models/user.rb224 # Check if user has a local password set (can authenticate locally)COMMENT
LOWapp/models/recurring_transaction.rb308 # Check if this recurring transaction has amount variance configuredCOMMENT
LOWapp/models/recurring_transaction.rb313 # Check if this recurring transaction should be marked inactiveCOMMENT
LOWapp/models/mercury_item/importer.rb284 # Check if this account has any stored transactionsCOMMENT
LOWapp/models/recurring_transaction/identifier.rb41 # Check if the last occurrence was within the last 45 daysCOMMENT
LOWapp/models/recurring_transaction/identifier.rb45 # Check if transactions occur on similar days (within 5 days of each other)COMMENT
LOWapp/models/recurring_transaction/identifier.rb265 # Check if days cluster together (within ~5 days variance)COMMENT
LOWapp/models/provider/openai.rb235 # Check if the specified model supports vision/PDF inputCOMMENT
LOWapp/models/provider/factory.rb59 # Check if a provider type has a registered adapterCOMMENT
LOWapp/models/provider/factory.rb82 # Check if any provider supports a given account typeCOMMENT
LOWapp/models/provider/syncable.rb18 # Check if the item is currently syncingCOMMENT
LOWapp/models/provider/syncable.rb30 # Check if the item requires an update (e.g., re-authentication)COMMENT
LOWapp/models/provider/configurable.rb77 # Check if provider is configured (all required fields present)COMMENT
LOWapp/models/provider/configurable.rb162 # Check if provider is properly configuredCOMMENT
LOWapp/models/provider/configurable.rb225 # Check if this field has a valueCOMMENT
LOWapp/models/provider/openai/auto_categorizer.rb304 # Check if one contains the otherCOMMENT
LOWapp/models/provider/openai/auto_categorizer.rb445 # Check if there's content after the thinking blockCOMMENT
LOWapp/models/provider/openai/bank_statement_extractor.rb152 # Check if we've seen this exact transaction in a different chunkCOMMENT
LOWapp/models/provider/openai/auto_merchant_detector.rb196 # Check if too many nulls OR missing results were returnedCOMMENT
LOWapp/models/rule/condition_filter/transaction_details.rb18 # Check if extra field is empty or nullCOMMENT
LOWapp/models/lunchflow_item/importer.rb450 # Check if holdings are not supported (501 response)COMMENT
LOWapp/models/lunchflow_item/importer.rb475 # Check if this account has any stored transactionsCOMMENT
LOWapp/models/eval/sample.rb77 # Check if null is expectedCOMMENT
LOWapp/models/eval/metrics/chat_metrics.rb102 # Check if this specific function was called correctlyCOMMENT
LOWapp/models/eval/runners/categorization_runner.rb167 # Check if actual matches any acceptable category (primary or alternatives)COMMENT
LOWapp/models/eval/runners/categorization_runner.rb175 # Check if actual matches parent of expected categoryCOMMENT
LOWapp/models/account/linkable.rb72 # Check if account is linked to a specific providerCOMMENT
LOWapp/models/account/linkable.rb84 # Check if holdings can be deletedCOMMENT
LOWapp/models/account/provider_import_adapter.rb89 # Check if duplicate is protected - if so, link but don't modifyCOMMENT
LOWapp/models/coinbase_account/processor.rb190 # Check if trade already exists by external_idCOMMENT
LOWapp/models/lunchflow_entry/processor.rb90 # Check if entry with this external_id already existsCOMMENT
LOWapp/models/lunchflow_entry/processor.rb127 # Check if an entry with this external_id already exists in the accountCOMMENT
LOWapp/models/lunchflow_entry/processor.rb224 # Check if this transaction is marked as pendingCOMMENT
LOWapp/models/concerns/enrichable.rb109 # Check if any virtual attributes changed by comparing current value with what we setCOMMENT
LOWapp/models/concerns/currency_normalizable.rb53 # Check if a currency code is valid in the Money gemCOMMENT
LOWapp/jobs/snaptrade_connection_cleanup_job.rb26 # Check if other accounts still use this authorizationCOMMENT
LOWapp/jobs/indexa_capital_connection_cleanup_job.rb15 # Check if other accounts still use this connectionCOMMENT
LOWapp/jobs/identify_recurring_transactions_job.rb13 # Check if this job is stale (a newer one was scheduled)COMMENT
LOWapp/jobs/identify_recurring_transactions_job.rb17 # Check if there are still incomplete syncs - if so, skip and let the last sync trigger itCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb16 # Check if family has credentialsCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb24 # Check if already cachedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb61 # Check if family has Lunchflow credentials configuredCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb179 # Check if this lunchflow_account is already linkedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb255 # Check if account is already linkedCOMMENT
47 more matches not shown…
Magic Placeholder Names31 hits · 155 pts
SeverityFileLineSnippetContext
HIGHconfig/locales/views/settings/api_keys/uk.yml34 your_api_key: "Ваш ключ API"CODE
HIGHconfig/locales/views/settings/api_keys/nb.yml65 your_api_key: "Din API-nøkkel"CODE
HIGHconfig/locales/views/settings/api_keys/ca.yml36 your_api_key: La teva clau APICODE
HIGHconfig/locales/views/settings/api_keys/ca.yml118 your_api_key: La teva clau APICODE
HIGHconfig/locales/views/settings/api_keys/pt-BR.yml66 your_api_key: "Sua Chave de API"CODE
HIGHconfig/locales/views/settings/api_keys/es.yml40 your_api_key: Tu clave APICODE
HIGHconfig/locales/views/settings/api_keys/es.yml107 your_api_key: Tu Clave APICODE
HIGHconfig/locales/views/settings/api_keys/hu.yml38 your_api_key: "Az API-kulcsod"CODE
HIGHconfig/locales/views/settings/api_keys/hu.yml98 your_api_key: "Az API-kulcsod"CODE
HIGHconfig/locales/views/settings/api_keys/ro.yml66 your_api_key: "Cheia ta API"CODE
HIGHconfig/locales/views/settings/api_keys/de.yml57 your_api_key: Dein API-KeyCODE
HIGHconfig/locales/views/settings/api_keys/de.yml89 your_api_key: Dein API-SchlüsselCODE
HIGHconfig/locales/views/settings/api_keys/it.yml53 your_api_key: "La tua chiave API"CODE
HIGHconfig/locales/views/settings/api_keys/it.yml114 your_api_key: "La tua chiave API"CODE
HIGHconfig/locales/views/settings/api_keys/pl.yml66 your_api_key: Twój klucz APICODE
HIGHconfig/locales/views/settings/api_keys/en.yml37 your_api_key: "Your API Key"CODE
HIGHconfig/locales/views/settings/api_keys/ru.yml35 your_api_key: Ваш API-ключCODE
HIGHconfig/locales/views/settings/api_keys/ru.yml133 your_api_key: Ваш API-ключCODE
HIGHconfig/locales/views/settings/api_keys/fr.yml30 your_api_key: Votre clé APICODE
HIGHconfig/locales/views/settings/api_keys/fr.yml111 your_api_key: Votre clé APICODE
HIGHconfig/locales/views/settings/api_keys/zh-TW.yml42 your_api_key: 您的 API 金鑰CODE
HIGHconfig/locales/views/settings/api_keys/zh-TW.yml109 your_api_key: 您的 API 金鑰CODE
HIGHconfig/locales/views/settings/api_keys/tr.yml25 your_api_key: API AnahtarınızCODE
HIGHconfig/locales/views/settings/api_keys/tr.yml141 your_api_key: API AnahtarınızCODE
HIGHconfig/locales/views/settings/api_keys/vi.yml38 your_api_key: "Khóa API của bạn"CODE
HIGHconfig/locales/views/settings/api_keys/vi.yml98 your_api_key: "Khóa API của bạn"CODE
HIGHconfig/locales/views/settings/api_keys/zh-CN.yml31 your_api_key: 您的 API 密钥CODE
HIGHconfig/locales/views/settings/api_keys/zh-CN.yml91 your_api_key: 您的 API 密钥CODE
HIGHconfig/locales/views/settings/api_keys/nl.yml66 your_api_key: "Uw API Key"CODE
HIGHdocs/hosting/ai.md1376QDRANT_API_KEY=your-api-key # Optional, for authenticated instancesCODE
HIGHdocs/llm-guides/adding-a-securities-provider.md402provider = Provider::YourProvider.new("your_api_key")CODE
Structural Annotation Overuse70 hits · 125 pts
SeverityFileLineSnippetContext
LOWapp/data_migrations/balance_component_migrator.rb4 # Step 1: Update flows factorCOMMENT
LOWapp/data_migrations/balance_component_migrator.rb12 # Step 2: Set start values using LOCF (Last Observation Carried Forward)COMMENT
LOWapp/data_migrations/balance_component_migrator.rb33 # Step 3: Calculate net inflowsCOMMENT
LOWapp/models/mercury_item/importer.rb12 # Step 1: Fetch all accounts from MercuryCOMMENT
LOWapp/models/mercury_item/importer.rb27 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/mercury_item/importer.rb81 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/sophtron_item/importer.rb74 # Step 1: Fetch all accounts from SophtronCOMMENT
LOWapp/models/sophtron_item/importer.rb89 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/sophtron_item/importer.rb138 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/property/avm_import.rb17 # Step 1: validates the inputs, then spends one provider request. ReturnsCOMMENT
LOWapp/models/property/avm_import.rb36 # Step 2: creates the active property account from the user-confirmedCOMMENT
LOWapp/models/provider/snaptrade.rb130 # Step 1: ask SnapTrade for a device code and the user code to confirm.COMMENT
LOWapp/models/provider/snaptrade.rb177 # Step 2: redeem the device code once the user has confirmed it. Until theyCOMMENT
LOWapp/models/redbark_item/importer.rb19 # Step 1: Fetch and store all accounts (with connection metadata for institutions)COMMENT
LOWapp/models/redbark_item/importer.rb22 # Step 2: For linked accounts only, fetch transactions and balances.COMMENT
LOWapp/models/snaptrade_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/snaptrade_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings and activitiesCOMMENT
LOWapp/models/questrade_item/importer.rb32 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/questrade_item/importer.rb35 # Step 2: For LINKED accounts only, fetch dataCOMMENT
LOWapp/models/lunchflow_item/importer.rb14 # Step 1: Fetch all accounts from LunchflowCOMMENT
LOWapp/models/lunchflow_item/importer.rb39 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/provider_merchant/enhancer.rb32 # Step 1: Update the provider merchant with website + logoCOMMENT
LOWapp/models/provider_merchant/enhancer.rb38 # Step 2: Deduplicate — find other merchants with the same website_urlCOMMENT
LOWapp/models/indexa_capital_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/indexa_capital_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings dataCOMMENT
LOWapp/models/simplefin_item/importer.rb528 # Step 2: Fetch transactions/holdings using the regular window.COMMENT
LOWapp/jobs/simplefin_connection_update_job.rb17 # Step 1: Claim the new token and update the existing item's access_url.COMMENT
LOWapp/jobs/simplefin_connection_update_job.rb21 # Step 2: Sync the item to import fresh data.COMMENT
LOWapp/controllers/wise_items_controller.rb19 # Step 1: Validate token and fetch profiles, then proceed to profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb50 # Step 2: Show profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb62 # Step 3: Create one WiseItem per selected profile.COMMENT
LOWapp/controllers/properties_controller.rb141 # Step 1: spend one provider request, then show the fetched data forCOMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb49 # Step 1: paste an address.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb54 # Step 2: work out the chain if it wasn't given, then show what is there.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb87 # Step 3: track the assets that were ticked.COMMENT
LOWtest/models/balance/forward_calculator_test.rb785 # Step 1: Create account with a EUR entry and a stale exchange rate (1:1 EUR→USD).COMMENT
LOWtest/models/balance/forward_calculator_test.rb803 # Step 2: Corrected exchange rate arrives later (e.g. daily cron imports it).COMMENT
LOWtest/models/balance/forward_calculator_test.rb806 # Step 3: Next sync requests incremental from today — but the guard shouldCOMMENT
LOWtest/system/property_test.rb76 # Step 2: Enter balance informationCOMMENT
LOWtest/system/property_test.rb81 # Step 3: Enter address informationCOMMENT
LOWtest/system/accounts_test.rb26 # Step 1: Select property type and enter basic detailsCOMMENT
LOWtest/system/accounts_test.rb37 # Step 2: Enter balance informationCOMMENT
LOWtest/system/accounts_test.rb42 # Step 3: Enter address informationCOMMENT
LOWdocs/hosting/docker.md9### Step 1: Install DockerCOMMENT
LOWdocs/hosting/docker.md22### Step 2: Configure your Docker Compose file and environmentCOMMENT
LOWdocs/hosting/docker.md162### Step 4: Run the appCOMMENT
LOWdocs/hosting/docker.md176### Step 5: Create your accountCOMMENT
LOWdocs/hosting/docker.md193### Step 6: Run the app in the backgroundCOMMENT
LOWdocs/hosting/docker.md207### Step 7: Enjoy!COMMENT
LOWdocs/hosting/hetzner.md14## Step 1: Server Setup and SecurityCOMMENT
LOWdocs/hosting/hetzner.md53## Step 2: Create Application DirectoryCOMMENT
LOWdocs/hosting/hetzner.md64## Step 3: Configure Environment VariablesCOMMENT
LOWdocs/hosting/hetzner.md93## Step 4: Set Up Reverse Proxy with SSLCOMMENT
LOWdocs/hosting/hetzner.md140## Step 5: Deploy the ApplicationCOMMENT
LOWdocs/hosting/hetzner.md161## Step 6: Test the DeploymentCOMMENT
LOWdocs/hosting/hetzner.md189## Step 7: Set Up Automated BackupsCOMMENT
LOWdocs/hosting/hetzner.md234## Step 8: Set Up Basic MonitoringCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md29## Step 1: Create the Provider ClassCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md271## Step 2: Register in the Provider RegistryCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md307## Step 3: Add SettingsCOMMENT
10 more matches not shown…
Verbosity Indicators48 hits · 92 pts
SeverityFileLineSnippetContext
LOWapp/data_migrations/balance_component_migrator.rb4 # Step 1: Update flows factorCOMMENT
LOWapp/data_migrations/balance_component_migrator.rb12 # Step 2: Set start values using LOCF (Last Observation Carried Forward)COMMENT
LOWapp/data_migrations/balance_component_migrator.rb33 # Step 3: Calculate net inflowsCOMMENT
LOWapp/models/mercury_item/importer.rb12 # Step 1: Fetch all accounts from MercuryCOMMENT
LOWapp/models/mercury_item/importer.rb27 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/mercury_item/importer.rb81 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/sophtron_item/importer.rb74 # Step 1: Fetch all accounts from SophtronCOMMENT
LOWapp/models/sophtron_item/importer.rb89 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/sophtron_item/importer.rb138 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/property/avm_import.rb17 # Step 1: validates the inputs, then spends one provider request. ReturnsCOMMENT
LOWapp/models/property/avm_import.rb36 # Step 2: creates the active property account from the user-confirmedCOMMENT
LOWapp/models/provider/snaptrade.rb130 # Step 1: ask SnapTrade for a device code and the user code to confirm.COMMENT
LOWapp/models/provider/snaptrade.rb177 # Step 2: redeem the device code once the user has confirmed it. Until theyCOMMENT
LOWapp/models/redbark_item/importer.rb19 # Step 1: Fetch and store all accounts (with connection metadata for institutions)COMMENT
LOWapp/models/redbark_item/importer.rb22 # Step 2: For linked accounts only, fetch transactions and balances.COMMENT
LOWapp/models/snaptrade_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/snaptrade_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings and activitiesCOMMENT
LOWapp/models/questrade_item/importer.rb32 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/questrade_item/importer.rb35 # Step 2: For LINKED accounts only, fetch dataCOMMENT
LOWapp/models/lunchflow_item/importer.rb14 # Step 1: Fetch all accounts from LunchflowCOMMENT
LOWapp/models/lunchflow_item/importer.rb39 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/provider_merchant/enhancer.rb32 # Step 1: Update the provider merchant with website + logoCOMMENT
LOWapp/models/provider_merchant/enhancer.rb38 # Step 2: Deduplicate — find other merchants with the same website_urlCOMMENT
LOWapp/models/indexa_capital_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOWapp/models/indexa_capital_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings dataCOMMENT
LOWapp/models/concerns/enrichable.rb105 # So we need to check if the value actually changed by comparing before/afterCOMMENT
LOWapp/models/simplefin_item/importer.rb528 # Step 2: Fetch transactions/holdings using the regular window.COMMENT
LOWapp/jobs/simplefin_connection_update_job.rb17 # Step 1: Claim the new token and update the existing item's access_url.COMMENT
LOWapp/jobs/simplefin_connection_update_job.rb21 # Step 2: Sync the item to import fresh data.COMMENT
LOWapp/controllers/wise_items_controller.rb19 # Step 1: Validate token and fetch profiles, then proceed to profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb50 # Step 2: Show profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb62 # Step 3: Create one WiseItem per selected profile.COMMENT
LOWapp/controllers/properties_controller.rb141 # Step 1: spend one provider request, then show the fetched data forCOMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb49 # Step 1: paste an address.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb54 # Step 2: work out the chain if it wasn't given, then show what is there.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb87 # Step 3: track the assets that were ticked.COMMENT
LOWtest/models/balance/forward_calculator_test.rb785 # Step 1: Create account with a EUR entry and a stale exchange rate (1:1 EUR→USD).COMMENT
LOWtest/models/balance/forward_calculator_test.rb803 # Step 2: Corrected exchange rate arrives later (e.g. daily cron imports it).COMMENT
LOWtest/models/balance/forward_calculator_test.rb806 # Step 3: Next sync requests incremental from today — but the guard shouldCOMMENT
LOWtest/system/property_test.rb76 # Step 2: Enter balance informationCOMMENT
LOWtest/system/property_test.rb81 # Step 3: Enter address informationCOMMENT
LOWtest/system/accounts_test.rb26 # Step 1: Select property type and enter basic detailsCOMMENT
LOWtest/system/accounts_test.rb37 # Step 2: Enter balance informationCOMMENT
LOWtest/system/accounts_test.rb42 # Step 3: Enter address informationCOMMENT
LOWmobile/lib/services/sync_service.dart543 // Step 1: Process pending deletes (do this first to free up resources)COMMENT
LOWmobile/lib/services/sync_service.dart549 // Step 2: Upload pending transactionsCOMMENT
LOWmobile/lib/services/sync_service.dart555 // Step 3: Download transactions from serverCOMMENT
LOWmobile/lib/services/sync_service.dart561 // Step 4: Sync accountsCOMMENT
Fake / Example Data59 hits · 68 pts
SeverityFileLineSnippetContext
LOWapp/models/demo/generator.rb43 create_family_and_users!("Demo Family", "user@example.com", onboarded: true, subscribed: true)CODE
LOWapp/models/demo/generator.rb58 create_family_and_users!("Demo Family", "user@example.com", onboarded: false, subscribed: false)CODE
LOWapp/models/demo/generator.rb87 def generate_default_data!(skip_clear: false, email: "user@example.com")CODE
LOWapp/models/account/provider_import_adapter.rb332 # This handles case variations in merchant names (e.g., "ACME Corp" vs "Acme Corp")COMMENT
LOWtest/models/indexa_capital_item_test.rb37 username: "user@example.com", document: "12345678A", password: "secret"CODE
LOWtest/models/address_test.rb6 line1: "123 Main St",CODE
LOWtest/models/address_test.rb18 line1: "123 Main St",CODE
LOWtest/models/user_test.rb53 user = User.new(email: "user@example.com")CODE
LOWtest/models/user_test.rb54 assert_equal "user@example.com", user.display_nameCODE
LOWtest/models/user_test.rb62 user = User.new(email: "user@example.com")CODE
LOWtest/models/provider/anthropic_test.rb70 Setting.stubs(:anthropic_access_token).returns("fake-token-1")CODE
LOWtest/models/provider/anthropic_test.rb74 ClimateControl.modify("ANTHROPIC_API_KEY" => "fake-token-2") doCODE
LOWtest/models/provider/realie_test.rb29 query: { "address" => "123 Main Street", "state" => "CA" },CODE
LOWtest/models/provider/realie_test.rb35 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb54 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb57 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/realie_test.rb65 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb68 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/realie_test.rb76 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb79 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/realie_test.rb90 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb94 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb108 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb112 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb179 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/indexa_capital_test.rb13 username: "user@example.com",CODE
LOWtest/models/provider/indexa_capital_test.rb28 Provider::IndexaCapital.new(username: "user@example.com")CODE
LOWtest/models/provider/indexa_capital_test.rb32 Provider::IndexaCapital.new(username: "user@example.com", document: "12345678A")CODE
LOW…ls/provider/anthropic/bank_statement_extractor_test.rb16 "account_holder" => "Jane Doe",CODE
LOW…ls/provider/anthropic/bank_statement_extractor_test.rb37 assert_equal "Jane Doe", result[:account_holder]CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb15 "account_holder" => "John Doe",CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb46 assert_equal "John Doe", result[:account_holder]CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb89 "account_holder" => "John Doe",CODE
LOWtest/models/mercury_entry/processor_test.rb58 process(tx(counterparty_name: "Acme Corp"))CODE
LOWtest/models/mercury_entry/processor_test.rb59 assert_equal "Acme Corp", @account.entries.last.nameCODE
LOWtest/models/questrade_account/processor_test.rb8 @questrade_item = @family.questrade_items.create!(name: "Test", refresh_token: "dummy-token")CODE
LOWtest/system/property_test.rb83 fill_in "Address Line 1", with: "123 Main St"CODE
LOWtest/system/property_test.rb97 assert_equal "123 Main St", created_account.property.address.line1CODE
LOWtest/system/accounts_test.rb44 fill_in "Address Line 1", with: "123 Main St"CODE
LOWtest/system/accounts_test.rb58 assert_equal "123 Main St", created_account.property.address.line1CODE
LOWtest/vcr_cassettes/stripe/checkout_session.yml117 "email": "user@example.com",CODE
LOWtest/vcr_cassettes/stripe/checkout_session.yml123 "customer_email": "user@example.com",CODE
LOWtest/jobs/sync_property_valuations_job_test.rb26 line1: "123 Main Street",CODE
LOWtest/controllers/properties_controller_test.rb533 address: { line1: "123 Main Street", locality: "LA", region: "CA", postal_code: "90001" }CODE
LOWconfig/locales/views/properties/en.yml44 address_line1_placeholder: "123 Main Street"CODE
LOWconfig/locales/views/properties/vi.yml30 address_line1_placeholder: "123 Main Street"CODE
LOWdocs/hosting/oidc.md189User.find_by(email: "admin@example.com").update!(role: :super_admin)CODE
LOWdocs/hosting/oidc.md192User.find_by(email: "admin@example.com").role # => "super_admin"CODE
LOWmobile/test/services/telemetry_service_test.dart139 expect(TelemetryService.sanitizeUserId('user@example.com'), isNull);CODE
LOWmobile/test/services/telemetry_service_test.dart150 id: 'user@example.com',CODE
LOWmobile/test/services/telemetry_service_test.dart151 email: 'user@example.com',CODE
LOWmobile/test/services/telemetry_service_test.dart161 expect(userJson, isNot(contains('user@example.com')));CODE
LOWmobile/test/services/telemetry_service_test.dart188 expect(filtered.message, isNot(contains('user@example.com')));CODE
LOWmobile/test/services/telemetry_service_test.dart246 expect(filtered.message!.formatted, isNot(contains('user@example.com')));CODE
LOWmobile/test/services/log_service_test.dart20 expect(sanitized, isNot(contains('user@example.com')));CODE
LOWmobile/test/services/log_service_test.dart112 expect(exported, isNot(contains('user@example.com')));CODE
LOWmobile/test/services/log_service_test.dart126 isNot(contains('user@example.com')));CODE
LOWmobile/test/services/log_service_test.dart131 expect(exported, isNot(contains('user@example.com')));CODE
LOWmobile/lib/screens/login_screen.dart38 static const _emailPlaceholder = 'user@example.com';CODE
Modern AI Meta-Vocabulary12 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMapp/models/assistant/token_budget.rb4 # Shared resolution of the model's context window so prompt assembly and theCOMMENT
MEDIUMapp/models/sophtron_item/importer.rb5# This class orchestrates the complete import process for a SophtronItem:COMMENT
MEDIUMapp/models/sophtron_item/syncer.rb26 # This method orchestrates all phases of the sync:COMMENT
MEDIUMapp/models/provider/openai.rb349 # caller batches are split to fit the model's context window. `fixed` isCOMMENT
MEDIUMapp/models/provider/openai/auto_merchant_detector.rb462 # Enhanced developer message with few-shot examples for smaller/local LLMsCOMMENT
MEDIUMapp/models/vector_store/embeddable.rb41 # embedding model token limits.COMMENT
MEDIUMapp/models/vector_store/pgvector.rb10# - An embedding model endpoint (EMBEDDING_URI_BASE / EMBEDDING_MODEL)COMMENT
MEDIUMapp/models/vector_store/qdrant.rb4# Like the Pgvector adapter you still supply your own embedding model; QdrantCOMMENT
MEDIUMapp/models/vector_store/qdrant.rb10# - An embedding model endpoint (EMBEDDING_MODEL_URL / EMBEDDING_MODEL_NAME)COMMENT
MEDIUMapp/controllers/pages_controller.rb4 # Per-widget dashboard layout guardrails. Deterministic defaults the masonryCOMMENT
MEDIUMapp/controllers/pages_controller.rb229 # Resolves a section's layout guardrails, applying the user's height presetCOMMENT
MEDIUMtest/models/assistant/configurable_test.rb36 # The roster only itemizes when the model's context window is comfortableCOMMENT
AI Slop Vocabulary14 hits · 30 pts
SeverityFileLineSnippetContext
LOWcompose.example.ai.yml100 # turn, so it has to be sized as a sum rather than simply set higher:COMMENT
LOWapp/models/redbark_item.rb16 # Validate on every save, not just create - an update must never blank the keyCOMMENT
LOWapp/models/simplefin_account.rb108 # For custom currency URLs, we'll just use the last part as currency codeCOMMENT
MEDIUMapp/models/assistant.rb10 # in Settings -> Preferences. They back the wealth agent-harness workflowCOMMENT
MEDIUMapp/models/assistant.rb11 # documented in docs/llm-guides/wealth-agent-harness.md. GetValuations is theCOMMENT
MEDIUMapp/models/holding.rb217 # typically be for real tickers not CUSTOM: ones. A more robust solution would track whichCOMMENT
LOWapp/models/simplefin_item.rb219 # We don't destroy it because has_one :account, dependent: :nullify would nullify the FK we just setCOMMENT
LOWapp/models/simplefin_item.rb221 # trigger autosave on the preloaded account association, reverting the FK we just set!COMMENT
MEDIUMapp/models/demo/generator.rb86 # Generate comprehensive realistic demo data with multi-currencyCOMMENT
MEDIUM…ls/simplefin_account/investments/holdings_processor.rb44 # Parse provider data with robust fallbacks across SimpleFin sourcesCOMMENT
LOWtest/models/coinstats_account/processor_test.rb36 # Should not raise, just return earlyCOMMENT
LOWtest/controllers/settings/providers_controller_test.rb218 # Entry should be removed, not just set to nilCOMMENT
LOWconfig/initializers/00_ssl.rb257 # Fallback: just use the custom CA (may break connections to public services)COMMENT
MEDIUMlib/generators/provider/family/family_generator.rb217 # This approach is more robust than trying to append to an existing include lineCOMMENT
Slop Phrases6 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMconfig/initializers/doorkeeper.rb396 # For example you can add an additional database column to `oauth_applications` table,COMMENT
LOWconfig/initializers/doorkeeper.rb53 # Don't forget to include Doorkeeper ORM mixins into your custom models:COMMENT
LOWconfig/initializers/doorkeeper.rb84 # [NOTE] If you apply this option on already existing project don't forget to manuallyCOMMENT
LOWconfig/initializers/doorkeeper.rb84 # [NOTE] If you apply this option on already existing project don't forget to manuallyCOMMENT
LOWconfig/initializers/doorkeeper.rb518 # them to make sure you doesn't get NoMethodError exception.COMMENT
MEDIUMspec/spec_helper.rb48# with RSpec, but feel free to customize to your heart's content.COMMENT
Example Usage Blocks6 hits · 9 pts
SeverityFileLineSnippetContext
LOWapp/models/concerns/currency_normalizable.rb9# Usage:COMMENT
LOWapp/jobs/snaptrade_activities_fetch_job.rb7# Usage:COMMENT
LOWapp/services/provider_loader.rb6# Usage:COMMENT
LOWtest/support/provider_adapter_test_interface.rb4# Usage:COMMENT
LOWlib/generators/provider/family/family_generator.rb6# Usage:COMMENT
LOWlib/generators/provider/global/global_generator.rb6# Usage:COMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHtest/controllers/rules_controller_test.rb270 # raising it, which would otherwise log the reset as requested and redirectCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWapp/models/enable_banking_item.rb51 # TODO: implement data retention policy for last_psu_ip (GDPR/CCPA — nullify after session expiry or 90 days)COMMENT