For most investors, each renewal period inevitably leads to one question: which domains still deserve another year of investment capital?
Easy answer when the name pulls regular inquiries, meaningful traffic, or displays clear commercial value. Slightly more difficult when dozens or hundreds of middling domains fall between obvious gems and embarrassing mistakes. Each seems cheap to renew individually. Collectively the renewals may price out new acquisitions, demand generation, product development, and even holding onto better names for another year.

Domain portfolio pruning forces investors to quantify that decision. Portfolio scoring models combine renewal cost, name quality, search demand, inquiry history, TLD performance, and portfolio overlap to score inventory against the same metrics.
The goal is not necessarily telling a computer program to delete exactly 20% of the portfolio. Applying a fixed deletion target can force deletion of perfectly good names simply because the rest of the portfolio performs better on average. Instead, treat the bottom 20% as a review queue. Move each name into a separate queue where it receives further commercial, technical, and legal review before renewals are disabled.
An automated scoring model can highlight poor capital investment. But it should not dictate human decision making.

Avoiding Past Sunk Costs

When selecting names to renew, many investors suffer from context based emotional attachment.
A domain investor might recall exactly why they bought an individual domain years ago. That initial idea now long forgotten, the sunk cost of the original decision biases future outlook.
Purchased for $800 five years ago, a domain might feel too costly to release even when the name produces zero qualified interest and is ill-suited for the current market. Past cost is a sunk cost. Continuing to renew the domain will not return that initial purchase price.
Renewal decisions should be based on future earning potential, not an emotional attachment to past performance or cost.

Savings accounts create another dangerous mentality. An investor may rationalize registering hundreds of speculative domains during a marketplace promotion. Each registration only costs a few dollars, how can 300 individual decisions be bad?
Routine annual renewal pricing comes later. What began as a modest bucket of ideas becomes several thousand dollars of annual commitment.
Imagine 300 speculative domains cost $22 per year to renew on average. Keeping every single domain costs $6,600 per year. If those names have generic construction, limited buyer interest, and no strategic purpose, annual costs are not limited to the renewal invoice.
The opportunity cost of that decision includes the better names that could not be acquired because the funds were already spoken for.
Previous purchases should inform future scoring, but should not dictate automations.

Establish Clean Portfolio Data

Algorithmic portfolio pruning begins with one clean inventory list.
Export domain lists from registrars and marketplaces. The working dataset should include at minimum: domain, TLD, registrar, expiration date, renewal price, acquisition date, acquisition price, acquisition source, listing price, landing page, expiration method, traffic, advertising revenue, direct inquiries, offers, highest offer amount, and negotiation history.

Domains in operational use should be flagged before scoring. Exclude any domains currently in use as websites, email addresses, redirects, nameservers, customer projects, defensive registrations, payment processors, or infrastructure/authentications. Assets in current use should not be considered for automated expiration.
Exports will vary widely by registrar. Some may include estimated renewal price while others show price only for the current registration term. Date formats may differ. TLD punctuation may differ. Internationalised domains must be cleaned carefully. Premium status may not be visible from acquisition price alone.
Normalize irregular data into a flat table with one domain name per row and only one unique meaning per column. Keep raw exports in separate files so that future transformations can be reviewed.

Renewal prices and expiration dates can be confirmed with RDAP where available. ICANN defines RDAP as “the structured queryable successor to WHOIS for working with current registration data.”
Bot scripts should respect hostname limits imposed by registrars and registries. ( ICANN provides RDAP lookup limits)
Domains should never be dropped automatically due to a missing field or bad import.

Distinguish Observation From Estimation

Any useful scoring model separates known data from estimated data.
Known data includes renewal price, acquisition date, recorded inquiries, realized revenue, traffic, offers, and highest offer. These should only be used if the source tracking is known to be accurate.

Search volume, CPC estimates, automated appraisals, expected retail price, buyer estimates, language scores, and estimated sale probability are best guesses. They may help inform a decision, but should not be included in-score with the same confidence as realized transactions.
Dates and externally sourced metrics should include a source field and collection date. Search volume fluctuates. Registrar prices increase. API’s break. Metrics built from stale inputs may appear accurate while describing a portfolio from years past.

