Take screenshots of your HUT collection in-game, drop them here, and AI will identify the cards and add them to your BUHUTO collection.
Expect about 10–15 seconds of processing per screenshot (one Claude API call per image). Larger batches take proportionally longer.
Required to use Claude AI vision. Get your key at console.anthropic.com. The key is stored only in your browser.
📷
Drop screenshot(s) here
or click to browse files (JPG, PNG)
Once you set the guide lines, they are saved — load new images and scan: the same 2×6 split is used automatically (in-game cards stay in the same slots). The server crops 12 separate card images and sends each to Claude.
Mode:
Preview — see the full grid here before anything is sent to AI. Mouse wheel zooms the image and lines (zoom centers on the pointer). Resize the window or scroll if needed.
Guides: 1) top of top row, 2) between rows, 3) bottom of bottom row. Vertical lines separate the six cards. Coordinates are saved in your browser.
Uniform split: margin % trims menus; cells show as a grid. Change the numbers to refresh the preview.
Zoom: 100%
Coordinates (not hardcoded in source)
Values are 0–1 relative to image width (vertical lines) and height (horizontal lines). They are stored in the browser (localStorage) and sent to the server as JSON when scanning.
Horizontal h[0..2]—
Vertical v[0..6]—
Processing...
📷 Scan Results
BND / UT status (optional)
Under each scanned card, click BND or UT to toggle that mark on/off (fix AI mistakes or fill in missing ones).
BND (bound to account) always turns UT on as well — bound cards are untradeable. Turning UT off while BND is on clears both.
Highlighted = active. Dim outline = inactive. Accepting a card saves these flags with your collection.
Optional for now: these flags are not used by the optimizer yet — no practical benefit today. More features that use this card data are coming.
Page 1 / 1
Tap ✎ on a card to search the database or create a custom card.
×
Player Details
Card Browser
1 / 1
🏒
All Stats
⚡ Optimizing team...
Preparing...
0%
Tested combinations: 0
Best score: 0
×
⚡ Optimization Results
Total Score:0
Active Chemistries:0
Average OVR:0
Chemistry Groups
×
Card collection
Select the cards you actually own in NHL HUT. Optimization uses only these cards.
Tips: Click a card to add it to your collection. Ctrl+Click toggles collection membership. Shift+Click toggles temporary cards.
Cards in collection: 0
×
🔄 Card Changes
📤 Leaving Lineup
📥 Joining Lineup
🔄 Database Update Available
Current database:0 cards
Available online:0 cards
New cards:0 cards
×
🆕 New Cards Found
0 cards approved
Player Name
Overall:0
Position:N/A
Team:N/A
Card Type:N/A
Salary:N/A
Nationality:N/A
X-Factors
All Stats
0 cards approved
✅
Success!
Operation completed successfully.
⚗️ Chemistry Editor
Existing Chemistries
Add New Chemistry
×
💾 Save Team Configuration
Save your current lineup to load it later
Choose a descriptive name to easily find this configuration later
×
📂 Load Team Configuration
Browse and load saved team configurations
🏒 BUHUTO
Beeq's Ultimate Hockey Ultimate Team Optimizer
🎯 What is this?
BUHUTO is a team building optimizer for NHL HUT (Hockey Ultimate Team). It helps you find the best lineup by maximizing chemistry bonuses, OVR ratings, and managing salary cap constraints.
🧬 CHARA Optimizer
CHARA (Continuous Hill-climbing with Aggressive Random Adjustments) uses 16 parallel Web Workers in a tournament phase to explore different lineup combinations simultaneously. After finding the best starting point, it continues optimizing with random multi-swaps for maximum exploration.
▶️ Play - Start/Resume optimization
⏸️ Pause - Pause and organize lines (faceoffs, handedness, OVR sorting)
⏹️ Stop - Stop and finalize lineup
📦 Adding Cards (in Card Browser)
Shift+Click Add/remove from your collection (green border) - saved to localStorage
Ctrl+Click Add/remove as Temp Card (orange border) - "what if I had this card?" - not saved
Alt+Click Add to Choice Pack selection (violet border)
🔒 Lineup Slots
Ctrl+Click on lineup slot → Lock/unlock player (before running or while paused)
🎁 Choice Pack Runner
Select 3+ cards with Alt+Click, then run Choice Pack Runner from the Actions menu. It simulates adding each card to your team and tells you which one would give the best improvement - perfect for choosing from reward packs!
💾 Saving & Loading
Your collection, lineups, and settings are automatically saved to localStorage - they persist between sessions. Use Export Data / Import Data in Actions to backup or share (admins: one Import / Export Data hub with server saves and file import/export).
👨💻 About This Project
BUHUTO is a one-man project, coded entirely by chatting with the brilliant Claude Opus 🤖
If something breaks, or new cards/chemistry combos don't appear immediately in BUHUTO, that's totally normal. I'll do my best to add new content within the same day.
×
×
Settings
Optimizer preferences, custom rules, and scoring weights
🎮 Game
Switches the card database, chemistry combos, and your collection for that game.
Changing the game reloads the app.
Restores every optimizer setting to BUHUTO defaults — scoring weights (OVR 4 / AP 8 /
Salary 2), X-Factor weights (Quick Draw 8, Truculence 2), Stacksmith and CHARA
options, captain policy, card-type weights, and custom rules. Saves immediately.
🎯 Optimization Settings
Automatically moves the forward with the highest faceoff rating to center position in each line.
Automatically places left-handed players on right wing (RW) and right-handed players on left wing (LW) for better one-timer positioning. Also applies to defense pairs.
When enabled, all optimization modes (CHARA, line optimizer, web workers) will ignore salary cap violations and allow any team composition regardless of salary cost.
When CHARA stops improving, it snapshots the current under-cap lineup, briefly exceeds the salary cap to escape the local optimum, and tries to repair the overage (salary buffs / cheaper swaps) within the window below. If it finds a better under-cap lineup it keeps it; otherwise it reverts to the snapshot. A countdown timer is shown in the CHARA bar during the breach.
How long CHARA may stay over the salary cap while trying to repair it before reverting to the snapshot lineup. Only used when "Allow temporary salary cap breach" is enabled.
Sets how many parallel workers CHARA uses. Choice Pack Runner shares this pool across selected cards when CHARA is stopped. Takes effect on next CHARA or Choice Pack start.
When enabled, pressing Play first runs a chain-by-chain Stacksmith Lineup pass to produce a strong starting lineup, then hands it off to CHARA for refinement. Hard custom rules (must include / must exclude players, team and nationality counts) are honored throughout. If the seed cannot satisfy hard rules, CHARA starts without it.
When CHARA stagnates and swaps a weak line with a StackSmith recommendation, this timeout controls how long CHARA tries to recover from a salary cap violation before restoring the previous lineup. Set higher for more time to fix cap issues.
When enabled, Stacksmith counts QUICK DRAW X-Factor score only when the player is at center and has enough faceoffs.
When off, must-include is not pre-placed: that card stays in the pool, and each candidate line gets a bonus (below) for still-needed required players. When on, the old behavior: place and lock early.
When off, excluded players are removed from the pool (hard). When on, they stay in the search pool; each time they appear on a line candidate, that line’s rank is reduced by the penalty. Final lineup still cannot contain them (candidates with excluded cards are skipped).
When enabled, optimizer modules are limited by your S1/S2/S3/S4/S5/S6 XP token budgets and reject lineups that exceed them.
When disabled, XP token counts are ignored.
Upgrade costs are cumulative per card tier (1 + 2 + 3 + ...). Example: 80→85 costs 15 tokens total.
🎖️ Season 6 Captain
🏒 Coach (NHL 27)
Mark owned coaches in the Chemistry Combos panel (My coaches). Auto mode only optimizes over that pool.
⚖️ Scoring Weights
Adjust how much each boost type contributes to the optimization score. Higher values = more priority.
Start
Start
Start
⚡ X-Factor Weights0
Assign point values to X-Factor abilities. Points scale with tier: Tier 1 = 1×, Tier 2 = 2×, Tier 3 = 3×.
🃏 Card Type Weights0
Flat bonus points per lineup player by card type. New card types from the database appear here automatically.
🌍 Nationality Weights0
Flat bonus points per lineup player by nationality. Search and add nationalities below.
🏒 Team Weights0
Flat bonus points per lineup player by team. Search and add teams below.
📋 Custom Rules
Add constraints that lineups must satisfy. The optimizer will reject any lineup that doesn't meet these rules.
➕ Add New Rule
×
What's New
BUHUTO updates and service notices
Loading updates…
×
Admin
Working on NHL 26 — pick a tool above.
Pick a tool above: Usage, HUT Scraper, etc.
Server scan unavailable. Use Scan new cards (Edge extension).
Rows: 0
Dev: Playwright server scan (often fails on prod)
SCAN LOG
PENDING LOGOS
Map hash filenames to conditions. Choose type, pick any existing condition (or type a new one), then approve. Click logo to enlarge.
Status
DB
Name
OVR
Pos
Logos
Type
Team
Nation
Height
Weight
Salary
Shoots
URL
JSON
Parsed card JSON
USAGE
LAST 7 DAYS
Date
Unique
Loads
CHARA
CHARA time
Choice
×
Import / Export Data
Tiedosto (JSON) tai palvelintallennus: collection, lineup, settings, custom cards (data/admin-cloud-saves).
Name
Hex
FWD
DEF
G
Score
Salary
AP
Created
Modified
Actions
Open as admin to load saves.
×
Sign in
Passwordless sign-in with a 6-digit code sent to your email.
×
Import / Export Data
File (JSON) or cloud: collection, lineup, settings, custom cards (up to 10 saves).
Name
Hex
FWD
DEF
G
Score
Salary
AP
Created
Modified
Actions
Sign in to load saves.
×
Privacy policy
How BUHUTO handles your account data
What we collect
Your email address (for sign-in)
Cloud save data you choose to store (lineup, collection IDs, settings, custom cards)
IP address at sign-up (abuse prevention only)
Why
Email is used only to send one-time sign-in codes and identify your account. Cloud saves let you sync setups across devices.
Retention
Data is kept until you delete your account from the Actions menu.
Your rights
You can delete your account anytime (Actions → Delete account). This removes your email, cloud saves, and signs you out.
Marketing
We do not send marketing emails.
Shared lineups
Share links expose lineup slots only — not your full collection. Viewing someone else's shared lineup does not change your local collection.
×
Chemistry V2
Tallennus: dataDir + git. Kuvapohjainen editori / Claude myöhemmin.
Lisää tai muokkaa V2-kemiaa
Excluded
Excluded
Excluded
Vision line 4 output: —
Vision workbench (manual crop prep)
Drag one or more screenshots here. Viewer opens in 1:1 scale. Mouse wheel zooms in/out, drag pans.
Hold Shift and drag to create crop; move crop by dragging inside it, resize from any corner.
Press C to send current crop to Claude Vision.
Drop screenshot(s) here
or
No image loaded100%x: 0 · y: 0
Claude raw output: —
Filter
Poista tai muokkaa tallennettuja rivejä. Muokkaa täyttää lomakkeen Manual-näkymässä. Haku: välilyönti = kaikki sanat (AND); isot AP / OVR / SAL = vain kyseinen boosti, pienet kirjaimet myös nimiin (esim. ap → Tappara).
New
DescriptionTypeValueKeywordsExclude
Create a reusable condition (card type, nationality, or team)
New condition
Saves to custom_conditions.json so the name appears in Chemistry V2 dropdowns and Admin Scraper Pending Logos.
Optional logo is stored in mapped_logos.json; later NHL logos can be mapped to this same condition to avoid duplicates.
If you delete only the logo under Logos, the name may still exist — Save will offer to replace it.
NHL logos from unique_logos.json. Preview uses server proxy (Referer). Use Fetch & save to store PNG locally.
Add new logo
Direct browser load hits Google redirect — use Fetch from NHL (server proxy with Referer).
HUTDB Synergy Elements check-in
Fetches NHL 27 combos from hutdb.app/chemistry
(177 Synergy Elements). Goalie rows match Defense — we store Forwards + Defense only.
Uses the current Admin game (pick NHL 27).
Unmapped logo stems get type/value dropdowns so you can map them to your local condition names.