Meet Leni Manaa-Hoppenworth

Leni smiling at the camera

Leni Manaa-Hoppenworth is the first Filipina to serve on the Chicago City Council, representing the 48th ward. She serves as the Cook County Democratic Party Committeewoman for the 48th ward. As Committeewoman, Leni founded the 48th Ward Democratic organization.Leni is a small-business owner, community organizer, and public servant dedicated to championing progressive Democratic values.Read more about Leni here.

About Leni

Leni smiling at the camera
  • First Filipina to serve on the Chicago City Council

  • Cook County Democratic Party Committeewoman

  • Founder of Indivisible Illinois 9th District

  • Co-founder of Indivisible Illinois and ILVOTE

  • Founding Director of Operations for the IL Chapter of the Women’s March

  • Small-business owner since 2003

  • Mom of three Chicago Public School graduates

  • Licensed healthcare provider

  • Daughter of Filipino immigrants

  • Proud member of the LGBTQ+ community

Leni and her family on a bench with blue skies behind them

More About Leni...

Leni Manaa-Hoppenworth is a community organizer, small-business owner, and public servant dedicated to championing progressive Democratic values.Leni is the first Filipina to serve on the Chicago City Council, representing the 48th ward. In City Hall, Leni is deeply committed to the values that health, housing, and safety are human rights and that caring for our whole community leads to safety for everyone. Leni has sponsored and co-sponsored over 280 pieces of legislation, including the Green Social Housing ordinance, which provides Chicago with a new tool for creating affordable housing.Leni serves as the Cook County Democratic Party Committeewoman for the 48th ward. As Committeewoman, Leni founded the 48th Ward Democratic organization.Leni was the co-founder of Indivisible Illinois, where she collaborated with individuals and organizations with both rural and urban interests for the benefit of the entire state and coordinated grassroots efforts to knock on doors for progressive Democrats like US Congresswoman Lauren Underwood and Governor JB Pritzker.Leni was the founder of Indivisible Illinois 9th District (Indivisible IL9). Under Leni's leadership Indivisible IL9 got out the vote for Democrats both locally and nationally, and endorsed such initiatives as the Peace Book Ordinance, and the Empowering Communities for Public Safety ordinance (ECPS), which places police accountability in the hands of the people.Leni is the former Director of Operations for the Illinois Chapter of the Women’s March on Washington and helped mobilize 10,000 Illinoisans to Washington, DC in defense of women’s rights, including and especially reproductive rights and bodily autonomy for all.Leni founded ILVOTE, a state-wide organization with the mission to help the electorate stay informed and engaged in every election and was awarded the Peggy A. Montes Unsung Heroine Award of Cook County for her work at ILVOTE.Leni has been a small-business owner for over 20 years. She was awarded the Kurt Mathiasson Award for community leadership by the Andersonville Chamber of Commerce for her work as a co-chair of the Diversity, Equity and Inclusion (DEI) Committee. Her business was also an early adopter of Chicago Therapy Collective’s Hire Trans Now initiative, which advocates for policies that help reduce barriers to employment for trans people, especially people of color.Leni is a Chicago Public School alum, mother of three Chicago Public School graduates, and former Local School Council Representative. She is an avid supporter of the arts, a tango dancer, and former board member of multiple dance theaters. Leni is a licensed healthcare provider and former Cook County Hospital employee. Leni is a proud member of the LGBTQ+ community.

Vision

Health, Housing, and Safety are Human Rights.In 2023, the 48th Ward chose a different kind of leadership — one rooted in organizing, collaboration, and being bold. Together, we’ve proven that local government can deliver real results.We’ve expanded affordable housing, made our streets safer, restored investments in mental health, secured millions for neighborhood businesses, and brought more neighbors into the decision-making process than ever before.But our work isn’t finished. The challenges facing our ward, which includes Edgewater and Uptown, requires a leader who isn’t afraid to think bigger and challenge the status quo. Together, we’ll continue making the 48th Ward a place where everyone can thrive.Click on the topics below to learn more about Leni’s continued vision as Alderwoman of the 48th Ward.

