NC State vs Virginia Odds Preview August 29: Spread and How to Watch

# Cowork Automation — Pre-Filled Schedule Blocks (NCAAF — FBS) ## Purpose Produce ready-to-paste intake blocks for TheSpread.com NCAAF on-demand skill, so the teams and dates are filled in automatically instead of by hand. Each block is the intake header of the on-demand skill with five fields set: article type, away team, home team, game date, publish date. Output is dropped as a `.txt` file into a Google Drive folder — never delivered inline in chat. Scope is **Division 1 FBS** college football only (the major betting programs). FCS and lower divisions are excluded. Coverage rule by day: - **Sunday through Friday:** ALL FBS games that day (no cap). - **Saturday:** the first 10 FBS games by kickoff time (Saturday slates run 60+ games; the cap keeps Saturday manageable). Everything is `Article type: PREDICTION`. ### WHEN THIS RUNS The time and frequency this task runs are set ENTIRELY by the Cowork schedule/ automation settings. Nothing in this document sets, requests, gates, delays, or influences the run time in any way. When the task is triggered — on whatever schedule you set, or on demand — it runs immediately and produces its output. Any date language below refers ONLY to WHICH GAMES to fetch once a run has already started. It is content-selection math, not a schedule. It never affects when the task fires. Do not treat any date in these instructions as a run time, a start time, or a condition that must be met before running. --- ## OUTPUT DESTINATION Drop the finished `.txt` file into this Google Drive folder: > **Folder:** `TheSpread/Schedule Prefills/` > (If the folder does not exist, create it. Each run writes a new, date-stamped > file; do not overwrite prior files.) Do not deliver the blocks inline in the chat/response. The file in Drive IS the deliverable. After writing, confirm the filename and Drive location in one line. --- ## BLOCK FORMAT (exact — do not alter) Each game becomes one block, exactly this, with values substituted: ``` Article type: PREDICTION Away team: [FULL TEAM NAME] Home team: [FULL TEAM NAME] Game date: [Month D, YYYY] Publish date: [Month D, YYYY] Internal links (optional): ``` Rules: - Use FULL team names exactly as the source lists them (e.g. "Alabama Crimson Tide", "West Virginia Mountaineers"). Not abbreviations, not city-only, not bare school names. - `Game date` and `Publish date` are the SAME date (the day the game is played). - Date format is `Month D, YYYY` — e.g. `September 5, 2026` (no leading zero on day). - Leave `Internal links (optional):` blank. - Separate blocks with a line of 60 dashes: `------------------------------------------------------------` - Do NOT modify anything about the skill beyond these five fields. This task only produces the intake block, not the article. --- ## TARGET SPAN (default + override) **Default:** the seven-day span starting the day AFTER the run date (tomorrow) through the following six days — WEEK_START through WEEK_START + 6, where WEEK_START is tomorrow. A plain run needs no input. **Optional override:** If an explicit start date is provided to the run (in `YYYY-MM-DD` form), use that as WEEK_START instead and cover it plus the following six days. A plain run with nothing supplied always starts tomorrow. Resolve WEEK_START this way at the start of every run, then produce all seven days. (This is content-selection date math only — see WHEN THIS RUNS above. It does not affect when the task fires.) --- ## DATA SOURCE ESPN college football core API, per-date, filtered to FBS with `groups=80`: ``` https://sports.core.api.espn.com/v2/sports/football/leagues/college-football/events?dates=YYYYMMDD&groups=80 ``` `groups=80` = FBS (Division 1 major). Do NOT use `groups=81` (that is FCS) or omit the group filter (that returns all divisions). This returns an `items` array of event `$ref` URLs. Fetch each `$ref` to get the event; within `competitions[0].competitors`, each has a `team.$ref` to fetch for the `displayName`, and a `homeAway` field. `event.date` is the UTC kickoff time. Fetch via sandbox bash/Python (curl or urllib). Do not use the web_fetch tool. ### PAGINATION (critical) The events index is PAGED at 25 items per page. A Saturday FBS slate is 60–70 games = 3 pages. You MUST page through ALL pages, not just the first. The index response includes `pageCount`; loop `&page=1` through `&page=pageCount` and collect every item before selecting. Taking only page 1 silently drops most of the slate. --- ## SELECTION LOGIC (per day) 1. For each of the 7 dates, fetch ALL FBS events for that `YYYYMMDD` (paging through every page per above). 2. Sort that day's games by `event.date` (UTC kickoff) ascending. 3. Apply the day-of-week rule: - **If the date is a Saturday:** take the first **10** games by kickoff. If the day has fewer than 10, output however many exist. - **If the date is Sunday–Friday:** take **ALL** games that day (no cap). 4. If a day has 0 FBS games, write `(No games scheduled)` under that date header. 5. Away = competitor with `homeAway == "away"`, Home = `homeAway == "home"`, using each team's `displayName`. NCAAF has no doubleheaders, so no dedupe step is needed. --- ## EXTERNAL VERIFICATION (every run) Independently confirm the slate against a second source before writing. Web-search the week's college football schedule (e.g. "college football schedule [Month D, YYYY]") and/or check schedules on any reputable source — ESPN, CBS Sports, Fox Sports, the NCAA, conference sites, or the schools' official athletics sites — and confirm the selected matchups and dates. - The accuracy bar is: correct away team, correct home team, correct date. Not exact kickoff ordering. - If any matchup cannot be confirmed on a second source, still write the file, and add a note line at the very top naming what could not be verified. The file always gets written and always outputs the games it confirmed. --- ## FILE LAYOUT One file for the whole span. Each day gets a header, then its blocks. On Saturday the header notes the cap: ``` ================ Sunday, September 6, 2026 ================ [block] ------------------------------------------------------------ [block] ================ Saturday, September 12, 2026 (first 10 by kickoff) ================ [block] ------------------------------------------------------------ [block] ... ``` Include a header for every day in the span, even empty ones (with `(No games scheduled)`), so the week reads completely. ### Filename `NCAAF_predictions_YYYY-MM-DD_to_YYYY-MM-DD.txt` (WEEK_START to WEEK_END) --- ## HARD RULES - Output goes to the Google Drive folder `TheSpread/Schedule Prefills/` as a `.txt` file. Never inline in chat. - FBS only (`groups=80`). Never include FCS or lower divisions. - Saturday = first 10 by kickoff. Sunday–Friday = all games that day. - PAGE THROUGH ALL RESULT PAGES before selecting — never take only page 1. - Full team names exactly as the source lists them. - `Game date` = `Publish date` = the game day, formatted `Month D, YYYY`. - All blocks are `Article type: PREDICTION`. - Never fabricate, pad, approximate, or guess a matchup or date. Fewer correct games is better than a slate with a wrong entry. - Every run performs the external cross-check before writing. Anything that could not be verified is noted at the top of the file — but the file is always written and always outputs the games it confirmed. - Do not alter the skill intake beyond the five fields (type, away, home, game date, publish date). - Nothing in this document controls when the task runs — the Cowork schedule does. # Cowork Automation — Pre-Filled Schedule Blocks (NCAAF — FBS) ## Purpose Produce ready-to-paste intake blocks for TheSpread.com NCAAF on-demand skill, so the teams and dates are filled in automatically instead of by hand. Each block is the intake header of the on-demand skill with five fields set: article type, away team, home team, game date, publish date. Output is dropped as a `.txt` file into a Google Drive folder — never delivered inline in chat. Scope is **Division 1 FBS** college football only (the major betting programs). FCS and lower divisions are excluded. Coverage rule by day: - **Sunday through Friday:** ALL FBS games that day (no cap). - **Saturday:** the first 10 FBS games by kickoff time (Saturday slates run 60+ games; the cap keeps Saturday manageable). Everything is `Article type: PREDICTION`. ### WHEN THIS RUNS The time and frequency this task runs are set ENTIRELY by the Cowork schedule/ automation settings. Nothing in this document sets, requests, gates, delays, or influences the run time in any way. When the task is triggered — on whatever schedule you set, or on demand — it runs immediately and produces its output. Any date language below refers ONLY to WHICH GAMES to fetch once a run has already started. It is content-selection math, not a schedule. It never affects when the task fires. Do not treat any date in these instructions as a run time, a start time, or a condition that must be met before running. --- ## OUTPUT DESTINATION Drop the finished `.txt` file into this Google Drive folder: > **Folder:** `TheSpread/Schedule Prefills/` > (If the folder does not exist, create it. Each run writes a new, date-stamped > file; do not overwrite prior files.) Do not deliver the blocks inline in the chat/response. The file in Drive IS the deliverable. After writing, confirm the filename and Drive location in one line. --- ## BLOCK FORMAT (exact — do not alter) Each game becomes one block, exactly this, with values substituted: ``` Article type: PREDICTION Away team: [FULL TEAM NAME] Home team: [FULL TEAM NAME] Game date: [Month D, YYYY] Publish date: [Month D, YYYY] Internal links (optional): ``` Rules: - Use FULL team names exactly as the source lists them (e.g. "Alabama Crimson Tide", "West Virginia Mountaineers"). Not abbreviations, not city-only, not bare school names. - `Game date` and `Publish date` are the SAME date (the day the game is played). - Date format is `Month D, YYYY` — e.g. `September 5, 2026` (no leading zero on day). - Leave `Internal links (optional):` blank. - Separate blocks with a line of 60 dashes: `------------------------------------------------------------` - Do NOT modify anything about the skill beyond these five fields. This task only produces the intake block, not the article. --- ## TARGET SPAN (default + override) **Default:** the seven-day span starting the day AFTER the run date (tomorrow) through the following six days — WEEK_START through WEEK_START + 6, where WEEK_START is tomorrow. A plain run needs no input. **Optional override:** If an explicit start date is provided to the run (in `YYYY-MM-DD` form), use that as WEEK_START instead and cover it plus the following six days. A plain run with nothing supplied always starts tomorrow. Resolve WEEK_START this way at the start of every run, then produce all seven days. (This is content-selection date math only — see WHEN THIS RUNS above. It does not affect when the task fires.) --- ## DATA SOURCE ESPN college football core API, per-date, filtered to FBS with `groups=80`: ``` https://sports.core.api.espn.com/v2/sports/football/leagues/college-football/events?dates=YYYYMMDD&groups=80 ``` `groups=80` = FBS (Division 1 major). Do NOT use `groups=81` (that is FCS) or omit the group filter (that returns all divisions). This returns an `items` array of event `$ref` URLs. Fetch each `$ref` to get the event; within `competitions[0].competitors`, each has a `team.$ref` to fetch for the `displayName`, and a `homeAway` field. `event.date` is the UTC kickoff time. Fetch via sandbox bash/Python (curl or urllib). Do not use the web_fetch tool. ### PAGINATION (critical) The events index is PAGED at 25 items per page. A Saturday FBS slate is 60–70 games = 3 pages. You MUST page through ALL pages, not just the first. The index response includes `pageCount`; loop `&page=1` through `&page=pageCount` and collect every item before selecting. Taking only page 1 silently drops most of the slate. --- ## SELECTION LOGIC (per day) 1. For each of the 7 dates, fetch ALL FBS events for that `YYYYMMDD` (paging through every page per above). 2. Sort that day's games by `event.date` (UTC kickoff) ascending. 3. Apply the day-of-week rule: - **If the date is a Saturday:** take the first **10** games by kickoff. If the day has fewer than 10, output however many exist. - **If the date is Sunday–Friday:** take **ALL** games that day (no cap). 4. If a day has 0 FBS games, write `(No games scheduled)` under that date header. 5. Away = competitor with `homeAway == "away"`, Home = `homeAway == "home"`, using each team's `displayName`. NCAAF has no doubleheaders, so no dedupe step is needed. --- ## EXTERNAL VERIFICATION (every run) Independently confirm the slate against a second source before writing. Web-search the week's college football schedule (e.g. "college football schedule [Month D, YYYY]") and/or check schedules on any reputable source — ESPN, CBS Sports, Fox Sports, the NCAA, conference sites, or the schools' official athletics sites — and confirm the selected matchups and dates. - The accuracy bar is: correct away team, correct home team, correct date. Not exact kickoff ordering. - If any matchup cannot be confirmed on a second source, still write the file, and add a note line at the very top naming what could not be verified. The file always gets written and always outputs the games it confirmed. --- ## FILE LAYOUT One file for the whole span. Each day gets a header, then its blocks. On Saturday the header notes the cap: ``` ================ Sunday, September 6, 2026 ================ [block] ------------------------------------------------------------ [block] ================ Saturday, September 12, 2026 (first 10 by kickoff) ================ [block] ------------------------------------------------------------ [block] ... ``` Include a header for every day in the span, even empty ones (with `(No games scheduled)`), so the week reads completely. ### Filename `NCAAF_predictions_YYYY-MM-DD_to_YYYY-MM-DD.txt` (WEEK_START to WEEK_END) --- ## HARD RULES - Output goes to the Google Drive folder `TheSpread/Schedule Prefills/` as a `.txt` file. Never inline in chat. - FBS only (`groups=80`). Never include FCS or lower divisions. - Saturday = first 10 by kickoff. Sunday–Friday = all games that day. - PAGE THROUGH ALL RESULT PAGES before selecting — never take only page 1. - Full team names exactly as the source lists them. - `Game date` = `Publish date` = the game day, formatted `Month D, YYYY`. - All blocks are `Article type: PREDICTION`. - Never fabricate, pad, approximate, or guess a matchup or date. Fewer correct games is better than a slate with a wrong entry. - Every run performs the external cross-check before writing. Anything that could not be verified is noted at the top of the file — but the file is always written and always outputs the games it confirmed. - Do not alter the skill intake beyond the five fields (type, away, home, game date, publish date). - Nothing in this document controls when the task runs — the Cowork schedule does.

