def smart_convert(data_string):
    """
    Attempts to convert a raw string into the following data types, returns the first successful:
        int, float, boolean, str
    """
    value = data_string.strip()
    type_list = [int, float]
    for var_type in type_list:
        try:
            converted_var = var_type(value)
            return converted_var
        except ValueError:
            pass
    if value == 'True':
        return True
    if value == 'False':
        return False
    return str(value)