Strong public schools are essential to a healthy and thriving community. As a Chicago Public Schools alum, mom of three Chicago Public School graduates, and a former Local School Council member at Jones College Prep, I’ve spent years advocating for our kids, teachers, and families.

Many education decisions are made by our elected school board, CPS, and the State of Illinois, but an alderperson has an important role to play as a partner in government.

Here’s how I’ve delivered:

  • Secured over $2 million in funding for pedestrian safety infrastructure improvements around every school in the 48th Ward, including safer crossings, traffic calming, and other investments through our Vision Zero plan.
  • Created two new playgrounds for our children: the Senn Park Nature Play Space and the Goudy Sensory Playlot.
  • Advocated for fully-funded public schools including social workers, librarians, nurses, and special education instructors.
  • Drove the process for an $8 million turf field project at Senn High School.
  • Promoted Local School Council elections; every Chicagoan over the age of 17 has the right to vote in their LSC, regardless of citizenship or whether or not they have a child enrolled in the school.

Next, I’ll fight for:

  • Fully funding Chicago Public Schools by working with our state legislators to increase CPS’ share of the Evidence-Based Funding formula so our schools receive the resources they need and can further enact smaller class sizes, diverse programming, and keep schools open in every neighborhood.
  • Continuing advocacy for a long-overdue gymnasium at McCutcheon Elementary, the only school in the state without one.
  • Strengthening partnerships between schools and the community–including with Loyola University Chicago–so our schools are not just places to learn during the day, but community assets. This could look like expanded after-school programming, youth employment opportunities, and connections between neighborhood organizations and academic institutions.
  1. Lorem ipsum dolor sit amet consectetur
  2. Lorem ipsum dolor sit amet consectetur
  3. Lorem ipsum dolor sit amet consectetur

Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis explicabo porro, voluptatum laborum cumque molestiae quibusdam accusamus sed, quam sint ducimus libero distinctio? Dolore laborum, quos dolorem recusandae deleniti quasi.

About the 48th Ward

Volunteer With Us!

Voting Info

And remember: In Illinois, you can register to vote right at the polling location, even on Election Day!

Election Protection Hotlines

Have questions about voter registration deadlines, requesting mail-in ballots, or how to vote in-person during early voting or on Election Day?Call or text the numbers below to speak with a trained Election Protection volunteer:

  • English 866-OUR-VOTE / 866-687-8683

  • Spanish/English 888-VE-Y-VOTA / 888-839-8682

  • Asian Languages/English 888-API-VOTE / 888-274-8683

  • Arabic/English 844-YALLA-US / 844-925-5287

  • Find More Election Protection Info Here

Find more voter protection resources here.

Upcoming Events

Here are upcoming opportunities to get involved with the team, both virtually and in-person, as well as community events where you can meet Leni — click on any event for more details.Google Calendar users, you can also add these events to your own calendar so you won’t forget!Note: If you are having trouble viewing the calendar on this page, view it here.

Endorsements

Leni has received endorsements for her 2027 re-election from the following individuals and organizations:

Hoan Huynh
IL State Representative
13th District

Kelly Cassidy
IL State Representative
14th District

Kevin Olickal
IL State Representative
16th District

Theresa Mah
IL State Representative
24th District

Fritz Kaegi
Cook County Assessor

Precious Brady-Davis
Metropolitan Water Reclamation District Commissioner

Holly Kim
Lake County Treasurer

Lamont Robinson
Alderman
4th Ward

Julia Ramirez
Alderwoman
12th Ward

Jeylú Gutiérrez
Alderwoman
14th Ward

Ronnie Mosley
Alderwoman
21st Ward

Byron Sigcho-Lopez
Alderman
25th Ward

Ruth Cruz
Alderwoman
30th Ward

Rossana Rodríguez Sánchez
Alderwoman
33rd Ward

Anthony Quezada
Alderman
35th Ward

Andre Vasquez
Alderman
40th Ward

Angela Clay
Alderwoman
46th Ward

Matt Martin
Alderwoman
47th Ward

Maria Hadden
Alderwoman
49th Ward

Holly Kim
Lake County Treasurer