Empty fields should remain empty until an explicit rule is documented to substitute a value. Filling every empty inquiry count with a zero wrongly punishes domains whose sales page was never tracked. The model should differentiate “no inquiry tracked” from “inquiry tracking not available.”
Each metric’s overall quality should also be documented. A low score driven by known data is more useful than a partially guessed score.

Choose Predictive Metrics Over Simple Ideas

A scoring model should evaluate various facets of domain value, rather than repeatedly weigh the same factor.
Linguistic integrity may include clarity, spelling, pronunciation, word order, memorability, length, and how easily a phrase can be said on the radio. Buyers should prefer names that are easier to spell and say.
Commercial breadth estimates how many buyers may realistically use that name to buy or sell. Common phrases applicable to a single product in a single region have limited potential when compared to shorter names relevant across many growing industries.
Inbound signals include qualified inquiries, offers, form starts, form submits, abandoned sales, direct negotiations, and return visitors. Recent qualified activity should typically weigh heavier than historical automated inquiries.

Market signals can include comparable sales, historic liquidity rates, marketplace views, prior offers, aftermarket performance by name extension, and performance of similar names inside the investors own portfolio.
Extension popularity can be evaluated by real world adoption, historic sale prices, buyer familiarity, renewal cadence, and relationship between keyword and extension.
Annual carrying cost includes renewal price, premium status, marketplace fees, management overhead, and estimated holding period.
Risk could include exposure to trademark disputes, generic or confusing construction, opaque ownership history, prohibited use history, abnormal registry restrictions, and unexpected technical dependencies.

These categories pull from a larger set of factors used across machine learning. Adding more numbers does not improve scoring automatically. Build metrics that explain value.

Understanding Search Data Comes with Context

Monthly search volume tells part of the story, but domains are rarely bought because someone searched for that word.
Google Keyword Planner shows monthly search estimates and associated advertising costs for keywords. The tool also explicitly states: “how well your campaign will perform depends on many factors… such as your location, budget, customer behavior, competition for those keywords, and quality of your ads.” (Google Keyword Planner)
Monthly search volume is a demand signal, not an automatic valuation tool.

Brandable terms with low search volume may cater to a narrow buyer funnel. Informational terms might trigger huge search volumes, but have limited branding potential. Newly created, highly invented brands can be valuable even when there was zero search history at the time of purchase.
Cost per click gives additional context about advertiser competition. Extremely high values might reflect very little search volume or be dominated by expensive campaigns targeting a specific city or region. Multiplying search volume by CPC creates an estimated value, not a domain sale price.

Google Trends may help identify directional change. Normalized by geography and time, the chart scales any term from 0-100 depending on relative search interest. The baseline “100” represents the peak period within the selected timeframe, not an absolute number of searches. (How Google Trends data is explained)
Directional change may matter more for pruning than a single month estimate. Compare search interest across years when possible. A technical phrase showing slow consistent growth across five years may deserve further review when compared to terms that spiked once, then returned to zero.

Creating the Portfolio Scoring Model
Portfolio score can begin as a simple combination of seven separate components, each normalized to values from 0–100.
Let:
L = Linguistic Integrity score
B = Buyer Breadth score
I = Inbound Signals score
M = Market Signals score
E = Extension Strength score
D = Demand Signals score
C = Carrying Cost score

Estimated Portfolio Score = 0.20L + 0.15B + 0.20I + 0.15M + 0.10E + 0.10D + 0.10C
Coefficients always add to 1.00 or 100%. Scored data is also pulled from 0–100 before multiplied by coefficients. This creates a minimum possible score of 0 and maximum possible score of 100 when every factor uses the same scale.

Coefficients are example values that should be tailored to match an individual strategy. A broker specializing in liquid 1-10 day old domains might increase the coefficient for wholesale signals. Brandable domain buyers might increase linguistic integrity and buyer breadth. Traffic portfolios might prioritize demonstrated revenue and human visits over automated signals.
Coefficients should not be manipulated to save favorite names. Define coefficients before reviewing scored portfolio data, test coefficients against known historical data, and document any future changes.

Normalize Skewed Dataset Components