NC State opens the 2026 season on the road at Virginia, and the spread has moved steadily toward the home side since this game landed in Charlottesville. The Cavaliers are laying 4 points in a Week 0 ACC opener that was originally booked for São Paulo, Brazil before the trip fell through in June. The Wolfpack arrive with four straight wins in the series and a quarterback entering his third year as the starter. The line movement tells one story, the head-to-head history tells another, and the two do not agree.

Last Updated: Saturday, August 29, 2026

NC State vs. Virginia — Time & How to Watch

WhereScott Stadium, Charlottesville VA
WhenSaturday, August 29 – 3:30 PM ET
TVESPN

NC State vs. Virginia Matchup Overview

Virginia is coming off the best season in program history. Tony Elliott’s team went 11-3, finished 7-1 in ACC play, and reached the conference title game before losing to Duke 27-20 in overtime. The Cavaliers closed the year with a 13-7 win over Missouri in the Gator Bowl. Neither team is ranked in the 2026 AP preseason poll, and Virginia received a single vote.

NC State finished 8-5 and beat Memphis in the Gasparilla Bowl. Dave Doeren returns quarterback CJ Bailey, who threw for 3,105 yards last season and is now a third-year starter. The supporting cast around him is largely new. The Wolfpack must replace more than 70 percent of their receiving production, and leading rusher Hollywood Smothers left through the transfer portal.

