2/17/26 Council Meeting
Development fees can now go down, too
The Chico City Council's main actions Tuesday were procedural but notable: members introduced an ordinance letting certain development fees go down as well as up when construction costs fall, and approved a one-time $5,000 pay bump for the city's Deputy Director of Human Resources and Risk Management. Both passed 7-0. Public comment focused heavily on downtown Chico's struggles, with one speaker warning "Downtown is dying," and council members responded by agendizing a future discussion on immediate downtown revitalization steps, along with separate future discussions on cannabis business regulations and a possible federal "opportunity zone" designation for downtown. The council also heard a presentation from the Arts Commission on its grant program and public art projects, and briefly discussed closed-session labor negotiations and ongoing litigation with no formal action taken.
What happened, item by item
City Attorney Ryan Jones reported that before the public meeting, the council discussed labor negotiations and existing litigation (Believe in Chico v. City of Chico) in closed session. In both cases, council was briefed and gave direction to staff, but took no formal, votable action.
Arts Commission Chair Bonnie Pipkin updated the council on the city's arts grant program, funded by 1% of the city's hotel tax ("TOT tax"). The commission awarded 10 grants totaling $42,112 in the prior cycle and, after a jump in applications, awarded 16 grants this cycle. Pipkin also highlighted the utility-box public art wrap program downtown and the commission's first fundraising gala. "The arts really just add so much value to our community, and we love to see the Council supporting that and continuing to support that," Pipkin said. No vote was required; this was an informational presentation.
The council approved, in one 7-0 vote, a routine package of items including: a resolution accepting disaster-recovery infrastructure grant funding, a resolution formally adding the Bell-Muir sewer lift station fee to the city's fee schedule, a budget modification for the current fiscal year, and minutes from the January 20 and February 3 meetings.
The council introduced an ordinance amending city code so certain development impact fees — covering transportation, storm drainage, parks, and building/equipment — can decrease, not just increase, when construction cost indices drop. A representative of the Chico Builders Association asked that the change also apply to fees tied to the Consumer Price Index, such as sewer and water fees, but staff said that would require a separate ordinance change. Councilmember Hawley, who brought the item forward, said, "I hope the addition of this language means the absence of it can no longer be used as a tool to argue in favor of lowering development impact fees well below what it takes to upkeep our infrastructure." The ordinance introduction passed 7-0.
The council approved a one-time $5,000 salary adjustment for the city's Deputy Director of Human Resources and Risk Management, recognizing her work resolving workers'-compensation and liability claims since being hired roughly eight months earlier. A public speaker objected, citing a newspaper report that her salary would rise from $135,000 to $140,000, calling it "unacceptable" for someone so new to the role. Councilmember O'Brien defended the raise, saying, "One of the first things I was taught when I became a manager is if you pay peanuts, you get monkeys." The adjustment passed 7-0.
“Downtown is dying. There's no denying that.”
Votes & roll calls
Present: Goldstein, Hawley, O'Brien, van Overbeek, Winslow, Bennett, Reynolds
Motion: Approve the Consent Agenda as read
Motion: Introduce ordinance amending Sections 3.85.320, 3.85.420, 3.85.520, and 3.85.620 of the Chico Municipal Code relating to annual adjustments of development impact fees by reading of title only
Motion: Approve a one-time salary adjustment of $5,000 for the Deputy Director of Human Resources and Risk Management
Motion: Agendize a discussion on regulations related to commercial cannabis operations
Motion: Agendize a discussion regarding revitalization of the Downtown area
Motion: Agendize a discussion on letting the PBID update the Council on their work and discuss opportunity zones for downtown
Notable moments
- A public commenter, identifying himself as Vic, raised traffic-safety concerns near Sheridan and Palmetto, asking for speed bumps, striping, and a red-light camera, saying "Somebody's going to get killed, I can guarantee you... I don't want it to happen, but thank you for your time."
- Cynthia Perrine of the Northern California Regional Land Trust announced a finalized 260-acre conservation agreement at Kitty Hawk Orchards in North Chico, funded through the state's cap-and-trade program.
- Resident Austin Barron listed several recently closed downtown businesses and urged the council to prioritize downtown revitalization, saying "Downtown is dying. There's no denying that."
- Councilmember van Overbeek recused himself from the closed-session discussion of the Believe in Chico litigation because he lives within 500 feet of the area involved.
- The council agendized (voted 7-0 to schedule) a future discussion on commercial cannabis business regulations, requested by Councilmember Hawley.
- The council agendized a future discussion on more immediate, short-term downtown revitalization measures, requested by Councilmember O'Brien.
- The council agendized a future discussion on the Property and Business Improvement District's (PBID) initiatives and a possible federal "opportunity zone" designation for downtown.
- A draft labor agreement with the United Public Employees of California (UPEC) was released for a two-week public review period ("sunshining"); a final version will come back to council on March 3, 2026.
- The next council meeting is scheduled for March 3, 2026, with closed session at 5:00 or 5:30 p.m. followed by the regular meeting at 6:00 p.m.
Every item as published on the official agenda. Timestamps play the moment that item came up. The recap tab covers what actually happened.
- 1.1. Call to order - Mayor Reynolds called the February 3, 2026 Adjourned Regular Council meeting to order at 6:02 p.m. in the Council Chamber, 421 Main Street, Chico, CA. staff report ↗
- 1.2. Invocation - Chaplain MaryAnn Hawkins
- 1.3. Pledge of Allegiance to the Flag
- 1.4. Roll Call
- 1.5. February 17, 2026, Closed Session Announcement - City Attorney Ryan Jones City Attorney Ryan Jones announced that Council met with staff on the Closed Session matters. 2.1 Labor Negotiations - Council was briefed and direction was provided; no formal action was taken. 2.2 Existing Litigation - Believe in Chico v. Chico - Council was briefed and direction was provided; no formal action was taken.
- 1.6. Arts Commission Presentation by Chair Bonnie Pipkin
- 2. CONSENT AGENDA
- 2.1. RESOLUTION NO 13-26 - RESOLUTION OF THE CITY COUNCIL OF THE CITY OF CHICO AUTHORIZING AND APPROVING EXECUTION OF A GRANT AGREEMENT TO RECEIVE AN ALLOCATION OF FUNDING FROM THE 2018 CDBG-DR INFRASTRUCTURE PROGRAM AND ANY FORTHCOMING AMENDMENTS, THERETO Adopted a resolution authorizing and approving execution of a grant agreement to receive an additional allocation of funding from the 2018 CDBG-DR infrastructure program and any forthcoming amendments. (Brendan Ottoboni, Director of Public Works - Engineering) staff report ↗
- 2.2. RESOLUTION NO 14-26 - RESOLUTION OF THE CITY COUNCIL OF THE CITY OF CHICO AMENDING THE CITY'S FEE SCHEDULE (AMENDMENT NO. 358 - FEE SCHEDULE: 50.060) At its 02/03/2026 meeting, City Council considered and approved the establishment of the Bell-Muir Sewer Lift Station benefitting area and capacity fee. The City Council was asked to consider incorporating this fee in the City's Fee Schedule. (Heather Childs, Accounting Manager) staff report ↗ staff report ↗
- 2.3. CONSIDERATION OF APPROVAL OF SUPPLEMENTAL APPROPRIATION/BUDGET MODIFICATION NO. 2026-ASD-003 The Administrative Services Director requested consideration and approval of a Supplemental Appropriation/Budget Modification to the FY 2025-26 Budget. (Barbara Martin, Administrative Services Director) staff report ↗
- 2.4. APPROVAL OF COUNCIL MEETING MINUTES OF 1/20/26 AND 2/3/26 staff report ↗ staff report ↗
- 2.5. ITEMS REMOVED FROM THE CONSENT AGENDA - None
- 3. PUBLIC COMMENTS - Members of the public addressed the Council at this time on matters not already listed on the agenda and within the jurisdiction's authority. The Council was prohibited from taking any action at this meeting on requests made under this section of the agenda.
- 4. PUBLIC HEARINGS - None
- 5. REGULAR AGENDA
- 5.1. INTRODUCTION OF AN ORDINANCE AMENDING SECTIONS 3.85.20, 3.85.420, 3.85.520, AND 3.85.620 OF THE CHICO MUNICIPAL CODE Introduction of an ordinance amending Sections 3.85.320, 3.85.420, 3.85.520, and 3.85.620 of the Chico Municipal Code allowing for both increases and decreases to development impact fees based on changes in applicable construction cost indices. (Report - Barbara Martin, Administrative Services Director) Recommendation : The Administrative Services Director recommends the Council introduce the following ordinance by reading of title only: AN ORDINANCE OF THE CITY COUNCIL OF THE CITY OF CHICO AMENDING SECTIONS 3.85.320, 3.85.420, 3.85.520, AND 3.85.620 OF THE CHICO MUNICIPAL CODE RELATING TO ANNUAL ADJUSTMENTS OF DEVELOPMENT IMPACT FEES TO ALLOW FOR FEE DECREASES WHEN APPLICABLE CONSTRUCTION COST INDICES DECLINE staff report ↗
- 5.2. ONE-TIME SALARY ADJUSTMENT - DEPUTY DIRECTOR OF HUMAN RESOURCES AND RISK MANAGEMENT Consideration of a one-time salary adjustment in the amount of $5,000 for the Deputy Director of Human Resources and Risk Management in recognition of the value, expertise, and contributions she has provided to the department and the City. (Report - Barbara Martin, Administrative Services Director) Recommendation : The Administrative Services Director recommends the City Council approve a one-time salary adjustment of $5,000 for the Deputy Director of Human Resources and Risk Management staff report ↗
- 5.3. ITEMS ADDED AFTER THE POSTING OF THE AGENDA - None
- 6. REPORTS AND COMMUNICATIONS - The following reports and communication items were provided for the Council's information. No action could be taken on items under this section unless the Council agreed to include it on a subsequent agenda.
- 6.1. CITY MANAGER'S REPORT - Verbal Report, City Manager Sorensen
- 6.2. SUNSHINING OF DRAFT MOU - UNITED PUBLIC EMPLOYEES OF CALIFORNIA (UPEC) - Information only Pursuant to the "Sunshine and Transparency" requirements of the negotiation process, the City Council is provided a draft copy of the Memorandum of Understanding applicable to the UPEC bargaining group. This initiates the two week "sunshining" period for City Council and community members to review the draft document. A final presentation will be brought forward to City Council for consideration at its meeting on March 3, 2026. (Barbara Martin, Administrative Services Director) staff report ↗
- 6.3. COUNCILMEMBER REQUESTS - Pursuant to AP&P 10-10, Councilmembers may verbally request an item to be agendized at a future meeting. After stating what the item would be, a majority vote of Council is needed in order for staff to agendize.
- 7. ADJOURNMENT - The meeting adjourned at 6:42 p.m. to the Closed Session Meeting on Tuesday, March 3, 2026, at 5:00 p.m., or 5:30 p.m. followed by the Regular City Council meeting at 6:00 p.m. in the Council Chamber, 421 Main Street, Chico. staff report ↗
- 1. Call to Order - Mayor Reynolds called the Closed Session meeting of February 17, 2026 to order at 5:30 p.m. in the Council Chamber located at 421 Main Street, Chico, CA.
- 1.1. ROLL CALL - It was noted for the record that Councilmember Goldstein arrived after roll call at 5:30 p.m. However, all Councilmembers were present when recessing to Conference Room 1.
- 2. CLOSED SESSION AGENDA - There were no speakers. Councilmember van Overbeek announced he was disqualified from participating in the discussion related to Item 2.2. Believe in Chico, LLC., due to living within 500 ft. of the area being discussed. He was not present when that matter was discussed.
- 2.1. CONFERENCE WITH LABOR NEGOTIATOR: Pursuant to Cal. Gov. Code Sec. 54957.6 - Council was briefed, direction was provided; no formal action was taken. Negotiator: Laura Izon (Atkinson, Andelson, Loya, Ruud and Romo law firm (AALRR)) & Barbara Martin, Administrative Services Director Employee Organizations: Chico Fire Management Employees, Chico Management Employees, Chico Police Management, Chico Police Officers Association, Chico Public Safety Association, Confidentials, International Association of Fire Fighters, Service Employees International Union - Trades & Crafts, Stationary Engineers Local 39, United Public Employees of California - Local 792
- 2.2. CONFERENCE WITH LEGAL COUNSEL - EXISTING LITIGATION: Pursuant to Cal. Gov. Code Sec. 54956.9(a): BCSC: Case No. 25CV01135 – Believe in Chico v. City of Chico - Council was briefed, direction was provided; no formal action was taken.
- 2.3. CLOSED SESSION ITEMS THAT AROSE AFTER THE POSTING OF THE AGENDA - None
- 3. ADJOURNMENT - Adjourned at 6:00 p.m. to the Adjourned Regular City Council Meeting on February 17, 2026.
Machine transcript (local Whisper transcription), lightly cleaned — expect imperfections. Timestamps play that moment right here; the official video is one click away too.
Mayor guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten Thank you.
Thank you. Thank you. All right. We're going to call to order our regular city council meeting. We'll start with our invocation by Eileen Brownwell. Welcome. Thank you, Mayor. Let us pray. Divine and great spirit, we unite this evening in oneness and pause at the beginning of this meeting to acknowledge the responsibility entrusted to our leaders and to the community of Chico. From many traditions and backgrounds, we gather with shared hopes for wisdom, justice, and peace. We know our council members have clarity of mind, integrity of heart, and courage in their decisions. They listen with openness, speak with respect, and act with fairness for the goodness of all, especially the most vulnerable among us.
Chico is a place where neighbors care for one another. Differences are met with understanding, and common good guides every action. We know the work begun tonight is blessed, and for this and the strength of Chico, we give thanks as it reflects the highest values to be at one with the divine that lives within all. I return this to the universe knowing it is already done, and so it is. Amen. And thank you for coming at the last minute there. Can we please rise for the Pledge of Allegiance? Salute. And pledge.
We'll call. Madam Clark, can you call the roll, please? Okay. Council Member Goldstein? Present. Council Member Hawley? Here. Council Member O'Brien? Here. Council Member van Overbeek? Here. Council Member Winslow? I'm here. Vice Mayor Bennett? Here. Mayor Reynolds? Here. Speaker card announcement. Anyone wishing to address the council on matters listed on the agenda should first complete a speaker card found at the back of the chamber. Once completed, turn your cards into the city clerk, and speakers are taken in the order the cards are received. Once the first speaker begins, no additional cards will be accepted on that item. Purchase demonstrating rude, boisterous, speaking on matters outside of the jurisdiction of the city council, or engaging in otherwise disruptive behavior will be called to order.
If such conduct continues, I may call a recess. Request removal of such persons from the council, adjourn the meeting, or take other action as needed. For our closed session announcement, we have our city attorney, Ryan Jones. Yes. Thank you, Mayor and Council Members. There are two items in closed session that were discussed. The first was a conference with labor negotiators, and direction was given to staff on that. And then the second conference with legal counsel on existing litigation, I believe in Chico versus City of Chico matter, and also discussion and direction to council was given on both items. That's my report. All right. Thank you very much. Consent agenda. All matters listed under the consent agenda are considered routine in nature and can therefore be enacted in one motion.
Do we have any no votes? Anything to be remade? Mayor Reynolds, we have one presentation before consent. Oh, did I skip? I was wondering why our lovely art commissioners are here. So, sorry. Let's go back. We have a presentation by our Arts Commission Board Chair, Bonnie Pipkin. Can you please come forward? Sorry. I even saw you sitting there and everything. That's okay. You know, I actually looked at the agenda and didn't see myself either. So, okay. So, we're going to start with a video that Dustin put together. The sound didn't come through in the email, so... So, guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten guten I know, just imagine upbeat, lively, artsy music along with this.
We could sing.
There's Councilmember Winslow. Thank you. So I'll just point out a few of those highlights. First, I just want to say thank you to Council for continuing to allocate the 1% of the TOT tax for the City Arts Grant Program. It's something that I am personally very proud to be a part of, the decision-making process, and supporting our arts Organizations in Chico. You saw the report on the 24-25 cycle, which has been completed, and we've gotten the final reports. And we did fund 10 grants with the $42,112. This year, or for the 25-26 cycle, we had what felt like a record amount of applications. I feel like people are waking up post-COVID and seeking funding for their amazing projects. So we were able to grant 16 grants, and we'll report on that next year.
So just thank you. The arts really just add so much value to our community, and we love to see the Council supporting that and continuing to support that. So another thing that we implemented was the Power Up Art Utility Box Wrap Program. It's just so amazing to see the utility boxes vibrant in downtown. I was in Sacramento last weekend and saw their utility box projects, and again, just felt proud that we were able to do the similar kind of thing with being creative with the budget there. And then, of course, you saw some pictures from our gala. We boldly called it our first annual, so it's really kind of kicking off our fundraising efforts for public-facing arts projects in Chico. And Council Member Goldstein was there, Council Member Winslow, and of course, Mayor Reynolds presented the Achievement in Arts Awards.
Normally, we present that here at Council, but it was fun to do it in that setting, I thought. So thank you, Mayor Reynolds, for coming to do that. We got to award Monica McDaniel with the Outstanding Patron, Dana Moore with the Outstanding Arts Organization Leader, and the Butte Youth Orchestra with Outstanding Arts Organization. We raised just over $2,000, which we felt like was a good start for the first year. And hope to do it every year. And then coming up, we're going to continue that fundraising effort with an auction of the COBA Board Arts. So we're just going to continue to try to raise money for the arts in Chico, and we thank you for your support of us and arts in the community. Does anybody else have any questions?
Council Member Banner? Great job on the utility boxes downtown. Oh, yeah. They really look good. Yeah, there are still some available. So, you know, there's sponsorship opportunities. So, yeah. Thank you. Can I have a quick question for you? Oh, yes, please. Your gala was wonderful. It was super fun. I was bummed I didn't win any of the raffle prizes. So, you did 10 items last year for the $42,000. You said you had 16 applicants this year? This year, we had 19, and we awarded 16. 16. Yes. We weren't able to award anyone for their full ask. We kind of spread it across the 16 applications that we felt were worthy. And it's the funds that you're raising at the gala and the COBA boards and all that, is that going into the pot of funds, or are you doing a specific project with those funds?
We don't have a specific project yet. The idea is to have commission-led arts, public-facing arts projects. Oh, for sure. Yeah, that we would run by you first. Okay. Yeah. Cool. That was all. Thank you. Anything else? Any other questions? No. Okay. All right. Thank you so much. Thank you. Thanks for bringing us the information. All right. Now, under consent agenda, do we have any no votes, items to be removed, or council disqualifications? No. Do we have any speakers for consent? We do not. Or for consent? No? All right. Consider a motion. All moved to approve. Second. Motion and a second. Council Member Goldstein? Aye. Council Member Hawley? Yes. Council Member O'Brien? Yes. Council Member van Overbeek?
Yes. Council Member Winslow? Yes. Vice Mayor Bennett? Yes. Mayor Reynolds? Aye. Motion carries 7-0. Okay. Member, public comment, members of the public, may address the council at this time on any matter that is not already listed on the agenda and are within the jurisdictional authority. The council cannot take any action at this meeting on these requests under this item under the agenda. How many speakers do we have? We have three. All right. Three minutes each. Okay. I'll call the first two names, and if you could go ahead and line up in the middle aisle. Vic will be our first speaker, followed by Cynthia Perrin. Okay. Thank you. Hello again. My name is Vic. It's been several months since I've been to my last city council meeting, so good to see everybody again.
On Monday morning, I was doing some grocery shopping, and I went to get an enterprise record, and I saw a couple friends and other people talking, and they were very frustrated. And on the front page, Council to Review Union Contract. The council will vote on a proposal of $5,000 raise for Deputy Director of Human Resources and Risk Management, Keanu Gray, including salary and benefits. This increase would cost the city $7,000, bringing Gray's annual salary from $135,000 to $140,000. Gray was hired eight months ago. This is unacceptable, folks. I know people who work their whole entire lives. Well, this is an agenda item, isn't it? Yeah. Pardon? This is an agenda item. This is an agenda item, and so if he's addressing it under the Brown Act, he should be addressing it.
But I'm just indicating how people that we were, they were talking about it to my attention, and they said, this is frustrating. Okay, but it's an agenda item that's on later, so if you want to talk on the $5,000 for her raise, then you need to do it under that item. I'm sorry. I need to do what I'm saying. I apologize. That's 5.2. Okay. So, Cynthia, you're next. Go ahead. Followed by Austin Barron. Yeah. Okay. Okay. So, he has other comments that are not related to the item that's already agenda. Okay, great. Sorry. I just want to make sure we're following our rules. Okay. Go ahead, Vic. I walk my doctor dog on different routes every single day, and I know I've brought this to your attention several different times.
And we need to have some speed bumps. We need to have white stripes going down the street specifically from First Avenue all the way to Palmetto on Sheridan, and then across the street on Sheridan, we need to have white stripes and speed bumps also. I've talked to numerous neighbors. They are very frustrated how people are continuously speeding. Once again, I'm hoping that we can get some red light cameras. Folks, this is frustrating. Safety should be our number one concern in this community, and it's not happening. And I brought this to your attention several times. So, I'm hoping we can get some red light cameras also over in that neighborhood specifically. People are running. There's going to be accidents.
Somebody's going to get killed, I can guarantee you. I'm not trying to say guarantee this. I don't want it to happen, but thank you for your time. I'm learning every single time I'm here. That's okay. Thank you. Vic, just real quick. You're often talking about Sheridan, but what intersection are you talking about for a red light camera? I'm sorry. Which intersection are you talking about for a red light camera? Oh, the intersection? Okay. On Palmetto, when people are coming down Palmetto going towards Mangrove, they're not stopping Palmetto and Mangrove. And they are speeding. Like, you have no, I've talked to so many residents and they are just said, this is frustrating. Nothing is getting done.
Thank you. Thank you, Vic. I'm trying to be an advocate here. Thank you. Okay. Cynthia, I apologize for the confusion. Go ahead. And then Austin Barron. Hello, Madam Mayor and Council Members. Cynthia Perrine with the Northern California Regional Land Trust. And the Land Trust is excited to announce the finalization of a conservation agreement with the owners of Kitty Hawk Orchards in North Chico. With assurance for perpetual agricultural-based stewardship and co-benefits to biodiversity, water, and stormwater Management, and open space, the Land Trust and property owners are eager to partner in our roles to sustain Chico as an agriculturally productive community. With 260 acres and a provision for enhanced flood retention and green infrastructure projects, we'll look forward to addressing current and future challenges in the months and years ahead.
I have to read the funding part. Give me a minute. The Sustainable Agricultural Lands Conservation Program utilizes funding through the California's cap-and-trade system to protect critical agricultural lands that are at risk of conversion to more energy-intensive uses. Protecting these lands promotes smart growth within existing jurisdictions, ensures open space remains available, supports agricultural and tribal food systems, promotes biodiversity and soils health, and helps sequester climate change-causing emissions. Salk addresses climate change by protecting productive farmlands and encouraging compact, transit-oriented communities. Salk addresses climate change by protecting the land trust.
And the land trust would like to thank the regional support of this community for the assistance in establishing this milestone. Thank you. Thank you. Our last speaker is Austin Barron.
Good afternoon, Council. Mayor Reynolds, happy birthday. My name is Austin Barron. I don't know if I speak during public comments, but I felt this week I ought to. It seems like every week I hear of another downtown Chico business that is closing. Panama Bar, University Bar, The Beach, Woodsy Sunglasses, Collier Hardware, Tomfoolery. I could go on, but I feel like this is a pretty long list. Each of these businesses, for various reasons, has closed in the last 12 months. Downtown is dying. There's no denying that. As elected officials, I urge you to make revitalization of downtown a top priority. This is the very heart and soul of Chico. What are we to do? We could start with supporting our small businesses, incentivizing and helping along new businesses to open, incentivizing and educating local landlords on helping these small businesses open.
We could incentivize landlords themselves to keep their buildings up and keep them in show-ready conditions. So if a small business does decide to go downtown, it actually looks like they want to lease that building. It's not falling apart. In any matter, this needs to be a top priority of the council, and I urge you to make it such. Thank you. Thank you. That was it. All right. Make sure I don't skip anything. No public hearings tonight. Item 5.1, introduction of an ordinance amending section of the municipal code. Barbara Martin. Thank you. Good evening, Mayor Reynolds, Vice Mayor Bennett, and members of council. This first item before you tonight is an introduction of an ordinance that adjusts the language in section 3.85 of the Chico Municipal Code.
Back when, last spring, when we brought forward the fee schedule updates, there was some discussion about the inability to reduce fees based on construction cost index and highway construction cost index decreases. The language only provides for the ability to adjust it when there are increases. That item was referred back to Finance Committee, and they spoke about it in September and recommended to council that they direct staff to change the ordinance so that we can make those adjustments when the fees decrease. That was approved by council in October, and so before you tonight is the ordinance that makes that adjustment for those specific fees that were discussed at that time. So I'm happy to take any questions.
Go ahead, but you put it in the feed. Oh, sorry. Ms. Martin, so are the sewer fees included in this provision? The, it's specifically the, those that are adjusted by the construction cost index and the highway construction cost index. So the four fees were for, the four types were transportation facility fees, storm drainage facility fees, park facility fees, and building and equipment fees. Oh, so the sewer's not in there? No, those are adjusted by CPI. So each year, I just want to be clear on this. Each year, during the cycle, the process, these, these increases and or decreases would be brought to the Finance Committee for further review, discussion, and possible action. Is that correct? So we'll be able to take, I've been on it for four years, we'll be able to take a look at it at that time and possibly make another decision to take care of whatever needs to be taken care of.
So I just want to make sure that's the case. Yes, absolutely. Whatever the council directs, we will take care of. Now, I'm not assuming that I'm going to be on it forever, but I have been on it for a while and we discuss this quite a bit. Yes, we do. We bring, we bring the fee schedule to the Finance Committee first in the spring, and then it's brought forward to the council for full discussion as a hearing. Thank you. Mm-hmm. All right. Do we have any speakers? Yes, we have one. All right. Katie Toma.
Good evening. Mayor, Vice Mayor, Council Members, my name is Katie Toma, and I'm the Executive Director of the Chico Builders Association. And we'd first off like to thank Council Member Katie Hawley for bringing this forward. We had a conversation with her and explained some of our frustration over the years about the indexes, the indices. So tonight, or actually earlier, we started looking at the ordinance and we took a closer look at it. And we noticed that the ordinance does not include fees subject to the Consumer Price Index or CPI, such as sewer fees, trunk line capacity fees, water control plant fees, and lift station fees. We're requesting that all development impact fees subject to CPI, the Highway Cost Index or HCI, the Construction Cost Index or CCI, be included in the ordinance to ensure consistency and clarity.
Thank you for your time. Thank you. That was it for speakers. Council Member Winslow? Appreciate the comments. And I think that this totally makes sense that if costs go down, then we would follow that and wouldn't just have like our own sticky prices when we have the capability of adjusting it. As far as the CPI, I don't think that there's been any downward movement in the CPI since probably the metric exists. But I think the Great Depression was the last time we had deflation. Yeah, I don't know how much of a hassle it would be to include that. So maybe it wouldn't be entirely opposed. Otherwise, I'd say that this is a good little thing we can do. And I'd support the ordinance. Council Member van Overbeek?
So it was my understanding when we did this and that it was going to include all the fees and not just and I'll defer to Ms. Hawley because this was your item you brought forward. That's not my recollection. My recollection is that it only applies to the fees that use this specific metric. Is that correct? Yes. Yeah, I'd like it to apply to all fees. So are you talking impact fees or you mean all? Impact. Okay. I would say that's probably an item best agendas at the end of the council meeting because that doesn't pertain to me. If I could make one comment. So impact fees do require a little special processes for being increased. So we could certainly do that. That's the direction of the council.
But it's not as simple as these kind of fees to change impact fees. Council Member Hawley? My only comment was just that I hope the addition of this language means the absence of it can no longer be used as a tool to argue in favor of lowering development impact fees well below what it takes to upkeep our infrastructure. That's all. Council Member McGulky? Yeah, I'm supportive of this. I'm open to further discussion on how we could do the same for the other fees, but I was wondering if staff had input on how feasible that would be, if it would be a lot of administrative work for something that may never happen. And I appreciate our attorney giving input on that, but I wanted to open it up to if any of the other staff had opinions on that.
It would require another ordinance change because it's all outlined in the Muni code. Okay. The same process. So for now, it seems like the best idea would be to approve this. And then if there was direction to add to that, it might need to be another vote. Okay. Thanks. All right. Yeah. I'll make a motion to approve the ordinance of the city council of the city of Chico amending sections 3.85.320, 3.84.420, 3.85.520, and 3.85.60 of this Chico Municipal Code related to annual adjustments of development impact fees to allow for fee decreases when applicable construction cost indices decline. I'll second the motion. All right. We've got a motion in a second. Okay. Council Member Goldstein? Yes.
Council Member Hawley? Yes. Council Member O'Brien? Yes. Council Member van Overbeek? Yes. Council Member Winslow? Yes. Vice Mayor Bennett? Yes. Mayor Reynolds? Aye. Carry 7-0. All right. So if we want to address those other things that we would need to agendize that for a future meeting. Okay. Thank you. Somebody would have to read that ordinance again with all those titles. Maybe more. We can handle it. We can do it. Item 5.2, one-time salary adjustment. Director of Human Resources, Administrative Services Director Barbara Martin. Thank you again. This item before you tonight is a request to recognize our Deputy Director of Human Resources, Risk Management, and the accomplishments she's made over the short time that she's been here.
Ms. Gray has been a tremendous asset to our city team. She has developed incredible relationships with all of the department directors and all of the departments in general. She has righted the ship of the HR division. She has righted the ship of the HR division in a very short amount of time. Her ability in the workers' compensation and general liabilities areas to close claims, get claims moving, will ultimately result in hundreds of thousands of dollars of savings to the city, getting those administered, getting employees back to work, getting claims settled. So this is just in recognition of that. Honestly, if we had known her abilities and what she, her drive at the time that she was hired, she would have been hired at this higher rate at the time.
It doesn't change anything in terms of the ultimate scale of her position or her ability to get merit increases in the future. It's just a one-time adjustment in recognition. So with that, I'll take any questions. Any questions? Do we have any speakers? We have one speaker. Yes. Yes. So Vic, you can speak on this item now. Sorry. Councilmember Goldstein. Sorry, I wasn't pressing the button fast enough. Yep. Yeah. So my question was just, have we done this for other positions in the past? Is there precedent for, because I'm not used to city council voting on people's pay in this sense. Usually we negotiate in closed session. So just understanding. Yeah. Yeah. And the directors and deputy directors are in separate contracts.
So it's a little bit different. So everything's outlined in their individual contracts. And we have even with unions, those people that are get different step advancement because of their accomplishments or because of, you know, their ability to go out in the market and get a different position or that kind of thing. So it has happened in the past in that way. Okay. Thank you. Appreciate it. All right, Vic. Now's your turn. Go ahead. Yes. Okay. Thank you. On Monday morning, I was doing some grocery shopping. And I always like to get an enterprise record. I like newspaper in my hand and not have to read it online. And there were several people that I knew and they were talking and they were kind of frustrated.
Go, what's going on? They go, you got a newspaper, right? There it is on the front page. And so on the front page that was brought to my attention, the council will also vote on a proposed $5,000 raise for Deputy Director of Human Resources and Risk Management, Tiana Gray, including salary and benefits. This increase would cost the city $7,000, bringing Gray's annual salary from $135,000 to $140,000. Gray was hired eight months ago, 2025. We were all talking. It was kind of very frustrating. This to us is unacceptable, folks. That type of salary for a person who's only been here doing it for 10 months, regardless of the job that this individual has been doing. I mean, it's just unacceptable.
And we could not believe it. And they brought it to my attention. I said, let's go to city council. They go, I can't. I got to watch my child. I got to sign. I'm going. So just bringing it to your attention. And I thank you for your time. Thank you. Council Member Winslow. Vic, I always really appreciate you coming and speaking all. And I think it's worth addressing that because I'm sympathetic with the understanding that you come out just seeing that we're just given this what might seem like an arbitrary pay raise. And because it's a deputy director position, so we actually discussed it here, which is different from the majority of employees. But you said, like, you know, irrespective of, like, performance.
But it's quite the opposite of what I'm hearing. We do rely on staff's input a lot for making a decision like this, determining who deserves what kind of pay. But the city is just like, in a lot of ways, like businesses, needs to be a dynamic institution. And it's important that we have good people that are working in these positions. I don't know if you've ever dealt with the workers' comp thing. There's a lot of paperwork and a lot of complicated things. And making sure that we have people that are able to handle that well is critical. Because not having that in those positions, sometimes things fall through the cracks. Everybody makes mistakes sometimes. Some people make more mistakes more of the time.
And we do our best. And so I think this makes sense in this case. You know, when you see a salary range in something, like, as is mentioned, I think that it would have been different just understanding more, having a more intensive interview process. So I think it's justified. Council Member O'Brien. Thank you, Mayor. And I, too, would normally prefer to wait during the normal process for something like this to happen. But the Deputy Director of Human Resources and Risk Management, County Graves, has done a fantastic job. I appreciate all our hard work. I think we all do. And I do want to point out that Barbara Martin, our Administrative Services Director, our City Manager, Mark Sorensen, neither of those two individuals in the, I don't know how many years I've known you, to be reckless with our finances.
In fact, they're very cautious, very careful. Obviously, they both approve of this and recommended this to us. And that's enough for me. That's my honor for you. One of the first things I was taught when I became a manager is if you pay peanuts, you get monkeys. So we have an excellent city staff, and Ms. Cray is a terrific addition, and I wholeheartedly support this. All right. I'll just finally say that I know for a fact that Ms. Tiana has closed out some cases that have been going on forever. I know that she's saved us thousands of dollars, and the reorganization of that office over there has been great. So I will definitely be supporting this. And Council Member Goldstein. Sorry, I'm struggling with the button today.
I thought I already had it. Yeah, I just want to point out that this is already budgeted for usually when a position is hired for, there's a pay range. And we can start people lower or higher on that based on their experience. But usually, you know, that's within an amount that's already budgeted for. So this won't negatively impact our budget. And although $5,000 or $7,000 sounds like a lot, you know, if we hire the wrong person, like Council Member van Overbeek was alluding to, then we can end up paying more in the long run. So it's good to retain our hardworking employees. So I'll be voting yes on this. Motion? I'll make a motion to approve. Second. Second. Council Member Goldstein. Yes. Council Member Hawley.
Yes. Council Member O'Brien. Yes. Council Member van Overbeek. Yes. Council Member Winslow. Yes. Vice Mayor Bennett. Yes. Mayor Reynolds. Aye. Carries 7-0. All right. Reports. We have nothing after the agenda. Reports and communications. City manager report. No? All right. We have the draft MOU. On that one, or is it just? It's just report and communications. Okay. Just want to make sure. Just sunshining. Just sunshining. Okay. Council Member request pursuant to APMP 1010. Council Members may verbally request an item to be agendized at a future meeting after stating what the item would be, and a majority of the Council vote is needed in order for staff to agendize. Do you have any Council Member requests?
I do, but does anybody else? Council Member Hawley. Thank you, Mayor Reynolds. I'd like to agendize a discussion regarding the City's regulations related to commercial cannabis operations, and if it would be a deal breaker, I'm happy to list a few of the items that might be discussed. I think in general we can, yeah. I'll second that. So for clarification, you would like to hear a couple items? No, I'm thinking we'd just leave it open-ended. I think we all got an email and we're either discussing it or we're not discussing it. So we got a motion and a second. So who was, I got, I have the motion made by Council Member Hawley, and then who seconded it? Okay, thank you. Yes, you might wanna get a little closer to your mics.
All right, so. And can you repeat the motion just so everybody should clear on what they're. Agenda is a discussion regarding the regulations related to commercial cannabis. And I know you said you had added a few extra words, but I didn't get that. Operations. And operations, okay. Thank you. All right, Council Member Goldstein? Yes. Council Member Hawley? Yes. Council Member O'Brien? I will have a discussion, but I will tell you, I'm going to be a hard case on this one. I don't like the expansion of this, but I will have a conversation for the sake of conversation, yes. Council Member van Overbeek? Yes. Council Member Winslow? Yes. Vice Mayor Bennett? I will listen to it, yes. Mayor Reynolds?
Aye. Aye. Carry 7-0. Council Member O'Brien? Yeah, I do have a request. So, Austin Barron is right. Our downtown is dying. I know we're having long-term discussions, which is great. You know, we're trying to cast a vision for what downtown can be. But I think we're at a crisis point, and we need to look at more immediate action for the short term, so I would like to have Council Agendize a discussion with a more comprehensive look at more immediate downtown measures that we might be able to enact. I have a thought what that might look like, but I'll save those thoughts for an agendized discussion. I'll second that. All right. That was a motion and a second to agendize a discussion regarding the revitalization of the downtown area.
Council Member Goldstein? Yes. Council Member Hawley? Yes. Council Member O'Brien? Yes. Council Member van Overbeek? Yes. Council Member Winslow? Yes. Vice Mayor Bennett? Yes. Mayor Reynolds? Absolutely. Carry 7-0. All right. I have one that is along the line of what we just talked about, but this one is actually specifically for PBID. And PBID has a six to seven item initiative that they are working on right now. It's not completely finalized, but they're working through it. But one of them is looking at the opportunity zone and the 2.0 designation that will be something that would need to be applied for that's going to take longer than an hour for staff to do. So I want to agendize a conversation to let one, to let PBID have them let us know what they're working on and doing because it goes along with these efforts and to talk about the opportunity zone and what that might look like for downtown.
Okay. I'll second that as well. Can we get a quick clarification on the opportunity zone concept just to know what we're voting on? I just know that there's a bunch of money coming to federal that goes to the state that the state gets to determine there's 3,000 cities in the state that will be, could potentially apply for it. It's only going to go to about 600 or 800 cities. And I just think we want to be ready for it and be able to find out more what it means and what the opportunity zone could help our downtown to be. Great. So I just want us to be able to learn about it and see if it's something that we want a direct staff to follow up on and do. Okay. Thanks. All right. Council Member Goldstein.
Yes. Council Member Hawley. Yes. Council Member O'Brien. Yes. Council Member van Overbeek. Yes. Council Member Winslow. Yes. Vice Mayor Bennett. Yes. Mayor Reynolds. Aye. Carry 7-0. Any others? No. All right. And we will adjourn to Tuesday, March 3rd at 4 or 4.30 and then followed by our regular council meeting at 6 o'clock back here. Thank you.
Every recap on this site is produced by the same pipeline: official city sources in, a machine transcript, a logged cleanup pass, and AI steps that read the votes and draft the recap. This page shows exactly what each step did for this meeting — including the full instructions we give the AI — so you can judge the process, not just trust the output. (For the pipeline in general, see How it's made.)
The weakest link is turning the meeting's audio into text. Council chambers have distant microphones, cross-talk, and names the transcription model has never heard — so names, dollar figures, and mumbled stretches are where errors creep in. Everything downstream inherits those errors, which is why the later steps exist mostly to catch them: a name-correction pass with a public log (step 3), instructions that tell the AI to omit or flag anything shaky (step 4), and a cross-check of every vote against the clerk's record (step 5). If you spot something wrong, tell us.
- 1
Start from the official record
We pull the agenda and the full meeting video straight from the city's own publishing system (Granicus) — fetched July 10, 2026. Along with the city's published member roster (step 3) and the clerk's official minutes once posted (step 5), these are the recap's only sources — all of them city records, and you can check the two main ones yourself:
- 2
Turn the audio into text
Biggest source of errorsWe transcribe the meeting audio locally with an open-source speech-recognition model (
whisper-large-v3-turbo), producing 784 timestamped segments. Machine transcription mishears things — especially proper names and numbers — and it doesn't know who is speaking.The one hint we give the transcriber
Before transcribing, the model is shown this sentence (built from the official member roster) so it's more likely to spell names right. It biases spelling only — it can't add words that weren't spoken — and because that bias is silent, step 3 double-checks every name anyway.
2/17/26 Council Meeting, City of Chico, California. Present: Mayor Kasey Reynolds, Vice Mayor Dale Bennett, Councilmember Bryce Goldstein, Councilmember Katie Hawley, Councilmember Mike O'Brien, Councilmember Tom van Overbeek, Councilmember Addison Winslow, Incoming City Manager Gillian Haen, City Attorney Ryan Jones City Attorney Ryan Jones, Director Brendan Ottoboni, Accounting Manager Heather Childs, Administrative Services Director Barbara Martin, City Manager Verbal Report, Chico Police Officer Chico Police Management, Administrative Services Director Employee Organizations.
- 3
Clean up the transcript — with receipts
A rule-based pass (no AI) merges the raw segments into readable paragraphs and checks name-like words against the official member roster. It only corrects a name when the context makes the match near-certain — after a title like “Councilmember” or an exact first name — and every correction is logged below. Anything it can't confirm is flagged for a human instead of silently guessed.
All 9 name corrections made in this meeting
Transcript said Corrected to Times Van Overbeck van Overbeek 9 9 name spellings we could not confirm
These looked like member names but didn't clear our confidence bar, so they were left as heard and passed to the next step as “treat with suspicion.”
- “organization” (closest roster match: Organizations, heard 2× — listen at 9:59)
- “child” (closest roster match: Childs, heard 1× — listen at 32:07)
- “reorganization” (closest roster match: Organizations, heard 1× — listen at 34:12)
- “bonnie” (closest roster match: Bennett, heard 1× — listen at 5:28)
- “banner” (closest roster match: Bennett, heard 1× — listen at 10:55)
- “guten” (closest roster match: Goldstein, heard 1× — listen at 0:00)
- “vice mayor” (closest roster match: Katie Hawley, heard 1× — listen at 23:33)
- “request” (closest roster match: Bennett, heard 1× — listen at 36:03)
- “requests” (closest roster match: Bennett, heard 1× — listen at 36:03)
- 4
Draft the recap with AI
The cleaned transcript, the official agenda, and the list of unconfirmed names go to a language model (
claude-sonnet-5) , run July 10, 2026. The instructions below are the complete, verbatim prompt — nothing is hidden. Note what it demands: accuracy over completeness, no editorializing, omit shaky details rather than guess, and mark anything it can't verify — those become the dotted-underline flags you see in the recap.Read the full recap prompt
The {{PLACEHOLDER}} markers are where this meeting's title, date, agenda, transcript, and unconfirmed-name list are inserted.
You are writing a plain-language recap of a Chico, California city council meeting for residents who don't usually follow local government. Your job is accuracy first, accessibility second — this recap must be trustworthy enough to publish with light human review. You are given three sources: 1. The official meeting agenda (structured, reliable). 2. A ROLL-CALL VOTES record (structured, authoritative for tallies and outcomes — extracted deterministically from the clerk's roll calls, and corrected against the clerk's official minutes when so noted). 3. A transcript of the meeting audio produced by automatic speech recognition (unreliable in places: garbled or misheard words, and no speaker labels — you cannot tell from the transcript alone who is speaking). Rules: - Only report things supported by the sources. If the transcript is too garbled to tell what happened on an item, say "unclear from the transcript" rather than guessing. - Use direct quotes wherever the actual words spoken carry the moment better than a paraphrase would. This is especially true for ceremonial items — honors, farewells, proclamations, tributes — where what was said IS the story, and for pointed disagreements or a member explaining their vote. Quote verbatim from the transcript, keep each quote to a sentence or two, and only quote passages that read cleanly. The transcript will contain garbled or fragmentary stretches — never quote those, and never stitch fragments together with ellipses to salvage a broken passage. Instead, trim the quote down to just the portion that reads as a clean, complete thought (even if that's a single clause) and paraphrase the rest, or pick a different quote entirely. Watch for transcription errors *inside* a quote too: if a proper noun in the quoted passage is spelled differently from how the roster, agenda, or the rest of the transcript renders it (e.g. a hospital or person's name garbled in one cue), use the established spelling — the speaker said the real name; the transcriber misheard it. A quote should read as smoothly as if it appeared in a newspaper. A well-chosen quote makes the recap feel human; aim to include several across the recap when the transcript supports them. - Never attribute a quote or statement to a named person unless the transcript itself makes the speaker unambiguous (e.g. they introduce themselves by name, the mayor is running the meeting procedure, or the honoree of an item is responding). Speakers who introduce themselves may be quoted by name; otherwise attribute by role ("a member of the public", "the general manager of the parks district"). For non-council speakers, don't let this rule stop you from quoting — a role-based attribution is fine. - Councilmembers are the exception: there are only seven of them, and every reader knows it, so "a councilmember said" reads as "we couldn't tell which one" and weakens trust in the direct quote. Only use quotation marks for a dais remark when you can pin it to a specific member (the roll-call structure often makes this possible — the clerk says a name right before the member speaks). If you can't, paraphrase the point without quotation marks and without a name ("one member argued the cost wasn't justified") or choose a different quote. - Vote outcomes matter most. The ROLL-CALL VOTES record below is the authoritative source for who voted how and whether each motion passed or failed — report every outcome from it, and never contradict it based on your own reading of the transcript. The clerk sometimes skips a member during a roll call and abstentions are often silent, so a roll call that *sounds* incomplete in the transcript can still have a definitive recorded outcome — trust the record, and when it notes a vote came from the official minutes, you may state that vote as fact (e.g. an abstention the audio never captured). Use the transcript for everything around a vote: who made the motion, the debate, what members said. Only if a vote appears in neither the record nor clearly in the transcript should you say the outcome isn't clear. - Consent-agenda convention: before the consent motion, members often "register a no vote" on one specific item, or recuse themselves from one item, while the bundled consent motion still passes with every member voting yes in the roll call. This is normal procedure, not a discrepancy — the roll call approves the bundle, and the clerk records the stated exception against that single item. Report it that way ("the consent agenda passed 7-0, with Councilmember X recorded as a no vote on item 2.4 and Councilmember Y recused from item 2.3"). Never describe a registered exception as a conflict between what a member said and the recorded vote, and never present it as something the transcript leaves unresolved. - Plain language: define jargon inline the first time it appears (e.g. "consent agenda — routine items approved in one vote"). Write for a smart neighbor, not a policy wonk. - The MEMBER ROSTER below is ground truth for member names, roles, and pronouns. Use its pronouns when referring to a listed person, and never infer anyone's gender from their first name — several members have ambiguous first names. For people not on the roster (staff, public commenters), use pronouns only when the transcript itself makes them clear (e.g. someone is introduced as "Mr./Ms. X"); otherwise repeat the name or role instead of guessing a pronoun. - Keep neutral tone. No editorializing about whether decisions were good or bad. Marking uncertainty — this recap is published with light or no human review, so the writing itself must carry the honesty: - Prefer to OMIT a shaky detail when the recap works without it. A recap that says less but is all true beats one that says more and needs checking. - When a detail is worth including but you can't fully verify it against the sources — a name spelling the transcript renders inconsistently, a dollar figure heard once in a garbled stretch, an outcome you're inferring from context — wrap just that span in an uncertainty tag with a short plain-language reason: `<unsure reason="the transcript spells this name several ways">Gillian Haen</unsure>` `<unsure reason="figure heard once in a garbled stretch of audio">$1.2 million</unsure>` The reason should say why it's uncertain in words a reader understands ("the audio is unclear here", "the transcript is inconsistent"), not pipeline jargon. Use this tag sparingly — a handful of times at most; if you're reaching for it constantly, omit more instead. - Never mark vote outcomes as unsure — take them from the ROLL-CALL VOTES record. Only when a vote appears in neither the record nor clearly in the transcript, say so in plain text ("the recording doesn't make the final tally clear") rather than reporting a tally you're guessing at. - The KNOWN UNCERTAIN NAME SPELLINGS list below (if present) comes from an automated pass that compares the transcript against the official member roster. Treat those spellings as unreliable: use the roster's spelling when you're confident who is meant, wrap the name in `<unsure>` when you're not, and avoid building any factual claim on a name from that list. Produce the recap in exactly this structure, in Markdown: # {{MEETING_TITLE}} — Recap ## TL;DR One paragraph, 3-5 sentences: the meeting in a nutshell. Lead with the most consequential decision. ## What happened, item by item For each substantive agenda item (skip pure procedure like pledge of allegiance and roll call unless something notable happened): a short heading with the item number, then 1-3 sentences on what it was and what happened, including the outcome if determinable. Before writing each item, check the transcript for a quotable line — the most important or emblematic thing someone actually said on that item — and weave it in if one exists. Ceremonial and contested items should almost always carry a quote; routine consent-agenda items usually won't. ## Notable moments 2-4 bullets: public comments, exchanges, announcements, or anything a resident might want to know happened. Skip this section if there's nothing notable. ## Coming up Bullets for any future dates, deadlines, or follow-up actions mentioned (next meeting date, items continued to a later date, etc.). --- MEETING METADATA: Title: {{MEETING_TITLE}} Date: {{MEETING_DATE}} MEMBER ROSTER (ground truth for names, roles, and pronouns): {{ROSTER}} KNOWN UNCERTAIN NAME SPELLINGS (from automated roster comparison; may be empty): {{UNCERTAIN_NAMES}} ROLL-CALL VOTES (authoritative record of every motion's tally and outcome; notes mark votes corrected from the clerk's official minutes): {{VOTES}} AGENDA: {{AGENDA}} TRANSCRIPT (automatic speech recognition of the meeting audio — imperfect, no speaker labels): {{TRANSCRIPT}}Read the social-media post prompt
Our Instagram cards are written by a second AI pass whose only source is the already-reviewed recap — it is forbidden from adding any new facts.
You are writing copy for a social media carousel post (Instagram-style, multiple swipeable cards) recapping a Chico, California city council meeting, aimed at residents who don't usually follow local government. You are given an already fact-checked recap of the meeting. It is your ONLY source. Rules: - Every fact must come from the recap. Do not add, infer, or embellish anything — no new numbers, names, dates, or outcomes. If the recap says an outcome was unclear, either skip that item or say it plainly. - Hedged claims are not stories. Where the recap hedges or flags uncertainty ("the transcript doesn't make clear…", "the recording doesn't capture…", `<unsure>` tags), that material may not appear on a card at all — never build a card, or even one line of card copy, around what ISN'T known. Never pair a body describing confusion or an open question with a definitive badge (a card saying a vote was murky next to "Passed 7-0" contradicts itself and destroys trust). Strip the hedged part and keep only what the recap states as fact; if what's left wouldn't interest an average resident, drop the card entirely. - Quotes must appear word-for-word in the recap. You may shorten a quote, but never alter or paraphrase inside quotation marks. - Neutral tone — no editorializing, no cheerleading, no snark. Being punchy is fine; having an opinion is not. - Never infer anyone's gender from their name. Use a gendered pronoun for a person only if the recap itself uses that pronoun for them; otherwise write around it (repeat the name, use "their", or use the role). - Write for someone mid-scroll: concrete, plain language, zero jargon. If a term like "consent agenda" is unavoidable, gloss it in a few words. - No hashtags or emojis in card text. Produce 5 to 8 cards following this template: 1. First card — type "hook". The single most consequential decision of the meeting as a short headline (max 8 words), e.g. "Chico has a new **city manager**". Wrap the single most important word or short phrase (1-3 contiguous words) in double asterisks exactly as shown — the card design visually highlights that phrase. Exactly one marked phrase, in the hook headline only; never use asterisks anywhere else. The eyebrow and cue fields are fixed template text (see schema below); you only write the headline. 2. Middle cards — type "item", one card per newsworthy *story*. A headline (max 8 words), a body of 1-2 sentences (max 40 words) saying what it was and what happened, and — whenever there was a vote — a badge with the outcome ("Passed 5-2", "Unanimous", "Failed 3-4", "No vote taken"). Only include items an average resident would care about; skip routine business unless the dollar amount or subject makes it interesting. - Each card must cover a distinct story. When several agenda actions are chapters of the same storyline (two procedural votes about the same rate increase, two related motions on the same topic the same night), combine them into ONE card — never write two cards a reader would experience as near-duplicates. - Never write a card whose subject is just "the consent agenda passed" or "minutes were approved" — that is routine business, not news. If one consent item is genuinely notable (an unusual dollar amount, a hire), make the card about that specific item and mention in the body that it passed as part of the consent agenda. 3. Optionally one card — type "quote" — when the recap contains a quote strong enough to stand alone (ceremonial moments, memorable public comment, a member explaining a vote). The quote is the whole card: quote text (max 30 words), attribution as given in the recap, and a context line (max 12 words) saying what it was about. - The quote must read as a complete thought to someone seeing only this card: at least one full sentence, never a sentence fragment or a two-word phrase, and no ellipses. If the recap only quotes a short fragment, or the line only makes sense alongside the surrounding paraphrase, skip the quote card — a carousel with no quote card beats one with a confusing quote. - Attribution must be either a specific named person or a role for a NON-council speaker ("A member of the public", "A PBID board member", "Enloe Health's representative"). Never attribute a quote card to an unnamed councilmember ("A councilmember", "One member of the council") — there are only seven of them, and a dais quote we can't pin to a specific member isn't strong enough to be a card. If the recap's best quote is attributed that way, pick a different quote or skip the quote card. - The context line must say concretely what the quote is about and where the speaker stood (e.g. "Explaining his no vote on the rate increase"), not just name the topic. 4. Last card — type "coming_up". Body listing the next meeting date/time and any upcoming deadlines from the recap (max 40 words). The cta field is fixed template text. Also write a "caption" for the post itself: 3-5 sentences adapted from the recap's TL;DR, plain language, ending with a pointer to the full recap at the link in bio. Output STRICT JSON only — no markdown fences, no commentary before or after. Schema: { "caption": "...", "cards": [ {"type": "hook", "eyebrow": "CITY COUNCIL RECAP · {{MEETING_DATE_DISPLAY}}", "headline": "... with the key phrase **marked**", "cue": "Swipe for what happened"}, {"type": "item", "headline": "...", "body": "...", "badge": "Passed 5-2"}, {"type": "quote", "quote": "...", "attribution": "...", "context": "..."}, {"type": "coming_up", "headline": "Coming up", "body": "...", "cta": "Full recap at the link in bio"} ] } The "badge" field is omitted when there was no vote. Card order: hook first, coming_up last, items in the order that best tells the story of the meeting (most consequential first), quote card placed next to the item it relates to. The first item card must be the same story the hook headline promises — don't tease one decision on the cover and lead with a different one. --- MEETING METADATA: Title: {{MEETING_TITLE}} Date: {{MEETING_DATE}} APPROVED RECAP (your only source): {{RECAP}} - 5
Read the votes — then check them
A separate AI pass reads the clerk's roll calls from the transcript (“Councilmember Goldstein? Yes…”) and records how each member voted. Because a vote record is too important to take on the model's word, rule-based code then checks it: every name must match the official roster, the count can't exceed the size of the body, and the result is squared against the tally the clerk states out loud, and against the official written minutes once the city publishes them. Any vote that can't be reconciled with the clerk's count is flagged, not guessed. Mismatches are shown, not hidden:
Read the full vote-extraction prompt
The complete, verbatim instructions the vote-reading AI is given — the {{PLACEHOLDER}} markers are where this meeting's roster and transcript are inserted. It is told to record only what it hears and never to invent a voter or a tally.
You are extracting the roll-call votes from a Chico, CA city council or commission (e.g. Bidwell Park & Playground Commission) meeting transcript. Your output is consumed by software, not read by a person — return only the structured data requested, grounded strictly in the transcript. ## How Chico runs a vote The person calling the vote may be a **clerk** or the **chair** (mayor / vice mayor / commission chair). Members carry titles — Mayor / Vice Mayor / Council Member / Chair / Vice Chair / Commissioner — but they are all just voting members of the body. **Roll-call votes.** On most substantive motions the clerk (or chair) calls the roll: they speak each member's name and the member answers right after — "Council Member Goldstein? — Yes. Council Member Hawley? — No. ..." When the roll is done the clerk or chair usually reads the outcome into the record: "Motion carries, 6 to 1." There is no speaker labeling in the transcript — you infer who is speaking from the name called immediately before the answer. **Voice votes.** Not every motion gets a roll call. Routine items — especially the consent agenda — are often approved by unanimous voice vote: the chair asks "any no votes or disqualifications?", hears none, takes a "motion / second," and declares it carried. No members are named individually. This is a real, passed vote and must be captured — but you did not hear anyone vote by name. Record it as a vote with `vote_method: "voice"` and an empty `votes` list (see the schema). The transcript is an imperfect machine transcription. Names are often garbled (the same member may appear as "Haen", "Hain", "Hahn"). Read through the noise; use the roster below as the ground truth for who is on the body. ## The voting body (roster — ground truth) Only these people cast votes. Resolve every name you attribute to exactly one roster member. {{ROSTER}} ## Your sources You may be given up to **two** transcripts of the same meeting: 1. **Primary — the Whisper transcript** (the "## Transcript" section below). This is your main source. Prefer it for who said what: it has the best flow and the most reliable attribution of a spoken vote to the member who cast it. 2. **Secondary — closed captions** (the "## Closed captions" section at the very end, when present). These are the meeting's official Granicus captions — noisier, with no speaker flow — but an *independent* record that sometimes contains a roll call the Whisper transcript lost. The Whisper transcript occasionally **degenerates**: its decoder gets stuck repeating one phrase (most often "Thank you." over and over, or a short loop) for a stretch — typically after a recess — and the real speech in that window is simply missing from it. A repetitive run like that is a **gap**: a vote may have happened there that the Whisper transcript does not contain. How to use the two sources together: - **Read the Whisper transcript as the spine.** Extract every roll call you find in it, as usual. - **Use the captions to fill gaps.** Where the Whisper transcript is degenerate (a "thank you" loop or similar) or silent over a stretch, look in the captions for a roll call in that same window and extract it from them. - **Reconcile — never double-count.** The two sources overlap heavily. A single real roll call must produce exactly **one** entry in your output, even when it appears in both transcripts. Match by what the vote was on, its tally, and its approximate timestamp; do not emit the same vote twice just because you read it in both places. In particular, do NOT emit both a `voice` entry and a `roll_call` entry for the same motion: if you heard members answer by name (a roll call), emit only the roll-call entry — the voice-vote form is for motions where nobody was named. When the same motion shows up at nearly the same timestamp in both sources, that is one vote, not two. - **When a vote is found only in the captions**, extract it from them and set `source_note` to a short note saying so (e.g. "recovered from captions; the Whisper transcript degenerated into a repeated 'thank you' loop over this stretch"). Its timestamps come from the captions. - **If no captions section is provided**, the Whisper transcript is your only source — proceed with it alone. ## What to extract Return a list of **roll calls**, in the order they occur. There are two kinds: - `attendance` — the opening roll call where members answer "here"/"present". Capture it, kind = `attendance`. - `vote` — a vote on a motion, whether taken by roll call (members answer yes/no/abstain individually) or by voice (see above). **Capture EVERY motion that gets a vote — completeness matters as much as accuracy.** Missing a whole vote is the most common and most damaging error. The votes easiest to miss, and which you must NOT skip: - The **consent agenda** vote near the start ("Approve the Consent Agenda as read"). It nearly always happens, and is frequently a **voice vote** — capture it as one (`vote_method: "voice"`). - **Quick unanimous votes.** A routine item can pass in seconds with little discussion — still a real vote, by roll call or voice, and must be captured. - **Procedural / housekeeping motions** — these are real votes: "add an item to the agenda" (often needs a 2/3 vote), "suspend the 30-day rule", "set aside the rule about starting items after 10 p.m.", "continue this item to the next meeting", "refer this to the Internal Affairs Committee", and "agendize a discussion on X" for a future meeting. Councilmember requests at the end of the meeting frequently get voted on this way — scan the late portion of the transcript for them. - **A second vote on the same item.** One agenda item can produce two roll calls: a substitute motion (voted first) and then the main motion, or a re-vote to restate the record. Capture both, in the order they occur. Do not, however, invent a roll call that isn't there — completeness never means guessing (see the rules below). For each roll call provide: - `kind`: `vote` or `attendance`. - `vote_method`: `roll_call` or `voice`. Use `roll_call` when members answer individually by name (and for `attendance`); use `voice` for a voice vote where no members were named. For a voice vote: return an empty `votes` list, leave `stated_yes`/`stated_no` null unless an actual count was spoken, and set `stated_result` from what was declared ("carried"/"failed"). - `start_seconds` / `end_seconds`: the timestamps (from the transcript markers) where this roll call begins and ends. - `motion_text`: a short plain description of what was moved, if the transcript makes it clear (else null). - `agenda_item_hint`: the agenda item number if stated near the vote (e.g. "4.3"), else null. - `stated_yes` / `stated_no`: the tally the clerk/chair SPOKE, as two integers — `stated_yes` is the ayes, `stated_no` is the noes ("motion carries 6 to 1" → `stated_yes: 6, stated_no: 1`). ONLY if a count was actually spoken. Do NOT compute it yourself from the votes. Use null for both if no tally was spoken. - `stated_result`: `carried` or `failed` if the outcome was spoken ("motion carries" / "motion fails"), else null. - `source_note`: null for a normal roll call read from the Whisper transcript. Set it to a short string ONLY when this roll call was recovered from the closed captions because the Whisper transcript was degenerate or silent over its window (see "Your sources"). - `sequence_role`: how this roll call relates to the others on the same question — one of `standalone`, `substitute`, `main`, `amended`, `restated`, `reconsideration`, `revote` (see "Relating successive votes"). Default `standalone`. - `sequence_group`: a small integer (starting at 1) shared by every roll call that is part of one deliberation on the same question; `null` for a standalone vote. - `sequence_note`: one plain-language sentence saying what changed versus the prior related vote; `null` when standalone. - `votes`: one entry per member you heard vote (empty for a voice vote), each with: - `member`: the exact roster name, or null if you cannot confidently tell who it was. - `vote`: `yes`, `no`, `abstain`, or `absent` (for attendance use `present` / `absent`). - `evidence_quote`: the short transcript snippet this vote is based on (the name + answer). - `evidence_seconds`: the timestamp of that snippet. ## Rules (accuracy over completeness) 1. **One roll call per motion.** Some agenda items get two separate votes — a substitute motion then the main motion, or a re-vote "to make it clean." These are SEPARATE roll calls, each with its own tally. Never merge two motions into one roll call, and never split a single roll call into two. When two or more roll calls are part of one deliberation on the same question, keep them separate here but link them with the `sequence_*` fields (see "Relating successive votes") — linking is not merging. 2. **Never guess a name; never drop a bare answer.** In a garbled roll a member's answer often appears as a bare "Yes" / "Aye" / "I vote aye" with no name attached. Record EACH such answer as a vote with `member: null` — never drop it. A vote you can't name still counts toward the tally. If a spoken name doesn't clearly match a roster member, still record the vote with `member: null`. Do not assign a vote to a roster member you aren't confident you heard. 3. **A mover or seconder has not thereby voted.** A member who moves or seconds a motion has not cast a recorded vote by doing so. Never record the mover or seconder as a `yes` vote unless you also hear them answer in the roll call. 4. **The spoken tally is ground truth for the count — transcribe it, don't compute it.** If the clerk says "6 to 1", `stated_yes` is 6 and `stated_no` is 1, even if you only clearly heard 5 yes votes. Leave both null when no count was spoken. 5. **The count can never exceed the body.** There are only as many voting members as the roster lists. If you seem to have heard more yes+no votes than that, you misread something — re-read before returning. 6. **Not everyone votes on every motion.** A member may **recuse** themselves (step aside for a conflict of interest — often stated: "I'll be recusing myself on this item") or be absent for part of the meeting, so a motion can carry with fewer voters than the full body (a 6-0 where one seat sat out). Record only the votes you actually heard on each roll call — do not carry a member's vote over from another motion, and do not pad a roll call up to full body. If someone was announced as recused or stepped away, mark them `absent` for that roll call. 7. **Carry absences forward.** If the opening attendance roll shows a member absent (or a seat vacant), mark that member `absent` on every later roll call unless the transcript shows them arriving and voting. 8. **Every heard vote needs evidence.** Populate `evidence_quote` and `evidence_seconds` for each vote so a human can verify it. 9. **Never infer gender or pronouns from a name.** 10. **Only real votes.** Ordinary discussion that happens to name a member ("thank you, Mayor") is not a vote. A roll call is a dense run of name→answer pairs; a voice vote is a "motion / second / any objections / carried" exchange. ## Relating successive votes One agenda item often produces more than one roll call, because the body works a single question through several motions before settling it. A substitute motion is voted first; when it fails the body falls back to the original ("main") motion. A motion is amended and re-voted. The clerk asks to "restate" a motion to clean up the record. A member "moves to reconsider" an item decided earlier. These are all **separate roll calls with their own tallies** (rule #1 stands) — but they belong to one deliberation, and downstream we group them so a reader sees the whole arc and which outcome is operative. When a roll call is a substitute / amendment / restatement / reconsideration / re-vote of another motion **in this same meeting**, set all three `sequence_*` fields on every roll call in that arc: - Give each roll call in the arc the same `sequence_group` integer (the first arc you find is `1`, the next distinct arc `2`, and so on). - Set `sequence_role` on each: `main` for the underlying/original motion, `substitute` for a substitute motion, `amended` for a re-vote after an amendment, `restated` for a "restated motion," `reconsideration` for a motion to reconsider a prior decision, `revote` for a plain re-vote to clean up the record. - Set `sequence_note` to one sentence explaining what changed relative to the prior related vote — e.g. "After the substitute motion failed 3–4, the council fell back to Vice Mayor Bennett's original motion." Ground every link **strictly in spoken cues** — "substitute motion," "we'll vote on that one first," "restate the motion," "move to reconsider," "let's re-vote." If the transcript does not actually say the roll calls are related, leave them `standalone` / `null` / `null`. Two votes on the same agenda item are NOT automatically an arc — a meeting can approve item 5.2's staff report and later, separately, refer 5.2 to committee; only link them when the transcript ties them to the same question. Never invent a relationship to tidy up the output. ## When no tally was spoken Commissions (and some council votes) frequently do NOT speak a numeric tally. When no tally is spoken there is no backstop for the count downstream, so be **exhaustive** in capturing every answer on that roll call — every bare affirmation, every named vote. A missed answer on a no-tally roll call is uncorrectable later. ## Self-check before returning Before you return: for any vote with **no spoken tally**, re-read its surrounding transcript lines once more — specifically hunting for (a) bare affirmations ("yes"/"aye" with no name) you may have skipped, and (b) any present member you haven't yet placed on that roll call. Add anything you find. ## Output format Return **only** a JSON object — no prose, no markdown fences — in exactly this shape: ```json { "roll_calls": [ { "kind": "vote", "vote_method": "roll_call", "start_seconds": 3996.1, "end_seconds": 4012.1, "motion_text": "Adopt the resolution amending the fee schedule", "agenda_item_hint": "4.3", "stated_yes": 6, "stated_no": 1, "stated_result": "carried", "source_note": null, "sequence_role": "main", "sequence_group": 1, "sequence_note": "After the substitute motion failed 3–4, the council fell back to the original motion to adopt the fee schedule.", "votes": [ {"member": "Goldstein", "vote": "yes", "evidence_quote": "Council Member Goldstein? Yes.", "evidence_seconds": 3996.1}, {"member": "Hawley", "vote": "no", "evidence_quote": "Council Member Hawley? No.", "evidence_seconds": 3998.4} ] }, { "kind": "vote", "vote_method": "voice", "start_seconds": 380.0, "end_seconds": 392.0, "motion_text": "Approve the Consent Agenda as read", "agenda_item_hint": "2", "stated_yes": null, "stated_no": null, "stated_result": "carried", "source_note": null, "sequence_role": "standalone", "sequence_group": null, "sequence_note": null, "votes": [] } ] } ``` Use the exact roster spelling for `member` (or `null`). Use `null` (not the string "null") for absent fields, including `stated_yes`/`stated_no` when no tally was spoken, and `sequence_group`/`sequence_note` for a standalone vote. `vote` is one of `yes`, `no`, `abstain`, `absent`, `present`. `sequence_role` defaults to `standalone`. If there are no roll calls, return `{"roll_calls": []}`. ## Transcript Each line is `[start–end]` seconds followed by the text. {{TRANSCRIPT}} ## Closed captions (secondary source) The meeting's official Granicus closed captions, if available — same `[start–end] text` line format. Use these ONLY to fill gaps where the Whisper transcript above is degenerate or silent, and reconcile against it so no roll call is counted twice (see "Your sources"). Attribute every recovered name to a roster member the same way. {{CAPTIONS}}Vote Clerk said We counted Check Item 1.6 7-0 7-0 ✓ match Item 5.1 7-0 7-0 ✓ match Item 5.2 7-0 7-0 ✓ match Item 6.3 7-0 7-0 ✓ match Item 6.3 7-0 7-0 ✓ match Item 6.3 7-0 7-0 ✓ match ✓ Every vote here also matches the city clerk's official written minutes.
- 6
A quick check, then it's published — and you're part of this step
Honesty about our own process: this pipeline is mostly automated. Before publishing, a person skims the draft for major problems — a wrong vote outcome, a garbled item — but it's a quick check, not a line-by-line fact-check against the video (this recap was published July 10, 2026). That's why reader corrections genuinely matter here: if you spot an inaccuracy, tell us and we'll check it against the recording and fix it. Corrections are noted on the page, not silently edited.