Ranking methods should account for vast differences within each portfolio column.
A single domain may have 40 recorded inquiries while the rest of the portfolio has zero. One name may produce $10,000 in revenue while hundreds produce zero. Applied directly into a formula, extreme outliers can cause each respective category to overweight that single exception.
Use percentile ranks to minimize distortion. Scores are not based on raw inquiry counts. Each domain is ranked against the entire portfolio and awarded a relative score. A domain in the 90th percentile of inquiries receives a high inbound score. A domain with zero inquiries that failed to implement tracking still receives a low score.
Logarithmic scaling can further limit distortion. Adding 1 qualified inquiry should help a zero inquiry name more than it helps a domain with existing inquiries. Include a decay factor so recent inquiries are weighted slightly heavier than older inquiries.

Recency is another critical factor. 1 qualified inquiry past should not outweigh 3 low qualify inquiries that occurred 6 years ago.
iScore uses a formula similar to: (Best Simplified Explanation of Logarithms)
Value = Quality Score × Recency Score × Log(Inbound Count + 1)
Certified corporate offers weigh heavier than email form inquires. Inbound contacts from this year weigh heavier than older contacts. Adding “1” to the inbound count ensures a domain with zero qualified inquiries still resolves to zero.

Calculate an Expected Carrying Cost

Lowering overall renewal prices starts with comparing opportunity cost to annual holding costs.
Cost efficiency can be calculated by dividing probabilities weighted sale value or expected revenue by annual holding costs:
Cost Efficiency = Probabilistic Expected Value / Annual Holding Cost

Probabilistic expected value should include sale value weighted by estimated annual sale probability. Historical sale data and expected revenue should also be included if known and can be verified.
Annual holding cost includes estimated renewal price, premium status fees, known marketplace fees, management time, and estimated holding period.
Domains with $10 estimated retail value and a 1% probability of sale have a probability weighted sale value of $0.10 per year. Remember to subtract sales commissions and other selling fees. If the domain cost $10 to renew each year, marginal improvement keeps this name. If that domain cost $100 to renew each year, it may be time to cut losses.

Sale probability is often the trickiest part of any formula. Avoid trying to determine sale probability for each individual domain.
Sales probability should be estimated by name clusters. Group similar names by TLD, acquisition type,_quality range_price, past renewal costs, and expected holding period. Calculate the percent of each group that sold during a defined time period. Use that percent as the starting probability, but penalize confidence when group sizes are small.
This method is preferable to assuming every selected domain has a 5% chance of sale just because 5% feels correct.

Calculate Real Domain Portfolio ROI

Improving annual ROI requires measuring both realized and unrealized value.
Realized return on investment measures realized revenue against actual portfolio expenses:
Realized ROI = (Net Sales Revenue + Net Parking Revenue) − ( Portfolio Acquisition Costs + Renewal Fees + Operating Expenses )
Estimating unrealized value is more subjective. Automated appraisals should not be counted as realized revenue. Internally applied retail prices are not guaranteed sale prices.

Monitor sell-through rate, average sale price, median holding period before sale, renewal costs per completed sale, revenue by acquisition source. Compare performance between cohorts to identify which portfolio strategies are working.
500 names that produce exactly 1 sale may still outperform a group that produces 10 sales but struggles to become profitable due to high premium renewals.
Building the Scoring Model across Portfolio Clusters allows strategists to identify which areas of their portfolio are performing, not simply which domains are performing.

Apply Exceptions and Overrides

Scored values should not be considered final decisions.
Mark domains down for risk when trademark concerns are present, registration details are incomplete, nameservers are unstable, there is a history of prohibited use, or known technical risks. Uses Trademark.net or the USPTO trademark API to identify names that may conflict with registered trademarks. Recommended that all legal research be verified by a qualified attorney.
Manual overrides are next.

Domains in use for live email addresses, customer infrastructure, project alignment, defensive registrations, payment processors, or actively being sold should never be excluded from renewal. Lack of automation is never an acceptable reason to drop a live customer domain.
A secondary exception applies to known assets that scored poorly due to keyword discovery. ultra-short, emerging terms, or saturated geography may be undervalued by mainstream keyword monitoring. Those names may require additional human review.

Finally allow overrides for portfolio themes. Dropping one geo-specific domain from a targeted country list could weaken an otherwise valuable collection. Family of brands or common typo variations may warrant bundled reviews. The clustering value sometimes outweighs individual scores.
Every override should include the reason for exemption and a secondary review date. Otherwise exceptions become permanent.

Move Bottom 20% into Review Status