The contrast in roster continuity is the defining feature of this matchup. Virginia enters with the most career FBS snaps of any roster in the country, a byproduct of aggressive portal work stacked on top of eight returning starters. NC State also returns eight starters, but its overall experience totals sit closer to the national middle. Virginia’s new piece is the most important one: Beau Pribula, a graduate transfer from Missouri, is listed as the starting quarterback ahead of Eli Holstein.

History cuts the other direction. NC State leads the all-time series and has won the last four meetings, including a 35-31 decision in Raleigh last September. The Wolfpack have not lost in Charlottesville since 2006. That is a long streak, though almost none of the players on either sideline were part of it.

NC State vs. Virginia Odds

SpreadMoneylineTotal
NC State+4 (-110)+165U 51.5 (-110)
Virginia-4 (-110)-195O 51.5 (-110)

Odds accurate as of August 29, 2026 via TheSpread.com. Odds change, get the latest NCAAF OddsFuturesProps

NC State vs. Virginia — Who Is the Public Betting?

NC State52%48%Virginia

See the latest College Football Public Betting Splits and make smarter wagers!

NCAAF Betting Angle for NC State vs. Virginia

The spread opened with Virginia at -2.5 and has climbed to -4. That is a meaningful move for a game between two teams with almost no 2026 evidence on file. Some of it is simple venue math. When the game was pulled out of Brazil and handed to Virginia as a true home date, the market had to price in a home field that did not exist in the original arrangement.

