{"id":187030,"date":"2025-10-03T08:35:16","date_gmt":"2025-10-03T08:35:16","guid":{"rendered":"https:\/\/www.newsbeep.com\/ca\/187030\/"},"modified":"2025-10-03T08:35:16","modified_gmt":"2025-10-03T08:35:16","slug":"how-we-probed-a-maze-of-websites-to-tally-brazilian-government-shark-meat-orders","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/ca\/187030\/","title":{"rendered":"How we probed a maze of websites to tally Brazilian government shark meat orders"},"content":{"rendered":"<p>&#13;<br \/>\n                              A recent Mongabay investigation found widespread government purchases of shark meat in Brazil to serve in thousands of public institutions.The series has generated public debate, with a lawmaker calling for a parliamentary hearing to discuss the findings.Here, Mongabay\u2019s Philip Jacobson and the Pulitzer Center\u2019s Kuang Keng Kuek Ser explain how we built a database of shark meat procurements.<\/p>\n<p>See All Key Ideas<\/p>\n<p>&#13;<\/p>\n<p>Mongabay recently published an <a href=\"https:\/\/news.mongabay.com\/custom-story\/2025\/07\/that-fish-on-the-menu-in-brazils-schools-and-prisons-its-often-shark\/?_thumbnail_id=303243\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">investigation<\/a> <a href=\"https:\/\/news.mongabay.com\/custom-story\/2025\/08\/revealed-brazilian-state-buys-endangered-angelsharks-for-school-lunches\/\" data-wpel-link=\"internal\" rel=\"nofollow noopener\" target=\"_blank\">revealing<\/a> widespread Brazilian government purchases of shark meat to feed schoolchildren, hospital patients, prisoners and more. The series has <a href=\"https:\/\/news.mongabay.com\/2025\/08\/mongabay-shark-meat-expose-sparks-call-for-hearing-and-industry-debate\/\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">generated public debate<\/a> in the South American country, which, perhaps surprisingly, is the world\u2019s largest consumer and importer of shark meat. The procurements raise concerns because sharks are being overfished \u2014 globally, their populations in the open ocean have declined by an <a href=\"https:\/\/www.nature.com\/articles\/s41586-020-03173-9\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">estimated 71% over the past half-century<\/a> \u2014 and their meat tends to contain high levels of heavy metals, which can be especially dangerous for young children, pregnant and nursing mothers, and other vulnerable groups.<\/p>\n<p>As part of the research, we spent months combing through dozens of websites where Brazilian government agencies are legally required to publish their procurement records. It was challenging work, hunting down droplets of relevant data cataloged with inconsistent search terms across multiple obscure portals. In this article, we\u2019ll tell you how we went about it in hopes of inspiring and easing the way for other journalists and researchers to continue this line of inquiry.<\/p>\n<p>Because it was also richly rewarding: We uncovered 1,012 shark meat tenders issued since 2004, and identified 5,900 public institutions \u2014 preschools, homeless shelters, maternity wards, military bases, elderly care facilities, governor\u2019s residences, and more \u2014 that potentially received shark meat as part of these procurements. (Brazil-based Mongabay reporters <a href=\"https:\/\/news.mongabay.com\/by\/karla-mendes\/\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">Karla Mendes<\/a> and <a href=\"https:\/\/news.mongabay.com\/by\/fernanda-wenzel\/\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">Fernanda Wenzel<\/a> also played key roles in the investigation, following up leads on the ground turned up by our data work.)<\/p>\n<p>The impetus for the investigation was straightforward. We knew some government agencies were buying shark meat for schoolchildren. In 2021, for example, S\u00e3o Paulo\u2019s municipal education department cancelled a planned purchase of 650 metric tons of shark meat after marine conservation group Sea Shepherd Brazil criticized it, <a href=\"https:\/\/www.youtube.com\/watch?v=7QcyO5bVrVo\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">earning TV coverage<\/a>; that same year, the nearby city of Santos <a href=\"https:\/\/www.santos.sp.gov.br\/?q=noticia\/santos-e-reconhecida-como-a-primeira-do-brasil-a-banir-carne-de-cacao-da-merenda\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">announced<\/a> it would ban shark meat from school meals, a decision it said spared nearly half a metric ton of shark from being fed to kids.<\/p>\n<p>Experts told us shark meat procurements were happening elsewhere too. But aside from the aforementioned cases, plus a few passing mentions in a handful of <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/abs\/pii\/S0308597X17300933\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">academic<\/a> <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0006320721001713\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">papers<\/a> from the 2010s, we could find no report or study on the full extent of the phenomenon. Questions remained: Just how widespread were Brazilian public purchases of shark meat? Which agencies were buying it, and who were they feeding it to? What species were they buying? Did the officials in charge of these procurements even realize ca\u00e7\u00e3o \u2014 the generic name under which shark meat is packaged and sold in Brazil \u2014 was shark?<\/p>\n<p>As we asked around, we learned about the online portals where government agencies publish procurement records. It seemed like a good place to start.<\/p>\n<p><a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/07\/shark-meat-at-store.jpg\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-303329\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/07\/shark-meat-at-store.jpg\" alt=\"Shark meat on sale in Brazil is labeled as \u201cca\u00e7\u00e3o,\u201d a generic term whose true meaning is unknown to most Brazilians, surveys show.\" width=\"1536\" height=\"1024\"  \/><\/a>Shark meat on sale at a fish market in Santos is labeled as \u201cca\u00e7\u00e3o,\u201d a generic term whose true meaning is unknown to most Brazilians, surveys show. Image by Philip Jacobson\/Mongabay.<br \/>\nHow we searched the portals<\/p>\n<p>Brazil has 26 states and about 5,570 municipalities. Each jurisdiction is supposed to have its own publicly accessible online database of procurement records, including tender announcements, bidding records and award notices.<\/p>\n<p>Searching every one of those portals was far beyond our capacity, so we picked a few key jurisdictions to focus on. Our goal was not to identify every shark meat procurement that\u2019s ever happened, but rather to test the hypothesis that such procurements are widespread.<\/p>\n<p>After locating the portal for the state or municipality we wanted to search, typically via the jurisdiction\u2019s homepage, we had to figure out how to navigate the portal and whether we could use it to find shark meat tenders. This wasn\u2019t always straightforward: Portals varied greatly in design, and some were quite archaic, with limited search functionality. When possible, we wrote custom scrapers in the Python programming language to automate parts of the process, but identifying shark meat tenders was rarely as simple as typing \u201cca\u00e7\u00e3o\u201d in a search box. Reasons for this include:<\/p>\n<p>The portals typically provide a limited number of fields with which users can search for tenders (contracting agency, tender ID, year of issue, etc.). The list of items intended for purchase is rarely a searchable field. We therefore focused our keyword searches on the objeto (\u201cobject\u201d in English) field, which summarizes the tender\u2019s overall purpose (\u201cbuying fish for school meals in City X,\u201d for example) and was usually searchable.<br \/>\nVery few shark meat tenders, we found, actually mention shark meat in the objeto. We therefore searched keywords like \u201cpeixe\u201d (fish), \u201ccarne\u201d (meat) or \u201calimenta\u00e7\u00e3o\u201d (nutrition\/feeding), and then examined the results to find tenders with shark meat. To do this, we had to go down the list of results and open up each tender page, one by one. Often we had to click through layers of additional pages and\/or download attached files to find the items list, where we could see if shark meat had been included.<br \/>\nBesides being a Brazilian word for shark meat, -ca\u00e7\u00e3o is a common suffix in Portuguese. So even though some tenders did mention ca\u00e7\u00e3o in the objeto, searching for that word in that field usually returned an overwhelming number of false positives. The portals tended to lack quoted search functionality to isolate specific terms that would have helped us filter out these false positives.<br \/>\nThe downloadable files where the items lists were often found were usually PDFs, but they could also be DOC files, spreadsheets or other file types, and they tended to organize information in their own idiosyncratic ways over dozens, even hundreds, of pages. This lack of consistency impeded our ability to automate the information extraction process, meaning we usually had to read through the files ourselves in order to extract the desired information \u2014 not just whether ca\u00e7\u00e3o was on the items list, but also data like purchase price, winning bidder, and more. It was a tedious and time-consuming exercise.<\/p>\n<p>Generally speaking, our strategy was to first confirm that a particular search in a given portal would yield results that included at least some shark meat tenders. Then, if there were a very large amount of results, we would use Python scripts to automate checking those results for mentions of shark meat.<\/p>\n<p>The first four states<\/p>\n<p>To start, we chose four states: S\u00e3o Paulo, Rio de Janeiro, Minas Gerais \u2014 the three most populous states in Brazil \u2014 and Paran\u00e1, the sixth-most populous and one we\u2019d heard was buying shark meat.<\/p>\n<p>We also wanted to look at the southernmost states of Santa Catarina and Rio Grande do Sul, where shark fishing and ca\u00e7\u00e3o consumption are known to be widespread, but their portals were difficult to navigate, so we moved on. (Later, we identified shark meat procurements by state agencies in Rio Grande do Sul via another Brazilian website, <a href=\"https:\/\/www.portaldecompraspublicas.com.br\/\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">www.portaldecompraspublicas.com.br<\/a>, which compiles tenders from various jurisdictions. We also identified municipal shark meat purchases in both states via several municipal portals.)<\/p>\n<p>Paran\u00e1<\/p>\n<p>Portal search page (licita\u00e7\u00f5es): <a href=\"https:\/\/www.transparencia.pr.gov.br\/pte\/assunto\/5\/115?origem=3\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/www.transparencia.pr.gov.br\/pte\/assunto\/5\/115?origem=3<\/a><\/p>\n<p>Initially, we were confused about how to navigate this portal because there were two ways to search for tenders. We contacted Paran\u00e1 state officials and were advised to search for both licita\u00e7\u00f5es (auctions) and contratos (contracts) in the database for tenders. After several rounds of searching and comparing data, we realized that both gave us the same tenders, but the search results from licita\u00e7\u00f5es had more detailed information.<\/p>\n<p>This was one of the rare portals where the list of items to be procured was a searchable field (called item\/palavra-chave). We wrote a scraper that searched for the terms \u201cpeixe\u201d and \u201cpescado\u201d (another word for fish), in both the item and the objeto fields, and then downloaded each result \u2014 there were more than 900 \u2014 as a separate XLS file. The scraping was challenging as the website loaded very slowly or failed to load, and the back (voltar) button sometimes failed to work properly.<\/p>\n<p>After that, we searched each file for \u201c ca\u00e7\u00e3o\u201d, with a space in front, and its variations \u2014 \u201c cacao\u201d, \u201c cac\u00e3o\u201d, \u201c ca\u00e7ao\u201d, \u201c ca\u00e7\u00e3o\u201d \u2014 then manually checked the ones where one of those words appeared in order to confirm it was actually a shark meat tender and not a false positive. For the approximately 50 verified shark meat tenders, we then manually recorded information like supplier company, purchase price, etc., into our own spreadsheet.<\/p>\n<p>S\u00e3o Paulo<\/p>\n<p>Portal search page: <a href=\"https:\/\/www.imprensaoficial.com.br\/ENegocios\/BuscaENegocios_14_1.aspx\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/www.imprensaoficial.com.br\/ENegocios\/BuscaENegocios_14_1.aspx<\/a><\/p>\n<p>Unlike the Paran\u00e1 portal, the item and even the objeto fields were not searchable here. Despite this obstacle, we were driven to devise a workaround because S\u00e3o Paulo state was said to be the biggest consumer of shark meat in Brazil. We ended up using a scraper to download every tender issued between 2004 and 2024 filed in the portal under Sub\u00e1rea: Alimenta\u00e7\u00e3o, a category we confirmed held at least some shark meat tenders by experimenting with some manual searches and clicking through the results. This gave us about 75,000 tenders to start with.<\/p>\n<p><a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-1.png\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-306632\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-1.png\" alt=\"Screenshot\" width=\"1294\" height=\"816\"  \/><\/a><\/p>\n<p>In this portal, each tender had its own page, usually with additional data and documents; the edital, which is the formal invitation to bid published by the contracting agency, was downloadable, and other documents, like the approval notice, were copy-pasted into separate webpages. We wrote another scraper to access more than 350,000 document webpages across the 75,000 tenders and search the contents of each page for the keywords \u201cpescado\u201d, \u201cpeixe\u201d, \u201c cacao\u201d (with a space in front) and its variations. We found that around 1,000 tenders contained these keywords. We then checked each tender ourselves to verify if it actually included shark meat (false positives could arise, for example, from words like indica\u00e7\u00e3o being split by a line break) and, if so, recorded the purchase details in our own spreadsheet. We ended up with 701 confirmed shark meat tenders from this portal.<\/p>\n<p>Minas Gerais<\/p>\n<p>Portal search page: <a href=\"https:\/\/www1.compras.mg.gov.br\/processocompra\/pregao\/consulta\/consultaPregoes.html\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/www1.compras.mg.gov.br\/processocompra\/pregao\/consulta\/consultaPregoes.html<\/a><\/p>\n<p>This portal was relatively easier to tackle, but we needed a VPN to access it from certain locations outside Brazil. Our search in the objeto field using six keywords (alimenta\u00e7\u00e3o, alimenticios, refei\u00e7\u00f5es, refei\u00e7\u00e3o, peixes, pescados) returned close to 900 tenders published since 2009, the earliest available year in this portal. We scraped the details of each tender and downloaded close to 3,000 edital files in various formats.<\/p>\n<p><a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-2.png\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-306633\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-2.png\" alt=\"Search the objeto field using keywords and repeat it for each year as there\u2019s a limit on how many results can be shown in each search.\" width=\"1894\" height=\"817\"  \/><\/a>Search the objeto field using keywords and repeat it for each year, as there\u2019s a limit on how many results can be shown in each search.<br \/>\n<a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Screenshot-3.jpg\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-306634\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Screenshot-3.jpg\" alt=\"For each tender in the list of search results, click the magnifying glass icon to open the tender page.\" width=\"1909\" height=\"705\"  \/><\/a>For each tender in the list of search results, click the magnifying glass icon to open the tender page.<br \/>\n<a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-4.png\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-306635\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/screenshot-4.png\" alt=\"Scrape the tender data and download the attachments under the field \u201cEdital do preg\u00e3o\u201d and search those for ca\u00e7\u00e3o.\" width=\"1896\" height=\"817\"  \/><\/a>Scrape the tender data and download the attachments under the field \u201cEdital do preg\u00e3o\u201d and search those for ca\u00e7\u00e3o.<\/p>\n<p>We converted all DOC and DOCX files to PDF. Then we wrote another Python script to search through the attachments and identify those with the words \u201c cacao\u201d and \u201c ca\u00e7\u00e3o\u201d. For files that couldn\u2019t be converted to PDF, we did the same but manually. We reviewed these documents ourselves to verify if they mentioned shark meat and were able to confirm 22 tenders.<\/p>\n<p>Rio de Janeiro<\/p>\n<p>Portal main page: <a href=\"https:\/\/compras.rj.gov.br\/\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/compras.rj.gov.br\/<\/a><\/p>\n<p>Search panel for concluded tenders: <a href=\"https:\/\/compras.rj.gov.br\/EditaisLicitacoes\/listar.action?origemIndex=true\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/compras.rj.gov.br\/EditaisLicitacoes\/listar.action?origemIndex=true<\/a><\/p>\n<p>Search panel ongoing tenders: <a href=\"https:\/\/compras.rj.gov.br\/EditaisLicitacoes\/listar.action?origemIndex=true\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">https:\/\/compras.rj.gov.br\/EditaisLicitacoes\/listar.action?origemIndex=true<\/a><\/p>\n<p>Here again we focused on the objeto field. Searching for \u201c ca\u00e7\u00e3o\u201d (with a space in front) yielded two results, both actual shark meat tenders. Peixe and pescado also turned up some results (20 and four, respectively), some of which turned out to be shark meat tenders.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-306642\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Rio-portal-1.png\" alt=\"\" width=\"2450\" height=\"1512\"  \/>Searching for \u201ccacao\u201d in the objeto field yielded two results, both shark meat tenders, though a small number.<\/p>\n<p>Given the small number of results, we experimented with additional search terms and realized we could use the keyword \u201caliment\u201d, as it returned tenders with words like alimentos (foodstuffs), alimenta\u00e7\u00e3o (nutrition) and aliment\u00edcios (food-related) in the objeto, to find additional shark meat tenders. At this point, it was too late to go back and redo the S\u00e3o Paulo portal with this search term, but we applied it going forward and it proved the most fruitful overall. (Congelado, meaning frozen, and refei\u00e7 for refei\u00e7\u00f5es\/refei\u00e7\u00e3o, meaning meals\/meal, along with carne, also helped us find shark meat tenders in some portals.)<\/p>\n<p>Searching for \u201caliment\u201d turned up 467 results. This portal allowed the user to export search results as a spreadsheet where the items for each tender were visible and searchable, enabling us to easily determine which ones had shark meat. Given the relatively small number of results, it would have taken longer to devise a scraping method than to search it ourselves, so we did it manually. Our process was as follows:<\/p>\n<p>Search for \u201caliment\u201d in the objeto field.<br \/>\nSet the portal to show 100 results per page (the maximum amount).<br \/>\nExport the data into a spreadsheet.<br \/><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-306643\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Rio-portal-2.png\" alt=\"\" width=\"2444\" height=\"1512\"  \/><br \/>\nGo to the second results page (101-200) and export that data into another spreadsheet. Repeat for each results page.<br \/><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-306644\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Rio-portal-3.png\" alt=\"\" width=\"2470\" height=\"1120\"  \/><br \/>\nFor each exported spreadsheet, go to the sheet titled Items\/Lote, and do a text search for \u201c cacao\u201d (with a space in front of it) to identify any shark meat tenders.<br \/><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-306645\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/Rio-portal-4.png\" alt=\"\" width=\"2046\" height=\"1538\"  \/><\/p>\n<p>In this way, we identified tenders with ca\u00e7\u00e3o on the items list. For each such tender, we found its page on the portal, confirmed whether the tender had proceeded to the award stage (some were cancelled before the award stage and therefore omitted from our data), and if so, logged the other data points we wanted, such as supplier name, final price, final amount, etc. This often entailed downloading and reviewing documents like the edital.<\/p>\n<p>Our experience with this portal drove home the point that automating the process with scrapers and coding scripts only made sense if there were enough results, as with S\u00e3o Paulo state, that doing so would actually save us significant time. For most portals, it seemed more efficient for our purposes to search them manually, so that\u2019s what we ended up doing from this point on.<\/p>\n<p>Other data sources<\/p>\n<p>Besides those four states, we manually reviewed dozens of additional municipal and state transparency portals. For a list of the portals where we found shark meat tenders, see the \u201cList of data sources\u201d <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/10tGBFMPgubebCyx35M4I3vDByycxZb6fHcXUw4C8j7M\/edit?gid=1573103859#gid=1573103859\" target=\"_blank\" rel=\"noopener external nofollow\" data-wpel-link=\"external\">in this spreadsheet<\/a>.<\/p>\n<p>Our means of choosing additional portals to look at wasn\u2019t particularly systematic. We tried to examine most of the biggest cities and states in Brazil, giving their portals at least a cursory look to see if we could quickly identify shark meat tenders.<\/p>\n<p>Google, with its advanced search functionality, proved useful in identifying shark meat tenders, often in small towns where we wouldn\u2019t have looked otherwise. Google searches like <a href=\"https:\/\/www.google.com\/search?q=%22Secretaria+*+saude%22+%2B+%22peixe+ca%C3%A7%C3%A3o%22+%2B+Edital&amp;sca_esv=93bef3ff74676049&amp;biw=1367&amp;bih=725&amp;ei=ib61Z6LWNvKZ1sQPl9u82Qg&amp;ved=0ahUKEwjivo6Vz8-LAxXyjJUCHZctL4s4HhDh1QMIEA&amp;uact=5&amp;oq=%22Secretaria+*+saude%22+%2B+%22peixe+ca%C3%A7%C3%A3o%22+%2B+Edital&amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiLyJTZWNyZXRhcmlhICogc2F1ZGUiICsgInBlaXhlIGNhw6fDo28iICsgRWRpdGFsSJEIUMQDWPAGcAF4AJABAJgBAKABAKoBALgBA8gBAPgBAZgCAKACAJgDAIgGAZIHAKAHAA&amp;sclient=gws-wiz-serp\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">this<\/a>, <a href=\"https:\/\/www.google.com\/search?q=%22Secretaria%22+%2B+%22peixe+*+ca%C3%A7%C3%A3o%22+%2B+ata&amp;sca_esv=93bef3ff74676049&amp;biw=1367&amp;bih=725&amp;ei=AMW2Z86qIfTC5OUPxaDOkAk&amp;ved=0ahUKEwjOqo68ydGLAxV0IbkGHUWQE5I4bhDh1QMIEA&amp;uact=5&amp;oq=%22Secretaria%22+%2B+%22peixe+*+ca%C3%A7%C3%A3o%22+%2B+ata&amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiJiJTZWNyZXRhcmlhIiArICJwZWl4ZSAqIGNhw6fDo28iICsgYXRhMgUQIRigATIFECEYoAEyBRAhGKABMgUQIRigAUiRQFD4A1j9PnACeACQAQCYAZ0EoAGxIqoBBzMtMS40LjS4AQPIAQD4AQGYAgSgAt0OwgIIECEYoAEYwwSYAwCIBgGSBwUzLTEuM6AHkiQ&amp;sclient=gws-wiz-serp\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">this<\/a> and <a href=\"https:\/\/www.google.com\/search?q=%22rio+grande+do+sul%22+%22ca%C3%A7%C3%A3o%22+%22Preg%C3%A3o%22&amp;sca_esv=cb6be2574d62bc92&amp;biw=1470&amp;bih=759&amp;ei=DH6vaK_-PJ63ptQPv8upiQI&amp;ved=0ahUKEwivtIfp_KuPAxWem4kEHb9lKiE4ChDh1QMIEQ&amp;uact=5&amp;oq=%22rio+grande+do+sul%22+%22ca%C3%A7%C3%A3o%22+%22Preg%C3%A3o%22&amp;gs_lp=Egxnd3Mtd2l6LXNlcnAiJyJyaW8gZ3JhbmRlIGRvIHN1bCIgImNhw6fDo28iICJQcmVnw6NvIjIIEAAYgAQYogQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogQyCBAAGKIEGIkFSKsUUHtY6Q9wAXgAkAEAmAGOAaAB5gWqAQMzLjS4AQPIAQD4AQGYAgagAvgDwgILEAAYgAQYsAMYogTCAgsQABiwAxiiBBiJBZgDAIgGAZAGBZIHAzQuMqAHph6yBwMzLjK4B_UDwgcFMC4zLjPIBxQ&amp;sclient=gws-wiz-serp\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">this<\/a> threw up links to procurements in many jurisdictions, and when we found a shark meat tender that way, we could go directly to the jurisdiction\u2019s portal to see if we could find more.<\/p>\n<p>Compiling the recipients<\/p>\n<p>Besides establishing that public procurements of shark meat were widespread, we also wanted to determine precisely where the meat was being served.<\/p>\n<p>Some tenders made this clear in the objeto field. For example, each tender from the S\u00e3o Paulo state prison system was usually to buy food for a single penitentiary, so if shark meat appeared on the items list, we knew right away which facility was getting it. Most tenders, though, procured foodstuffs for multiple sites at once, and in some cases for different kinds of institutions overseen by different government agencies. In those cases, we didn\u2019t just want to confirm that the tender included shark meat \u2014 we also aimed to identify the particular schools, hospitals or other institutions that the shark meat was being purchased for.<\/p>\n<p>In many cases, this was easier said than done. Complicating factors included:<\/p>\n<p>The list of recipient units wasn\u2019t uploaded for every tender.<br \/>\nWhen it was available, the recipient list could usually be found somewhere in the edital or terms of reference, which itself consisted of multiple annexes. But these documents could be hundreds of pages long, and the recipient list might appear in any number of places within them, and with inconsistent formatting.<br \/>\nEven if the recipient units were named, it wasn\u2019t always clear which facilities were getting which foodstuffs. In some cases, the tender did specify which products were for which facilities \u2014 the Paran\u00e1 state portal, for example, was very clear about this. We wrote to the contracting agencies behind a few dozen of the biggest tenders to ask which units got shark meat in the tenders we found (among other questions), but most didn\u2019t respond. If we couldn\u2019t say for sure which units got the shark meat in a given tender, we included every unit it named on our master recipients list. For that reason, that list should be considered a list of sites that potentially, rather than definitively, received shark meat.<\/p>\n<p>Once we had the recipient lists from the various tenders, we had to extract the unit names for inclusion on our own master list. Since the lists were usually in PDF or, less often, DOC format, we had to use conversion tools to convert the lists into machine-readable format as CSV (comma-separated values) files. We used a combination of tools to carry this out: Google Drive (by opening PDF files with Google Docs), <a href=\"https:\/\/tabula.technology\/\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">Tabula<\/a> (open source) and <a href=\"https:\/\/www.extracttable.com\/pro.html\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">ExtractTable<\/a> (paid).<\/p>\n<p>The lists were often messy. For example, some included just the unit names, while others had details like addresses and contact information. These details might be written in a table or a single line of text. In some cases, we had to split the name, street address, neighborhood and other details before the unit could be recorded in our master list, which we published as a searchable table at the bottom of our <a href=\"https:\/\/news.mongabay.com\/custom-story\/2025\/07\/that-fish-on-the-menu-in-brazils-schools-and-prisons-its-often-shark\/\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">first article<\/a>.<\/p>\n<p>We also had to remove duplicates from our master list, as our goal was to count the number of unique recipients, and many recipients appeared in multiple tenders. In some cases, the same recipient showed up in different tenders with its name written slightly differently, or with a typo in its name that made it look like a different recipient. There were also distinct entities with very similar names; two schools named after the same public figure in different cities, for example. We had to ensure we weren\u2019t double-counting.<\/p>\n<p>To address this, we used the <a href=\"https:\/\/guides.library.illinois.edu\/openrefine\/clustering\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">clustering function<\/a> in <a href=\"https:\/\/openrefine.org\/\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">OpenRefine<\/a>, an open-source tool designed to work with messy data, to group recipients with similar names together. Then we manually compared their addresses, neighborhoods, municipalities and states to determine if they were duplicates. It was a painstaking but necessary process to bulletproof the integrity of our data. All told, we identified 5,900 unique recipients.<\/p>\n<p>Next, we manually classified those units into several categories: school, prison, health care, military, social services, police, and other, which was helpful for data visualization purposes.<\/p>\n<p>For the 5,391 schools we identified, we wanted to know how many offered early childhood education, given the risks of heavy metals for young children. This turned out to be a problem that we didn\u2019t manage to solve completely. Since government schools can be managed by municipal, state or federal agencies, there\u2019s no central database that says whether a particular school has early childhood education, so we needed to check the schools one by one.<\/p>\n<p>First, we tried running the school names through large language models (LLMs) like ChatGPT Pro, Claude and Google Gemini. We asked the LLM to search the internet for each school, visit websites that mention the school, read the websites to produce a summary of the school and determine if the school offers early childhood education. The results were unreliable; we caught the LLMs making up fake websites or mixing up one school with another.<\/p>\n<p>We ultimately devised a quicker solution that could verify a large number of schools without checking them one by one. Most of the school names had an acronym indicating the type of school, and some of the acronyms indicated the offering of early childhood education. For example, CMEI (centro municipal de educa\u00e7\u00e3o infantil) means municipal center for early childhood education; EMEIF (escola municipal de educa\u00e7\u00e3o infantil e fundamental) means municipal school of early childhood and elementary education; and UMEI (unidade municipal de educa\u00e7\u00e3o infantil) means municipal early childhood education unit. School names with the word creche (daycare) were also clearly for young children. Based on such acronyms as well as some supplementary Google searches, we identified 1,153 schools catering to young children among the 5,391 schools on our recipients\u2019 list. There may be more; we didn\u2019t have time to check them all. But the data clearly show that shark meat going to early childhood education centers is a widespread phenomenon. This helped inform the interviews with government officials that we did after gathering the data.<\/p>\n<p>Limitations<\/p>\n<p>Our final list of 1,012 Brazilian shark meat tenders should be taken as a floor, with the true number issued likely to be significantly higher. Reasons include:<\/p>\n<p>We lacked the capacity to review the portal from every state and municipality in Brazil (far from it).<br \/>\nEven in the portals we did search, there could be many more shark meat tenders that we didn\u2019t find.<br \/>\nNot all portals have published tenders from 2004. For example, the Minas Gerais portal only had tenders since 2009.<br \/>\nWe found some tenders seeking to procure \u201cfish\u201d without specifying the type, raising the possibility that shark meat was purchased via these tenders as well.<br \/>\nSome tenders had items requesting \u201cshark meat OR tilapia,\u201d \u201cshark meat OR hake fish,\u201d etc. Tenders for around 20 hospitals under the Minas Gerais state health agency were like this, for example. We omitted such tenders from our final data set, but they may have ended up procuring shark meat.<br \/>\nThe tenders in our data set are almost all direct purchases, where an agency orders a specific amount of shark meat. But we also found many tenders using the outsourcing model, where a company is contracted to provide meals for a school system, a prison, etc., over a certain time period. In some cases, it\u2019s possible to see in the edital or terms of reference that shark meat is part of the meal plan, and we included those tenders in our database, with no figure listed for the amount of shark meat procured. In many cases, though, tenders using the outsourcing model didn\u2019t have clear information about what was to be served. Oftentimes they included \u201cfish\u201d without mentioning the kind, for example. These tenders seem to have become more common in recent years.<\/p>\n<p>From another perspective, the approximately 5,400 metric tons of shark meat from the 1,012 tenders in our data set could be viewed as a ceiling, because tender quantities represent maximum supply volumes, and actual deliveries over the course of the contract period may be lower or even zero. Some portals had delivery notices available for download, but many didn\u2019t. Even if they were available, there could be hundreds just for a single tender, so we didn\u2019t review those as part of our investigation.<\/p>\n<p>The 1,012 tenders in our data set only include tenders that advanced to the award stage, where a winning bidder was chosen to supply a particular amount of shark meat at a certain price. We found many calls for tender that included shark meat but where the tender was cancelled for some reason, or where no supplier was chosen for the shark meat item, so we didn\u2019t include those in our data.<\/p>\n<p>For the relatively small number of tenders that had incomplete information in terms of the amount ordered, the amount paid and\/or the recipient units, we included them in our data set but excluded the missing information from our analysis.<\/p>\n<p>Other issues we dealt with as we encountered. For example, the biggest tender in our data set, issued in 2022 by the Paran\u00e1 state education department to procure shark meat and other foods for 2,250 schools, had a blurry list of recipient units. We could see how many schools there were but couldn\u2019t read their names. We therefore added 2,250 schools to our tally of units that potentially received shark meat, but couldn\u2019t assess how many offered early childhood education. In this case, the head of the department confirmed in an email that the shark meat was procured for all 2,250 schools.<\/p>\n<p>Our analysis did not extend to Brazil\u2019s federal transparency portal. Instead, we referenced a <a href=\"https:\/\/www.documentcloud.org\/documents\/26025984-investigacao-compras-publicas-tubarao-2024docx\/\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external nofollow noopener\">separate analysis by Sea Shepherd<\/a>, done at the same time as our investigation, that looked at federal procurements issued from 2021-2024 and found an additional 866 shark meat tenders totaling 231 metric tons of ca\u00e7\u00e3o. Our data set of municipal and state-level shark meat tenders does not include these procurements.<\/p>\n<p><a href=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/boxes.jpg\" data-wpel-link=\"external\" target=\"_blank\" rel=\"external\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-303852\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/boxes.jpg\" alt=\"Authorities discovered an illegal processing station for angelshark and other protected species in a house in Gua\u00edba, Rio Grande do Sul state, earlier this year. Image courtesy of Igor de Almeida Sema-RS.\" width=\"915\" height=\"516\"  \/><\/a>Authorities discovered an illegal processing station for angelshark and other protected species in a house in Gua\u00edba, Rio Grande do Sul state, earlier this year. Image courtesy of Igor de Almeida Sema-RS.<br \/>\nLessons learned<\/p>\n<p>Many governments tout their transparency portals as evidence of transparency and accountability. But if the portals are not user-friendly, they are merely window dressing. Our experience collecting procurement data from more than 60 Brazilian municipal and state transparency portals exposed various problems, including slow loading, poor usability (limited search functions), confusing interfaces, inconsistent data, and no options to batch download data. If a journalist or researcher wants to compile data from such databases, they should make sure to allocate the time and resources needed to figure out how to deal with each portal, as such operations are often harder than they might seem.<\/p>\n<p>LLMs are still unreliable when it comes to complex, multistep tasks. Our attempt to use LLMs to verify if a school offers early childhood education did not yield satisfactory results despite iterating the prompts through both chat interfaces and application programming interfaces (APIs), which translate requests between different applications. Although most results seemed accurate, hallucinations and mistakes still occurred, which could have affected the accuracy of our analysis had we used them.<\/p>\n<p>We used ChatGPT Pro for one simple task, which was to understand the different acronyms in school names and whether early childhood education is offered by different school categories. We then reviewed the results and found that they were accurate.<\/p>\n<p>While we were able to establish that shark meat tenders are in fact widespread in Brazil, and which government agencies and public institutions are buying and receiving shark meat, it was less clear from the portals what species of shark were being procured. The vast majority of tenders asked simply for ca\u00e7\u00e3o, without specifying a species. This itself became a major finding in our story, as experts told us that the lack of clarity in the tender process meant endangered species could be making their way into government procurements. As we scoured the tenders, moreover, we realized that some agencies in Rio Grande do Sul state were asking for peixe anjo, which literally means \u201cangel fish\u201d and is a reference to threatened angelsharks (genus Squatina). This became the subject of a <a href=\"https:\/\/news.mongabay.com\/custom-story\/2025\/08\/revealed-brazilian-state-buys-endangered-angelsharks-for-school-lunches\/?_thumbnail_id=303842\" target=\"_blank\" rel=\"noopener nofollow\" data-wpel-link=\"internal\">follow-up story<\/a>. Some government officials in charge of these procurements told us they weren\u2019t aware they were buying angelshark and they wouldn\u2019t purchase it going forward. Some government nutritionists also told us they didn\u2019t know ca\u00e7\u00e3o meant shark. The word tubar\u00e3o, meaning shark in Portuguese, was virtually never mentioned in these tenders.<\/p>\n<p>We wrote this article and explained our methodology in detail with the hope that other journalists reporting in different states and municipalities in Brazil \u2014 and, perhaps, in other countries where shark meat consumption is known to be widespread \u2014 can replicate or adapt the approach to investigate purchases of shark meat (or other goods). If you have questions about the methodology, please get in touch with us.<\/p>\n<p>Banner image: Shark meat is prepared for distribution at CEAGESP in S\u00e3o Paulo, the largest food warehouse in Latin America. Image by Philip Jacobson.<\/p>\n<p><a href=\"https:\/\/news.mongabay.com\/2025\/08\/mongabay-shark-meat-expose-sparks-call-for-hearing-and-industry-debate\/\" data-wpel-link=\"internal\" rel=\"nofollow noopener\" target=\"_blank\">Mongabay shark meat expos\u00e9 sparks call for hearing and industry debate<\/a><\/p>\n<p>                    <img alt=\"\" src=\"https:\/\/www.newsbeep.com\/ca\/wp-content\/uploads\/2025\/10\/9ad8c16344913da83c7915b85cfde3bbae07708c472b1bb5ed0e966bb1b28204\"  class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\" loading=\"lazy\" decoding=\"async\"\/>        <\/p>\n<p>                            &#13;<br \/>\n                            <a href=\"\" data-wpel-link=\"internal\"\/>&#13;<br \/>\n&#13;<br \/>\n                            &#13;<br \/>\n        &#13;<\/p>\n","protected":false},"excerpt":{"rendered":"&#13; A recent Mongabay investigation found widespread government purchases of shark meat in Brazil to serve in thousands&hellip;\n","protected":false},"author":2,"featured_media":187031,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[49,48,66,323],"class_list":{"0":"post-187030","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-wildlife","8":"tag-ca","9":"tag-canada","10":"tag-science","11":"tag-wildlife"},"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/187030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/comments?post=187030"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/posts\/187030\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media\/187031"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/media?parent=187030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/categories?post=187030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ca\/wp-json\/wp\/v2\/tags?post=187030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}