<!DOCTYPE html> <html <?php language_attributes(); ?>> <head> <meta charset="<?php bloginfo( 'charset' ); ?>" /> <?php elegant_description(); elegant_keywords(); elegant_canonical(); /** * Fires in the head, before {@see wp_head()} is called. This action can be used to * insert elements into the beginning of the head before any styles or scripts. * * @since 1.0 */ do_action( 'et_head_meta' ); $template_directory_uri = get_template_directory_uri(); ?> <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" /> <script type="text/javascript"> document.documentElement.className = 'js'; </script> <?php wp_head(); ?> </head> <body <?php body_class(); ?>> <?php wp_body_open(); $product_tour_enabled = et_builder_is_product_tour_enabled(); $page_container_style = $product_tour_enabled ? ' style="padding-top: 0px;"' : ''; ?> <div id="page-container"<?php echo et_core_intentionally_unescaped( $page_container_style, 'fixed_string' ); ?>> <?php if ( $product_tour_enabled || is_page_template( 'page-template-blank.php' ) ) { return; } $et_secondary_nav_items = et_divi_get_top_nav_items(); $et_phone_number = $et_secondary_nav_items->phone_number; $et_email = $et_secondary_nav_items->email; $et_contact_info_defined = $et_secondary_nav_items->contact_info_defined; $show_header_social_icons = $et_secondary_nav_items->show_header_social_icons; $et_secondary_nav = $et_secondary_nav_items->secondary_nav; $et_top_info_defined = $et_secondary_nav_items->top_info_defined; $et_slide_header = 'slide' === et_get_option( 'header_style', 'left' ) || 'fullscreen' === et_get_option( 'header_style', 'left' ) ? true : false; $show_search_icon = ( false !== et_get_option( 'show_search_icon', true ) && ! $et_slide_header ) || is_customize_preview(); ?> <?php if ( $et_top_info_defined && ! $et_slide_header || is_customize_preview() ) : ?> <?php ob_start(); ?> <div id="top-header"<?php echo $et_top_info_defined ? '' : 'style="display: none;"'; ?>> <div class="container clearfix"> <?php if ( $et_contact_info_defined ) : ?> <div id="et-info"> <?php if ( ! empty( $et_phone_number = et_get_option( 'phone_number' ) ) ) : ?> <span id="et-info-phone"><?php echo et_core_esc_previously( et_sanitize_html_input_text( strval( $et_phone_number ) ) ); ?></span> <?php endif; ?> <?php if ( ! empty( $et_email = et_get_option( 'header_email' ) ) ) : ?> <a href="<?php echo esc_attr( 'mailto:' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a> <?php endif; ?> <?php if ( true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } ?> </div> <?php endif; // true === $et_contact_info_defined ?> <div id="et-secondary-menu"> <?php if ( ! $et_contact_info_defined && true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } else if ( $et_contact_info_defined && true === $show_header_social_icons ) { ob_start(); get_template_part( 'includes/social_icons', 'header' ); $duplicate_social_icons = ob_get_contents(); ob_end_clean(); printf( '<div class="et_duplicate_social_icons"> %1$s </div>', et_core_esc_previously( $duplicate_social_icons ) ); } if ( '' !== $et_secondary_nav ) { echo et_core_esc_wp( $et_secondary_nav ); } et_show_cart_total(); ?> </div> </div> </div> <?php $top_header = ob_get_clean(); /** * Filters the HTML output for the top header. * * @since 3.10 * * @param string $top_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_top_header', $top_header ), 'html' ); ?> <?php endif; // true ==== $et_top_info_defined ?> <?php if ( $et_slide_header || is_customize_preview() ) : ?> <?php ob_start(); ?> <div class="et_slide_in_menu_container"> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) || is_customize_preview() ) { ?> <span class="mobile_menu_bar et_toggle_fullscreen_menu"></span> <?php } ?> <?php if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( 'show_search_icon', true ) || class_exists( 'woocommerce' ) || is_customize_preview() ) { ?> <div class="et_slide_menu_top"> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) ) { ?> <div class="et_pb_top_menu_inner"> <?php } ?> <?php } if ( true === $show_header_social_icons ) { get_template_part( 'includes/social_icons', 'header' ); } et_show_cart_total(); ?> <?php if ( false !== et_get_option( 'show_search_icon', true ) || is_customize_preview() ) : ?> <?php if ( 'fullscreen' !== et_get_option( 'header_style', 'left' ) ) { ?> <div class="clear"></div> <?php } ?> <form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <?php printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />', esc_attr__( 'Search …', 'Divi' ), get_search_query(), esc_attr__( 'Search for:', 'Divi' ) ); /** * Fires inside the search form element, just before its closing tag. * * @since ?? */ do_action( 'et_search_form_fields' ); ?> <button type="submit" id="searchsubmit_header"></button> </form> <?php endif; // true === et_get_option( 'show_search_icon', false ) ?> <?php if ( $et_contact_info_defined ) : ?> <div id="et-info"> <?php if ( ! empty( $et_phone_number = et_get_option( 'phone_number' ) ) ) : ?> <span id="et-info-phone"><?php echo et_core_esc_previously( et_sanitize_html_input_text( strval( $et_phone_number ) ) ); ?></span> <?php endif; ?> <?php if ( ! empty( $et_email = et_get_option( 'header_email' ) ) ) : ?> <a href="<?php echo esc_attr( 'mailto:' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a> <?php endif; ?> </div> <?php endif; // true === $et_contact_info_defined ?> <?php if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( 'show_search_icon', true ) || class_exists( 'woocommerce' ) || is_customize_preview() ) { ?> <?php if ( 'fullscreen' === et_get_option( 'header_style', 'left' ) ) { ?> </div> <?php } ?> </div> <?php } ?> <div class="et_pb_fullscreen_nav_container"> <?php $slide_nav = ''; $slide_menu_class = 'et_mobile_menu'; $slide_nav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '', 'fallback_cb' => '', 'echo' => false, 'items_wrap' => '%3$s' ) ); $slide_nav .= wp_nav_menu( array( 'theme_location' => 'secondary-menu', 'container' => '', 'fallback_cb' => '', 'echo' => false, 'items_wrap' => '%3$s' ) ); ?> <ul id="mobile_menu_slide" class="<?php echo esc_attr( $slide_menu_class ); ?>"> <?php if ( '' === $slide_nav ) : ?> <?php if ( 'on' === et_get_option( 'divi_home_link' ) ) { ?> <li <?php if ( is_home() ) echo( 'class="current_page_item"' ); ?>><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php esc_html_e( 'Home', 'Divi' ); ?></a></li> <?php }; ?> <?php show_page_menu( $slide_menu_class, false, false ); ?> <?php show_categories_menu( $slide_menu_class, false ); ?> <?php else : echo et_core_esc_wp( $slide_nav ) ; endif; ?> </ul> </div> </div> <?php $slide_header = ob_get_clean(); /** * Filters the HTML output for the slide header. * * @since 3.10 * * @param string $top_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_slide_header', $slide_header ), 'html' ); ?> <?php endif; // true ==== $et_slide_header ?> <?php ob_start(); ?> <header id="main-header" data-height-onload="<?php echo esc_attr( et_get_option( 'menu_height', '66' ) ); ?>"> <div class="container clearfix et_menu_container"> <?php $logo = ( $user_logo = et_get_option( 'divi_logo' ) ) && ! empty( $user_logo ) ? $user_logo : $template_directory_uri . '/images/logo.png'; // Get logo image size based on attachment URL. $logo_size = et_get_attachment_size_by_url( $logo ); $logo_width = ( ! empty( $logo_size ) && is_numeric( $logo_size[0] ) ) ? $logo_size[0] : '93'; // 93 is the width of the default logo. $logo_height = ( ! empty( $logo_size ) && is_numeric( $logo_size[1] ) ) ? $logo_size[1] : '43'; // 43 is the height of the default logo. ob_start(); ?> <div class="logo_container"> <span class="logo_helper"></span> <a href="<?php echo esc_url( home_url( '/' ) ); ?>"> <img src="<?php echo esc_attr( $logo ); ?>" width="<?php echo esc_attr( $logo_width ); ?>" height="<?php echo esc_attr( $logo_height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name' ) ); ?>" id="logo" data-height-percentage="<?php echo esc_attr( et_get_option( 'logo_height', '54' ) ); ?>" /> </a> </div> <?php $logo_container = ob_get_clean(); /** * Filters the HTML output for the logo container. * * @since 3.10 * * @param string $logo_container */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_logo_container', $logo_container ), 'html' ); ?> <div id="et-top-navigation" data-height="<?php echo esc_attr( et_get_option( 'menu_height', '66' ) ); ?>" data-fixed-height="<?php echo esc_attr( et_get_option( 'minimized_menu_height', '40' ) ); ?>"> <?php if ( ! $et_slide_header || is_customize_preview() ) : ?> <nav id="top-menu-nav"> <?php $menuClass = 'nav'; if ( 'on' === et_get_option( 'divi_disable_toptier' ) ) $menuClass .= ' et_disable_top_tier'; $primaryNav = ''; $primaryNav = wp_nav_menu( array( 'theme_location' => 'primary-menu', 'container' => '', 'fallback_cb' => '', 'menu_class' => $menuClass, 'menu_id' => 'top-menu', 'echo' => false ) ); if ( empty( $primaryNav ) ) : ?> <ul id="top-menu" class="<?php echo esc_attr( $menuClass ); ?>"> <?php if ( 'on' === et_get_option( 'divi_home_link' ) ) { ?> <li <?php if ( is_home() ) echo( 'class="current_page_item"' ); ?>><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php esc_html_e( 'Home', 'Divi' ); ?></a></li> <?php }; ?> <?php show_page_menu( $menuClass, false, false ); ?> <?php show_categories_menu( $menuClass, false ); ?> </ul> <?php else : echo et_core_esc_wp( $primaryNav ); endif; ?> </nav> <?php endif; ?> <?php if ( ! $et_top_info_defined && ( ! $et_slide_header || is_customize_preview() ) ) { et_show_cart_total( array( 'no_text' => true, ) ); } ?> <?php if ( $et_slide_header || is_customize_preview() ) : ?> <span class="mobile_menu_bar et_pb_header_toggle et_toggle_<?php echo esc_attr( et_get_option( 'header_style', 'left' ) ); ?>_menu"></span> <?php endif; ?> <?php if ( $show_search_icon ) : ?> <div id="et_top_search"> <span id="et_search_icon"></span> </div> <?php endif; ?> <?php /** * Fires at the end of the 'et-top-navigation' element, just before its closing tag. * * @since 1.0 */ do_action( 'et_header_top' ); ?> </div> <!-- #et-top-navigation --> </div> <!-- .container --> <?php if ( $show_search_icon ) : ?> <div class="et_search_outer"> <div class="container et_search_form_container"> <form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <?php printf( '<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />', esc_attr__( 'Search …', 'Divi' ), get_search_query(), esc_attr__( 'Search for:', 'Divi' ) ); /** * Fires inside the search form element, just before its closing tag. * * @since ?? */ do_action( 'et_search_form_fields' ); ?> </form> <span class="et_close_search_field"></span> </div> </div> <?php endif; ?> </header> <!-- #main-header --> <?php $main_header = ob_get_clean(); /** * Filters the HTML output for the main header. * * @since 3.10 * * @param string $main_header */ echo et_core_intentionally_unescaped( apply_filters( 'et_html_main_header', $main_header ), 'html' ); ?> <div id="et-main-area"> <?php /** * Fires after the header, before the main content is output. * * @since 3.10 */ do_action( 'et_before_main_content' );

Automatyczna analiza surowców i weryfikacja INCI w minuty zamiast godzin.

Od masowego skanowania paczek TDS/MSDS po chirurgiczny audyt stężeń składników z bazą CosIng.

Uwolnij przewagę, jaką daje Searchby.App w automatycznej analizie dokumentacji surowcowej.

Zostaw nam żmudne wydłubywanie danych. Odzyskaj czas specjalistów i przyspiesz podejmowanie decyzji w obszarze R&D, jakości oraz rozwoju nowych produktów.

Uwolnij czas specjalistów

Pomagamy Twoim specjalistom skupić się na tym, co najważniejsze — decyzjach technologicznych, jakości i tworzeniu nowych produktów.
Searchby.APP przejmuje czasochłonną analizę dokumentacji, wyszukiwanie informacji i weryfikację danych.

Skróć time-to-market

Automatyzacja eliminuje wielogodzinne zadania manualne, pozwalając szybciej podejmować decyzje technologiczne, sprawniej wdrażać zamienniki i skracać drogę nowego produktu do rynku.

Szybki zwrot z inwestycji

Automatyzacja powtarzalnych zadań przekłada się na niższe koszty operacyjne, szybsze wdrażanie produktów i wymierne oszczędności już od pierwszych miesięcy użytkowania.

Uprzedź konkurencję

W branży kosmetycznej przewagę zyskują firmy, które szybciej kwalifikują surowce, sprawniej weryfikują zgodność składów i krócej wprowadzają nowe produkty na rynek. Czy Twoja konkurencja już wykorzystuje narzędzia do automatycznej analizy dokumentacji surowcowej? Sprawdź nasze case study.

Poznaj moduły R&D uwalniające w średniej wielkości fabryce 500 godzin rocznie!

MODUŁ 1. Automatyczna analiza danych o surowcach.

Wrzuć całą paczkę plików ZIP bezpośrednio do Panelu SBA. System automatycznie wyciągnie składy INCI, zidentyfikuje zanieczyszczenia i prześle czyste dane prosto do poliku Excel lub firmowego systemu ERP.

POZNAJ PROCES POZYSKIWANIA DANYCH O SUROWCACH

Krok 1: Masowy upload i automatyczna kolejka

Nie musisz dzielić dokumentów, segregować ich ani tracić czasu na pojedyncze wgrywanie.

  • Wrzucasz całą paczkę (np. plik ZIP z kompletem dokumentacji technicznej dostawcy) bezpośrednio do Panelu SBA.
  • System natychmiast rejestruje pliki i uruchamia zaawansowaną analizę w tle.

Krok 2: Inteligentne mapowanie parametrów i deklaracji (Widok podglądu)

Gdy wchodzisz w szczegóły, Panel SBA daje Ci pełną kontrolę i stuprocentową pewność. Ekran zostaje podzielony na dwie części, eliminując potrzebę skakania po oknach i drukowania dokumentów:

  • Po lewej stronie: Widzisz oryginalny dokument źródłowy od dostawcy (np. certyfikat pochodzenia, kartę charakterystyki czy specyfikację techniczną).
  • Po prawej stronie: Widzisz gotową, ustrukturyzowaną matrycę najważniejszych deklaracji i obostrzeń prawno-chemicznych, które system sam wyciągnął z tekstu.

System automatycznie identyfikuje i kategoryzuje m.in.:

  • Statusy bezwzględne: Natychmiastowe mapowanie deklaracji typu Vegan (TAK/NIE), GMO (TAK/NIE), Metale ciężkie (Heavy Metals) czy substancje CMR (rakotwórcze, mutagenne).
  • Kluczowe alergeny i zanieczyszczenia: Błyskawiczne wychwycenie obecności oleju palmowego (Olej Pal), mikroplastików czy ograniczeń geograficznych (KRP).

 Krok 3: Masowy eksport danych do Excela lub systemu ERP.

Gdy Panel SBA skończy mapowanie, to Ty zatwierdzasz poprawność danych i możesz je ekpsortować do pliku .xls, albo  firmowego systememu ERP. 

Moduł 2: Nadzór Składów INCI i Integracja z CosIng.

Searchby.app automatycznie odczytuje z dokumentacji surowcowej pełny skład INCI, numery CAS oraz zakresy stężeń, eliminując żmudną pracę manualną. W ułamku sekundy system zderza te dane z Twoją wewnętrzną bazą oraz oficjalnym rejestrem CosIng. Dzięki temu natychmiast wykrywasz ciche zmiany w specyfikacjach dostawców i masz 100% pewności regulacyjnej.

POZNAJ TRÓJSTRONNY PROCES ANALIZY INCI:

Jak działa inteligentny moduł weryfikacji INCI i Compliance?

Moduł automatycznego audytu i zarządzania bazą INCI w Searchby.app przekształca pojedynczą specyfikację techniczną surowca w uporządkowane, zweryfikowane prawnie dane gotowe do produkcji. Cały proces zamyka się w 6 kluczowych krokach:

1. Wprowadzenie danych i integracja źródeł (Data Sources)

Proces rozpoczyna się od wgrania dokumentacji. Użytkownik wprowadza do Searchby.app jeden dokument surowcowy – kartę TDS, MSDS lub specyfikację techniczną dostawcy. W tym samym momencie platforma uruchamia trójstronne połączenie: analizuje przesłany plik, odwołuje się do wewnętrznej Bazy Surowców  fabryki oraz na bieżąco synchronizuje dane z oficjalnym europejskim rejestrem regulacyjnym CosIng.

2. Inteligentne przetwarzanie i ekstrakcja danych

Po wprowadzeniu dokumentu algorytmy  działające w tle automatycznie identyfikują i wyodrębniają kluczowe identyfikatory chemiczne oraz parametry handlowe. System precyzyjnie wyciąga:

  • Pełne składy INCI oraz procentowe stężenia lub zakresy stężeń,

  • Numery CAS oraz numery EC (nawet jeśli występują w dokumentacji nieregularnie),

  • Nazwy handlowe i indeksy surowcowe dostawcy.

3. Trójstronna weryfikacja i mapowanie (Single Source of Truth)

To serce modułu. Pozyskane z dokumentu dane są  zderzane jednocześnie z trzema źródłami wiedzy. Na czytelnym dla użytkownika, dzielonym ekranie (Split-Screen UI) system paruje oryginalny tekst dokumentu z ustrukturyzowaną tabelą. Każdy składnik INCI z dokumentu dostawcy otrzymuje automatycznie przypisaną z bazy CosIng funkcję technologiczną (np. solvent, emollient) oraz aktualny status regulacyjny i restrykcje (aneksy UE).

4. Precyzyjny raport porównawczy i kontrola zmian (Change Detection)

System całkowicie eliminuje ryzyko przeoczenia tzw. „cichych zmian” wprowadzanych przez dostawców w nowych wersjach specyfikacji. Searchby.app generuje czytelny raport różnic przypisany do konkretnego indeksu surowcowego, zestawiając dane w strukturze kolumnowej:

  • Porównanie wartości: System bezpośrednio zderza dotychczasowe wartości parametrów (np. Stężenie [%] — w bazie) z nowo odczytanymi danymi (Stężenie [%] — z dokumentu) oraz wskazuje dokładną Wartość źródłową.

  • Kategoryzacja sekcji: Zmiany są automatycznie grupowane w dedykowane sekcje (np. Zmiany stężeń), z precyzyjnym komunikatem, które dokładnie kolumny (Stężenie, Max stężenie, Nazwa Handlowa) zostaną zaktualizowane, a które pola (CAS, EC, Funkcja, Regulation) pozostają bez zmian.

  • Potwierdzenie stabilności: Informacje o braku modyfikacji w konkretnych sekcjach danych są agregowane w osobnych, czytelnych komunikatach (np. Nazwa handlowa — bez zmian).

5. Ostateczna weryfikacja i kontrola technologa (User Approval)

Automatyzacja wspiera, ale nie zastępuje człowieka. Wszystkie wykryte rozbieżności, nowo uzupełnione funkcje chemiczne oraz statusy compliance trafiają do panelu akceptacji. Technolog R&D lub Safety Assessor zachowuje pełną kontrolę nad procesem – jednym kliknięciem może zatwierdzić rekomendowane aktualizacje, odrzucić zmiany lub wprowadzić własne korekty na bazie wygenerowanych dowodów cyfrowych (page reference).

6. Bezpośrednia synergia z ERP i produkcją (API Integration)

Po zatwierdzeniu przez użytkownika, zweryfikowana struktura INCI staje się „jedynym źródłem prawdy” w firmie. Dane nie muszą być ponownie przepisywane. Poprzez dwukierunkowe API (Two-Way API) system automatycznie aktualizuje kartoteki surowcowe i struktury recepturowe w zewnętrznych systemach ERP (np. Comarch, Sage Symfonia, Streamsoft, Impuls Evo) lub pozwala na szybki eksport czystej matrycy do pliku Excel (XLS).

Integracja z systemami ERP oraz bazami wiedzy o kosmetykach.

Zmniejsz ilość klikania dzięki automatycznemu przesyłowi danych między Searchby, a firmowym systemem ERP.

pl_PLPolski
google-site-verification=U71So92a2lBu_zSRYXhmDXB4cRbgyya0Cb3otoMaVpg