The case for laying the number is continuity. Virginia is returning a deep, veteran roster to a stadium where it went 11-3 a year ago, and it is facing an offense breaking in a new set of skill players. Openers reward teams that already know their assignments. Pribula also gives Elliott a quarterback with SEC starting experience rather than an unproven first-year option.

The case for the points is Bailey and the series. NC State’s quarterback has 22 career FBS starts and produced a 3,105-yard season without much help. Teams with a settled quarterback and an unsettled receiving room tend to start slower, but they also tend to keep games close. Four straight wins in the matchup is a data point, not a prediction, and the Wolfpack have historically played Virginia tight regardless of the records involved.

The public split is essentially neutral at 52 percent on NC State against 48 percent on Virginia, so there is no lopsided crowd to fade here. The more interesting move is on the total, which opened at 54.5 and now sits at 51.5. Money has come in on the Under while it has come in on the favorite, an unusual pairing that suggests the market expects Virginia to control the game rather than trade scores. For more of this weekend’s card, see our preview of North Carolina vs TCU in Dublin.

How the Brazil Relocation Reshaped This Opener

This game was supposed to be played in São Paulo. The ACC, NC State and Virginia announced in June that the international plan had collapsed and the opener would be relocated to Charlottesville roughly 12 weeks before kickoff. The change was administrative on paper. In handicapping terms it was significant.