Anna Rubin
20th Police District Council Chair

Veronica Arreola
24th Police District Council Chair

Michael Rabbit
Democratic Committeeman
45th Ward

Sean Tenner
Democratic Committeeman
46th Ward

48th Ward Democratic Organization

Newsletter Signup

Subscribe below to the Friends of Leni Manaa-Hoppenworth email list and get regular updates from the campaign and Leni herself.See previous updates here!

* indicates required
(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[5]='MMERGE5';ftypes[5]='zip';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';}(jQuery));var $mcj = jQuery.noConflict(true); // SMS Phone Multi-Country Functionality if(!window.MC) { window.MC = {}; } window.MC.smsPhoneData = { defaultCountryCode: 'US', programs: [], smsProgramDataCountryNames: [] }; function getCountryUnicodeFlag(countryCode) { return countryCode.toUpperCase().replace(/./g, (char) => String.fromCodePoint(char.charCodeAt(0) + 127397)) }; // HTML sanitization function to prevent XSS function sanitizeHtml(str) { if (typeof str !== 'string') return ''; return str .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/\//g, '/'); } // URL sanitization function to prevent javascript: and data: URLs function sanitizeUrl(url) { if (typeof url !== 'string') return ''; const trimmedUrl = url.trim().toLowerCase(); if (trimmedUrl.startsWith('javascript:') || trimmedUrl.startsWith('data:') || trimmedUrl.startsWith('vbscript:')) { return '#'; } return url; } const getBrowserLanguage = () => { if (!window?.navigator?.language?.split('-')[1]) { return window?.navigator?.language?.toUpperCase(); } return window?.navigator?.language?.split('-')[1]; }; function getDefaultCountryProgram(defaultCountryCode, smsProgramData) { if (!smsProgramData || smsProgramData.length === 0) { return null; } const browserLanguage = getBrowserLanguage(); if (browserLanguage) { const foundProgram = smsProgramData.find( (program) => program?.countryCode === browserLanguage, ); if (foundProgram) { return foundProgram; } } if (defaultCountryCode) { const foundProgram = smsProgramData.find( (program) => program?.countryCode === defaultCountryCode, ); if (foundProgram) { return foundProgram; } } return smsProgramData[0]; } function updateSmsLegalText(countryCode, fieldName) { if (!countryCode || !fieldName) { return; } const programs = window?.MC?.smsPhoneData?.programs; if (!programs || !Array.isArray(programs)) { return; } const program = programs.find(program => program?.countryCode === countryCode); if (!program || !program.requiredTemplate) { return; } const legalTextElement = document.querySelector('#legal-text-' + fieldName); if (!legalTextElement) { return; } // Remove HTML tags and clean up the text const divRegex = new RegExp(']*>', 'gi'); const fullAnchorRegex = new RegExp('', 'g'); const anchorRegex = new RegExp('(.*?)'); const template = program.requiredTemplate.replace(divRegex, ''); legalTextElement.textContent = ''; const parts = template.split(/(.*?<\/a>)/g); parts.forEach(function(part) { if (!part) { return; } const anchorMatch = part.match(/(.*?)<\/a>/); if (anchorMatch) { const linkElement = document.createElement('a'); linkElement.href = sanitizeUrl(anchorMatch[1]); linkElement.target = sanitizeHtml(anchorMatch[2]); linkElement.textContent = sanitizeHtml(anchorMatch[3]); legalTextElement.appendChild(linkElement); } else { legalTextElement.appendChild(document.createTextNode(part)); } }); } function generateDropdownOptions(smsProgramData) { if (!smsProgramData || smsProgramData.length === 0) { return ''; } return smsProgramData.map(program => { const flag = getCountryUnicodeFlag(program.countryCode); const countryName = getCountryName(program.countryCode); const callingCode = program.countryCallingCode || ''; // Sanitize all values to prevent XSS const sanitizedCountryCode = sanitizeHtml(program.countryCode || ''); const sanitizedCountryName = sanitizeHtml(countryName || ''); const sanitizedCallingCode = sanitizeHtml(callingCode || ''); return ''; }).join(''); } function getCountryName(countryCode) { if (window.MC?.smsPhoneData?.smsProgramDataCountryNames && Array.isArray(window.MC.smsPhoneData.smsProgramDataCountryNames)) { for (let i = 0; i < window.MC.smsPhoneData.smsProgramDataCountryNames.length; i++) { if (window.MC.smsPhoneData.smsProgramDataCountryNames[i].code === countryCode) { return window.MC.smsPhoneData.smsProgramDataCountryNames[i].name; } } } return countryCode; } function getDefaultPlaceholder(countryCode) { if (!countryCode || typeof countryCode !== 'string') { return '+1 000 000 0000'; // Default US placeholder } var mockPlaceholders = [ { countryCode: 'US', placeholder: '+1 000 000 0000', helpText: 'Include the US country code +1 before the phone number', }, { countryCode: 'GB', placeholder: '+44 0000 000000', helpText: 'Include the GB country code +44 before the phone number', }, { countryCode: 'CA', placeholder: '+1 000 000 0000', helpText: 'Include the CA country code +1 before the phone number', }, { countryCode: 'AU', placeholder: '+61 000 000 000', helpText: 'Include the AU country code +61 before the phone number', }, { countryCode: 'DE', placeholder: '+49 000 0000000', helpText: 'Fügen Sie vor der Telefonnummer die DE-Ländervorwahl +49 ein', }, { countryCode: 'FR', placeholder: '+33 0 00 00 00 00', helpText: 'Incluez le code pays FR +33 avant le numéro de téléphone', }, { countryCode: 'ES', placeholder: '+34 000 000 000', helpText: 'Incluya el código de país ES +34 antes del número de teléfono', }, { countryCode: 'NL', placeholder: '+31 0 00000000', helpText: 'Voeg de NL-landcode +31 toe vóór het telefoonnummer', }, { countryCode: 'BE', placeholder: '+32 000 00 00 00', helpText: 'Incluez le code pays BE +32 avant le numéro de téléphone', }, { countryCode: 'CH', placeholder: '+41 00 000 00 00', helpText: 'Fügen Sie vor der Telefonnummer die CH-Ländervorwahl +41 ein', }, { countryCode: 'AT', placeholder: '+43 000 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die AT-Ländervorwahl +43 ein', }, { countryCode: 'IE', placeholder: '+353 00 000 0000', helpText: 'Include the IE country code +353 before the phone number', }, { countryCode: 'IT', placeholder: '+39 000 000 0000', helpText: 'Includere il prefisso internazionale IT +39 prima del numero di telefono', }, ]; const selectedPlaceholder = mockPlaceholders.find(function(item) { return item && item.countryCode === countryCode; }); return selectedPlaceholder ? selectedPlaceholder.placeholder : mockPlaceholders[0].placeholder; } function updatePlaceholder(countryCode, fieldName) { if (!countryCode || !fieldName) { return; } const phoneInput = document.querySelector('#mce-' + fieldName); if (!phoneInput) { return; } const placeholder = getDefaultPlaceholder(countryCode); if (placeholder) { phoneInput.placeholder = placeholder; } } function updateCountryCodeInstruction(countryCode, fieldName) { updatePlaceholder(countryCode, fieldName); } function getDefaultHelpText(countryCode) { var mockPlaceholders = [ { countryCode: 'US', placeholder: '+1 000 000 0000', helpText: 'Include the US country code +1 before the phone number', }, { countryCode: 'GB', placeholder: '+44 0000 000000', helpText: 'Include the GB country code +44 before the phone number', }, { countryCode: 'CA', placeholder: '+1 000 000 0000', helpText: 'Include the CA country code +1 before the phone number', }, { countryCode: 'AU', placeholder: '+61 000 000 000', helpText: 'Include the AU country code +61 before the phone number', }, { countryCode: 'DE', placeholder: '+49 000 0000000', helpText: 'Fügen Sie vor der Telefonnummer die DE-Ländervorwahl +49 ein', }, { countryCode: 'FR', placeholder: '+33 0 00 00 00 00', helpText: 'Incluez le code pays FR +33 avant le numéro de téléphone', }, { countryCode: 'ES', placeholder: '+34 000 000 000', helpText: 'Incluya el código de país ES +34 antes del número de teléfono', }, { countryCode: 'NL', placeholder: '+31 0 00000000', helpText: 'Voeg de NL-landcode +31 toe vóór het telefoonnummer', }, { countryCode: 'BE', placeholder: '+32 000 00 00 00', helpText: 'Incluez le code pays BE +32 avant le numéro de téléphone', }, { countryCode: 'CH', placeholder: '+41 00 000 00 00', helpText: 'Fügen Sie vor der Telefonnummer die CH-Ländervorwahl +41 ein', }, { countryCode: 'AT', placeholder: '+43 000 000 0000', helpText: 'Fügen Sie vor der Telefonnummer die AT-Ländervorwahl +43 ein', }, { countryCode: 'IE', placeholder: '+353 00 000 0000', helpText: 'Include the IE country code +353 before the phone number', }, { countryCode: 'IT', placeholder: '+39 000 000 0000', helpText: 'Includere il prefisso internazionale IT +39 prima del numero di telefono', }, ]; if (!countryCode || typeof countryCode !== 'string') { return mockPlaceholders[0].helpText; } const selectedHelpText = mockPlaceholders.find(function(item) { return item && item.countryCode === countryCode; }); return selectedHelpText ? selectedHelpText.helpText : mockPlaceholders[0].helpText; } function setDefaultHelpText(countryCode) { const helpTextSpan = document.querySelector('#help-text'); if (!helpTextSpan) { return; } } function updateHelpTextCountryCode(countryCode, fieldName) { if (!countryCode || !fieldName) { return; } setDefaultHelpText(countryCode); } function initializeSmsPhoneDropdown(fieldName) { if (!fieldName || typeof fieldName !== 'string') { return; } const dropdown = document.querySelector('#country-select-' + fieldName); const displayFlag = document.querySelector('#flag-display-' + fieldName); if (!dropdown || !displayFlag) { return; } const smsPhoneData = window.MC?.smsPhoneData; if (smsPhoneData && smsPhoneData.programs && Array.isArray(smsPhoneData.programs)) { dropdown.innerHTML = generateDropdownOptions(smsPhoneData.programs); } const defaultProgram = getDefaultCountryProgram(smsPhoneData?.defaultCountryCode, smsPhoneData?.programs); if (defaultProgram && defaultProgram.countryCode) { dropdown.value = defaultProgram.countryCode; const flagSpan = displayFlag?.querySelector('#flag-emoji-' + fieldName); if (flagSpan) { flagSpan.textContent = getCountryUnicodeFlag(defaultProgram.countryCode); flagSpan.setAttribute('aria-label', sanitizeHtml(defaultProgram.countryCode) + ' flag'); } updateSmsLegalText(defaultProgram.countryCode, fieldName); updatePlaceholder(defaultProgram.countryCode, fieldName); updateCountryCodeInstruction(defaultProgram.countryCode, fieldName); } var smsNotRequiredRemoveCountryCodeEnabled = true; var smsField = Object.values({"EMAIL":{"name":"EMAIL","label":"Email Address","helper_text":"","merge_id":0,"type":"email","required":true,"audience_field_name":"Email Address","field_type":"merge","enabled":true,"order":0},"FNAME":{"name":"FNAME","label":"First Name","helper_text":"","type":"text","required":false,"audience_field_name":"First Name","enabled":true,"order":1,"field_type":"merge","merge_id":1},"LNAME":{"name":"LNAME","label":"Last Name","helper_text":"","type":"text","required":false,"audience_field_name":"Last Name","enabled":true,"order":2,"field_type":"merge","merge_id":2},"MMERGE5":{"name":"MMERGE5","label":"Zip Code","helper_text":"","type":"zip","required":false,"audience_field_name":"Address (zip Code)","enabled":true,"order":3,"field_type":"merge","merge_id":5},"ADDRESS":{"name":"ADDRESS","label":"Address","helper_text":"","type":"address","required":false,"audience_field_name":"Address","enabled":false,"