ADVERTISEMENT

'I'm not an attack dog': Ruth Castelo is new OVP spokesperson

Published Jul 9, 2025 12:31 pm  |  Updated Jul 9, 2025 04:13 pm
The Office of the Vice President’s (OVP) new spokesperson is adamant that she will neither be an attack dog nor engage in mudslinging because as she is simply tasked to make the public aware of the accomplishments of the office.

Former Department of Trade and Industry (DTI) Undersecretary Ruth Castelo is the new spokesperson of the Office of the Vice President (OVP). Castelo, a lawyer, addresses the media for the first time during a press conference at the OVP Central Office in Mandaluyong City on Wednesday, July 9, 2025. (Santi San Juan/Manila Bulletin)
Former Department of Trade and Industry (DTI) Undersecretary Ruth Castelo is the new spokesperson of the Office of the Vice President (OVP). Castelo, a lawyer, addresses the media for the first time during a press conference at the OVP Central Office in Mandaluyong City on Wednesday, July 9, 2025. (Santi San Juan/Manila Bulletin)
“I’m here as spokesperson for the Office of the Vice President. I’m not here to sling any mud to anyone,” lawyer Ruth Castelo said during a press conference in Mandaluyong City on Wednesday, July 9.

“I’m not an attack dog. So, not being an attack dog, I will not go on the offensive,” she added.

According to Castelo, the Vice President’s “marching order” is “to be forthright in the message that I need to convey and these are the accomplishments and the projects, the programs and what exactly is the Office of the Vice President doing for the country.”

She promised to “just report” and “be straightforward” on the OVP’s message, adding that Duterte wants her to both be “firm” and “soft” as needed.

Castelo, who was an undersecretary at the Department of Trade and Industry (DTI) during the Duterte administration and former head of the Consumer Protection Group (CPG), expressed her admiration for Duterte when asked if she is feeling the pressure of her new post.

“No, because I believe in the leader, and the leader can handle it herself, right? I'm just a support staff, back up, cheerleader,” she said.

The new spokesperson added that like her, Duterte has a “never-say-die” attitude.

“So, kahit anong harapin nya, kaya niya yan (whatever she needs to face, she can handle it). I’m sure she also has, like me, battled many storms in her life. And you see her, she is still standing, stil strong,” Castelo said.

“I believe in her, and of course, she is a direct extension of her father, whom I served for the full six-year term kaya gusto ko po siyang matulungan (that’s why I want to help her),” she added.

The OVP was left without a spokesperson for months since lawyer Michael Poa left the position in November 2024.

Before him, Reynold Munsayac, also a lawyer, served as the OVP spokesman in 2022 when Duterte assumed office, but he was later appointed as assistant secretary at the Department of Education (DepEd), from where he also eventually resigned.

Related Tags

OVP vice presidential spokesperson Ruth Castelo Sara Duterte
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.