Sort qualified portfolio domains from lowest score to highest and place the bottom 20% into manual review status.
Low does not yet mean disable automatic renewal.
Split this queue into thirds. Names that clearly meet release standards move immediately to “release” status. Names that should be liquidated can be tested on marketplaces, offered directly to other investors, or bundled before expiry. Everything else needs more information. Test a sales page, ensure proper distribution, double check pricing, verify tracking, and do a quick linguistic or legal double check.

A rigid 20% will force repeated quarterly scoring, but does not require exactly 20% of the portfolio to be released.
Perhaps only 5% of the portfolio deserve release after a strong acquisition quarter. Perhaps 40% of the portfolio fails the review process after a particularly speculative spending period.
Only pause automatic renewal after that final manual check. Then use the historical data to improve portfolio scoring.

Does Automation Exist in Spreadsheets?

Term listing services can reach tens of thousands of domains when automation is built around flat files.
Create individual tabs for each imported file type. Include raw registrar exports, cleaned inventory list, historic inquiry history, sales data, renewal prices, metric calculations, individual scores, and final decisions. Do not overwrite the original source data with calculated metrics.
Use VLOOKUP() or XLOOKUP() formulas to connect each domain against renewal price, inquiries, revenue statistics, and sales momentum. Include data validation rules that highlight expired domains, invalid prices, missing dates, and inconsistent TLD punctuation.

Conditional formatting can highlight domains approaching renewal, missing inputs, high carrying costs, low scores, and manual exceptions.
The final column should only contain specific, controlled values. Renew, Review, Liquidate, Release, On-Hold, and Protect are example decisions. Include the reviewer name and decision date. Automatic deletions should never be communicated directly from the spreadsheet.
Scales to how often the script is run. Focus on quarterly reviews instead of monthly iterations.

Expanding Automated Processing with Scripting

Python can scale to millions of domains per portfolio. Market Scout uses Python automation to score, prune, and review our client portfolios.
Programmatic methods should ingest registrar exports, normalize domains, remove duplicate entries, calculate days until expiration, merge inquiry history, retrieve past sales data, apply estimated scoring metrics, rank totals, and export reviewed queue.
Maintain a separate configuration file that documents model variables. We keep regression weights, score cutoffs, holding period assumptions, defined metrics, and expiration dates so that analysis can be recreated in future.

Print an exception list every time the script runs. Missing renewal prices, duplicate names, technical dependencies, and lookup failures should all be visible to the reviewer. Automation fails more silently when errors are not visible.
Name the output file. final.csv tells you absolutely nothing about when that file was created or which variables were used. Version every output file with creation date and summary model variables so that decisions can be compared year-over-year.
Credentials should never be stored with output data. Direct integration with registrar accounts is possible, but carries additional security concerns. Read only flat file exports are safer for an annual pruning job.

Validate the Model Against History

Every scoring model should first be tested against known history.
Select a past date to slice the portfolio. Calculate scores using only data available as of that date. Compare bottom 20% with subsequent activity. Did poorly scored names eventually receive legitimate inquiries? Did any go on to sell? Did highly scored names sit completely forgotten? Were specific extensions routinely over or undervalued? Was search volume overweighted?

Nothing will perfectly score every decision. The key is to surface systemic flaws so investors can tweak accordingly.
Do not only include memorable winners when testing the model. expired domains, average sales, missed purchases, and uneventful renewable should be included. Reviewed only the best names your portfolio you’ll believe every saved domain was worth holding onto.

Reinvest Pruning Budget Wisesely
Freed capital is not useful unless the next investment decision is more justified.

Releasing 500 names that renew for $15 per year frees up $7,500 for next year’s purchases. That budget could renew stronger names for an additional year, buy 1-2 stronger names, improve landing pages, pay a brokerage fee, fund speculative outbound outreach, or simply increase the investor’s cash position.
That entire amount should not automatically get spent on registering more domains. Inventory overload is simply replacing one crowded portfolio with another.
Define a course of action before realizing savings. Part of that budget could be allocated to high confidence renewals. Another slice could be used to fund boutique acquisitions. Leaving open the option to spend those funds later avoids commitment to a single strategy.

Again, monitor performance. If freed pruning funds get diverted into a new purchase category. Is that category more effective at producing inquiries? Do they produce better sell through? Are realized returns improving?

Annual pruning allows investors to slow down, measure performance, and adapt accordingly. Human review prevents painful mistakes. Algorithms can expose opportunities that would otherwise be missed by individual investors.