Credit Committee JSON
Access Rules
- Use the public HTTP API base URL supplied by the task or environment. If a setup script is mentioned but an API base URL is already provided, use the provided URL directly.
- Do not read local environment source/data files, test tasks, reports, generated skills, notes, or task metadata. For benchmark tasks, read only the prompt and its
input/payloads/answer_template.jsonunless the user explicitly grants more. - Prefer public API endpoints over local files for branch details, branch metrics, sector exposure, loans, pending applications, policies, benchmarks, manifests, and credit-union segment data.
- Return only the JSON object requested by the template. Do not add markdown, comments, or explanatory text outside the JSON.
Core Workflow
- Read the prompt and
answer_template.jsonfirst. - Extract the target identifier, as-of/review date, population rule, named applications, required benchmark version, and every enum/order/precision rule from the template.
- Discover and fetch public API data for the requested surfaces:
- Branch tasks: branch details, branch metrics, loans, sector exposures, pending applications, credit policies, FDIC benchmarks.
- Credit-union segment tasks: manifest if available, policies, segment record, NCUA benchmarks, peer-state data.
- Normalize source data into tables keyed by
loan_id,application_id,sector,branch_id, orsegment_id. - Apply policy thresholds from the API before using fallback heuristics. Treat controlled policy codes, rating classes, reason codes, actions, and checklist gates as authoritative.
- Compute all intermediate totals with full precision. Round only when assigning output fields.
- Reconcile every aggregate against the row-level records:
- Counts equal the number of included records.
- Exposure totals equal the sum of included balances or approved amounts.
- Capacity remaining equals available capacity minus retained bank commitment.
- Variance ratios equal branch/state metric minus benchmark metric; basis points equal variance ratio times 10000.
- Sort arrays exactly as the template says. For maps of reason codes, sort each code list alphabetically unless the template says otherwise.
- Validate that every required key is present, no enum value falls outside the template, and numeric precision matches the template.
Common Calculations
- Currency fields: output numbers rounded to 2 decimals.
- Ratio fields: output as decimal ratios, not percentages, rounded to the precision requested, usually 4 decimals.
- Basis points:
(observed_ratio - benchmark_ratio) * 10000, rounded to 2 decimals unless the template says otherwise. - Downgrade notches:
final_rating - current_rating; higher ratings are worse. - Material downgrade: include loans with downgrade notches of at least 2 unless the prompt or policy gives a different threshold.
- DSCR breach: compare stressed DSCR to the template or policy breach threshold, commonly
1.00. - If a template says "integer values exactly as reported", do not recompute or round those benchmark values.
Rating Regrade Tasks
Use this pattern for branch rating migration reviews.
- Select the target branch loans whose
current_ratingis at or above the requested minimum rating. - Re-derive
final_ratingusing the public rating policy and objective loan factors such as payment status, DSCR, LTV, FICO, collateral position, bankruptcy, nonaccrual status, documentation gaps, and any policy overrides. - Build final-rating exposure totals grouped by
final_rating, ordered ascending by rating. - Build migration slices only for the specific current-rating bucket requested by the template, grouped by
final_ratingwith sortedloan_ids. - Build watch-list action coverage from loans that require follow-up after regrade. Group by recommended action and include only actionable follow-up categories requested by the template, such as
watchlist,special_assets,workout,partial_chargeoff_review, orlegal_referral. - Identify material downgrades with
final_rating - current_rating >= 2, sorted byloan_id. - Select the top problem credit by the most severe final rating, then by nonaccrual or delinquent payment status, then exposure if needed.
- For NPA benchmark fields, use the branch NPA exposure/ratio definition exposed by the API or policy. Pair it with the requested FDIC benchmark metric and version.
Pending Application Allocation Tasks
Use this pattern for lending-committee allocation packages.
- Fetch pending applications, branch lending capacity, existing sector exposures, branch metrics, and approval policy.
- Evaluate each application against policy floors and hard stops: DSCR, LTV, FICO, bankruptcy, collateral, documentation, startup risk, sector concentration, capacity, and external benchmark weaknesses.
- Assign a decision from the template enum. Use
conditional_approveorparticipation_requiredwhen the credit is acceptable but needs retained-exposure reduction, SBA guaranty, monitoring, board exception, or other listed conditions. - Set
approved_amountto the gross approved credit amount. Setbank_capacity_usedto the retained bank exposure after participation, guaranty, or amount reduction. - Compute:
gross_approved_amountas the sum of approved gross amounts.committed_capacity_amountas the sum of retained bank capacity used.remaining_capacityas lending capacity minus committed capacity.
- Build
priority_rankingfrom approved and conditionally approved applications only, ordered by the policy priority score or committee priority rule. - Create decline reason code lists only for declined applications; use allowed codes and sort them.
- Recompute post-approval concentration by sector after approved retained exposure or gross exposure according to the API policy definition. Flag applications that breach or press against concentration limits, and set handling to the actual decision path.
Credit-Union Segment Posture Tasks
Use this pattern for segment posture pages.
- Fetch the target segment record, public policy, NCUA benchmark version requested by the prompt, national metrics, state metrics, and named peer states.
- Copy state benchmark metrics exactly when the template asks for reported integers.
- Sort peer state codes ascending.
- For each direction field, compare the target state value with the national value and with the peer-state median:
higherif the state value is greater.lowerif it is less.equalif it matches.
- Choose posture from policy and evidence:
- Use
continue_approvingwhen capacity is available and external metrics support routine risk. - Use
continue_with_tighter_conditionswhen capacity exists but state or peer metrics are weaker, or segment controls need tightening. - Use
temporarily_pausewhen capacity is exhausted or external/segment risk violates pause triggers.
- Use
- Include required checklist gates from the product/segment policy and add operating controls that directly address the observed weakness.
- Add escalation triggers from policy, sorted by
trigger_id, with owner enums from the template. - Keep the interpretation concise and controlled: capacity status, external risk status, risk tolerance, and one allowed committee message.
Watch-List Stress Tasks
Use this pattern for adversely rated branch-loan stress packets.
- Select target branch loans with
current_ratingat or above the adverse minimum in the prompt. - Assign CDFI-style risk classes and factor scores from the public policy or endpoint. Do not invent class names outside the template.
- Compute the requested DSCR stress only for loans with DSCR available. For a
+200bpwatch-list stress, use the public policy formula or stress factor exposed by the API. - Mark breaches when stressed DSCR is below the breach threshold.
- Build
breach_loan_idssorted ascending. - Queue workout actions from policy. Typical severity mapping is:
- Projected loss or nonaccrual:
partial_chargeoff_review. - Severe delinquency or doubtful credit:
special_assetsorworkoutas policy indicates. - Adverse current loans needing close follow-up:
watchlist. - Legal/default path:
legal_referralonly when supported by policy facts.
- Projected loss or nonaccrual:
- Sort workout queue by descending exposure, then ascending
loan_id. - Group severe bucket counts by current rating and payment status using the template sort rule.
Competing CRE Decision Tasks
Use this pattern for comparing named CRE applications.
- Fetch both application records, branch metrics, CRE/sector exposure, loan portfolio, credit policy, and FDIC benchmark data.
- Score each application with the weighted CRE/CDFI scoring policy. Lower scores are better when the template states that convention.
- Classify scores with the policy thresholds, then assign decisions and reason codes.
- Apply the CRE dual-stress formula from policy. If the policy names a compact formula, use that string in the output, and compute stressed DSCR from base DSCR.
- Select the stronger application by score, stress result, collateral/DSCR quality, and concentration impact. If concentration or benchmark underperformance prevents full approval, use the controlled conditional or participation path.
- Give the unselected application a
declineordeferdisposition with only allowed reason codes. - Compute CRE concentration:
- Existing concentration from existing CRE exposure over the policy denominator.
- Post-approval concentration after the selected application or retained bank exposure, following policy.
- Policy variance in bps as
(post_approval_concentration - policy_limit) * 10000.
- Add closing/monitoring conditions that directly mitigate the selected path, then sort conditions alphabetically.
Output QA Checklist
- The top-level keys exactly match the required template shape.
- Every required nested key is present, even when a list is empty.
- Enum strings are copied exactly from the template.
- IDs are sorted according to the template and are stable strings from the API.
- Exposure and count subtotals tie to their detail rows.
- Ratios and basis points are recomputed independently before finalizing.
- The answer is valid JSON and contains no trailing comments or markdown.