Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import os | |
| def get_questions(stage=None, num_questions=0): | |
| q_and_a_filename = "AIE4_SalesBuddy_QandA.csv" | |
| data = read_csv_from_data_folder(q_and_a_filename) | |
| if data is None: | |
| print(f"Error: Failed to read {q_and_a_filename}") | |
| return [] | |
| questions = [] | |
| for index, row in data.iterrows(): | |
| if stage is not None and row['Stage'] != stage: | |
| continue | |
| question = { | |
| 'stage': row['Stage'], | |
| 'question': row['Customer Question (Provided by Claude)'], | |
| 'ground_truth': row['Ground Truth (Provided by Nitin). Marked as Salesperson 2 by Claude'], | |
| } | |
| if num_questions == 0 or num_questions > len(questions): | |
| print(f"Adding question: {question['question']}") | |
| questions.append(question) | |
| print(f"Returned {len(questions)} questions for stage {stage}") | |
| return questions | |
| def get_customer_background(scenario, customer_name="HSBC" ): | |
| background_filename = f"{customer_name}_background.txt" | |
| data = read_txt_from_data_folder(background_filename) | |
| scenario.customer.background = data | |
| print(f"Read background for {customer_name} - {background_filename}") | |
| def get_company_data(scenario): | |
| company = { | |
| "name": "BetterTech", | |
| "description": """ | |
| Founded by industry experts, BetterTech understands the data analytics challenges faced by financial | |
| institutions across lending desks, risk, and compliance. | |
| BetterTech pioneered the use of high-performance analytics in finance, helping the banks and lenders | |
| make better decisions, explain results with confidence, and simulate the impact of their decisions. | |
| BetterTech’s mission is to deliver train-of-thought analysis on terabytes of data in the most | |
| cost-effective way so clients can explain their results with confidence and model the scenarios | |
| that will optimize their business. BetterTech specializes in risk data analytics for one of the | |
| fastest moving and most regulated industries with a presence in the world’s leading | |
| financial marketplaces - London, New York, Singapore, Sydney, Hong Kong, Paris and Frankfurt. | |
| """, | |
| "product": "BetterTech Lending Analytics Solution", | |
| "product_summary": """ | |
| A comprehensive solution for real-time analysis in lending, surpassing basic regulatory compliance | |
| by enabling reporting, explaining, and optimizing. Deployed as SaaS, on-premise, or in the cloud, it | |
| empowers organizations to improve performance, enhance decision-making, and stay competitive by | |
| simulating various scenarios efficiently and accurately. | |
| """, | |
| "product_description": """ | |
| Real-time analysis with BetterTech Lending Analytics | |
| While most technologies on the market are able to fulfill regulatory risk management requirements, | |
| they often fall short of meeting the team’s actual needs. What works when Lending Analytics calculations | |
| are run weekly or monthly is simply not enough on a day-to-day basis. Maintaining regulations is no | |
| longer enough | |
| There are three functions that an efficient Lending Analytics solution must be able to fulfill: | |
| report, explain and optimize. | |
| Reporting is what every solution made for Lending Analytics can do: calculating risk figures and | |
| generating reports at the right level of aggregation that are ready to be sent to internal and | |
| external auditors. With the data volumes involved with Lending Analytics, however, reporting alone | |
| is simply not enough. Explaining is the most critical need for business users. Regulators ask for | |
| detailed explanations of what is included in the report, request that banks test alternative stress | |
| scenarios, and demonstrate the accuracy of their models — particularly with the Internal Models Approach. | |
| With a solution that only reports, business teams end up scrambling to answer those requests as best | |
| as they can, falling back on other tools such as Excel or PowerBI, which are simply not designed to | |
| analyze data at this scale. Optimizing is where growth and profitability reside. | |
| Lending Analytics framework creates many decision points that are crucial to improving performance: | |
| • How best to organize or reorganize loan portfolios? | |
| • What would be the impact of changing positions or making certain loans? | |
| • How can we improve our models? | |
| BetterTech Lending Analytics handles this level of analysis deftly and can quickly answer these questions. | |
| By relying on inadequate tools to perform analysis, organizations often see reduced productivity and | |
| accuracy. Inaccurate reporting negatively impacts relationships with regulators, potentially leading | |
| to fines, leading to fines. Furthermore, companies that do not have the analytical capabilities to | |
| optimize their risk management and, by extension their capital charge, risk falling behind other, | |
| better equipped organizations. How can you get ahead if you cannot efficiently simulate different | |
| scenarios to choose the best outcome, while your competitors do it dozens of times a day? | |
| A robust analytics solutions that is affordable and easy to implement | |
| BetterTech Lending Analytics is in production today at many banks of all sizes around the world, | |
| including HSBC, Erste Bank, CIBC and Mizuho. It has successfully passed the ISDA Lending Analytics | |
| SA Regulatory Benchmarking Unit Test. It has even been selected by one of the most important global | |
| regulators to serve as the benchmark against which to test other banks’ architectures. | |
| Available as SaaS or on-premise, BetterTech Lending Analytics can run on any Cloud platform or | |
| in-house hardware and be fully deployed within 4 to 6 weeks. | |
| Runs anywhere BetterTech Lending Analytics can be deployed under several configurations that all | |
| bring the same benefits. Reach out to our team of experts to find the setup that will work best for | |
| your organization. | |
| On-premise: BetterTech Lending Analytics can be deployed on a large variety of hardware that are | |
| able to provide the requisite capabilities. We have partnerships in place with most global providers | |
| to ensure compatibility. In the Cloud: We have extensively tested BetterTech Lending Analytics on | |
| all the main cloud platforms (Azure, AWS, Google Cloud...). In fact, it has been deployed in production | |
| on those platforms. | |
| As SaaS: We can provide BetterTech Lending Analytics under a managed services contract. This | |
| configuration offers the fastest time-to-production while giving you complete control over your | |
| investment. The future of market risk analytics Organizations who want to outsmart the competition | |
| """, | |
| } | |
| scenario.add_company_info( | |
| name=company['name'], | |
| description=company['description'], | |
| product=company['product'], | |
| product_summary=company['product_summary'], | |
| product_description=company['product_description'] | |
| ) | |
| def get_q_and_a(): | |
| q_and_a_filename = "AIE4_SalesBuddy_QandA.csv" | |
| data = read_csv_from_data_folder(q_and_a_filename) | |
| return data | |
| def get_opportunities(): | |
| opportunities_filename = "Opportunity_Information.csv" | |
| data = read_csv_from_data_folder(opportunities_filename) | |
| return data | |
| def read_csv_from_data_folder(filename, handle_nan='drop'): | |
| data_folder = "./data/" | |
| file_path = os.path.join(data_folder, filename) | |
| try: | |
| df = pd.read_csv(file_path) | |
| print(f"Successfully read {filename}") | |
| # Handle NaN values | |
| if handle_nan == 'drop': | |
| df = df.dropna() | |
| elif handle_nan == 'fill_na': | |
| df = df.fillna('N/A') | |
| elif handle_nan == 'fill_empty': | |
| df = df.fillna('') | |
| else: | |
| print(f"Warning: Unknown NaN handling method '{handle_nan}'. NaN values were not processed.") | |
| # Reset index if rows were dropped | |
| df = df.reset_index(drop=True) | |
| return df | |
| except FileNotFoundError: | |
| print(f"Error: File '{filename}' not found in the data folder.") | |
| return None | |
| except pd.errors.EmptyDataError: | |
| print(f"Error: File '{filename}' is empty.") | |
| return None | |
| except Exception as e: | |
| print(f"An error occurred while reading '{filename}': {str(e)}") | |
| return None | |
| def read_txt_from_data_folder(filename): | |
| data_folder = "./data/" | |
| file_path = os.path.join(data_folder, filename) | |
| try: | |
| with open(file_path, 'r', encoding='utf-8') as file: | |
| data = file.read() | |
| print(f"Successfully read {filename}") | |
| return data | |
| except FileNotFoundError: | |
| print(f"Error: File '{filename}' not found in the data folder.") | |
| return None | |
| except Exception as e: | |
| print(f"An error occurred while reading '{filename}': {str(e)}") | |
| return None | |