A neutral site in Brazil would have stripped both teams of familiarity and added a long flight to the preparation for both sides. Instead, one team is at home and the other is making a routine conference road trip. That is worth points on the spread, and the market has priced most of that in already.

The scheduling quirk matters too. This is an ACC game in Week 0, so the loser starts conference play 0-1 before most of the league has played a snap. Last year’s meeting between these two was designated a non-conference game. This one counts in the standings. Both programs were picked outside the top of the ACC, which makes an early league result more valuable than the calendar date suggests. Our San Jose State vs USC odds breakdown covers another of Saturday’s early-window games.

NCAAF NC State vs. Virginia FAQ: Saturday August 29, 2026

What time does the NC State vs. Virginia game start?

Kickoff is set for 3:30 PM ET on Saturday, August 29, 2026. It is one of the first games of the 2026 college football season, played in Week 0 ahead of the sport’s traditional opening weekend. The matchup counts as an ACC conference game for both programs.

What channel is the NC State vs. Virginia game on?

The game airs on ESPN. The network carries the 3:30 PM ET window on Saturday, August 29, which places this matchup in front of a national audience with very little college football competition on the schedule. Fubo also carries the broadcast for viewers without a traditional cable package.

Where are NC State and Virginia playing?

The game is at Scott Stadium in Charlottesville, Virginia. It was originally scheduled for São Paulo, Brazil, but the ACC and both schools announced in June 2026 that the international game had been called off. Virginia’s campus stadium became the replacement site, giving the Cavaliers a home date.

Who won the last meeting between NC State and Virginia?

NC State won the last meeting 35-31 on September 6, 2025 in Raleigh. The result extended the Wolfpack’s winning streak in the series to four games. NC State also leads the all-time series and has not lost to Virginia in Charlottesville since the 2006 season.

Who is starting at quarterback for NC State and Virginia?

CJ Bailey starts for NC State and Beau Pribula starts for Virginia. Bailey is a third-year starter who threw for 3,105 yards in 2025. Pribula arrived as a graduate transfer from Missouri and is listed ahead of Eli Holstein on Virginia’s released depth chart for the opener.