Spaces:
Sleeping
Sleeping
| """ | |
| Task Bank for the Data Extraction Environment. | |
| Each task has: | |
| - id: unique identifier | |
| - difficulty: easy / medium / hard | |
| - description: what the agent needs to do | |
| - raw_text: the messy unstructured text to extract from | |
| - fields_to_extract: list of field names the agent must fill | |
| - extraction_hints: format hints for each field | |
| - ground_truth: the correct extracted values | |
| - field_types: how to grade each field (exact/numeric/contains/fuzzy/list) | |
| These texts are written to be realistic and messy — just like real-world data. | |
| """ | |
| TASKS = [ | |
| # ================================================================ | |
| # EASY TASKS — Clean-ish text, few fields, obvious values | |
| # ================================================================ | |
| { | |
| "id": "easy_1", | |
| "difficulty": "easy", | |
| "description": "Extract contact information from this business card text.", | |
| "raw_text": """ | |
| Rajesh Kumar Verma | |
| Senior Software Engineer | |
| Tata Consultancy Services (TCS) | |
| Email: rajesh.verma@tcs.com | |
| Phone: +91 98765 43210 | |
| Office: Whitefield, Bangalore, Karnataka 560066 | |
| LinkedIn: linkedin.com/in/rajeshverma | |
| """.strip(), | |
| "fields_to_extract": ["name", "job_title", "company", "email", "phone", "city"], | |
| "extraction_hints": ( | |
| "name: full name of the person. " | |
| "job_title: their professional title. " | |
| "company: the organization they work for. " | |
| "email: their email address. " | |
| "phone: phone number including country code. " | |
| "city: the city they are based in." | |
| ), | |
| "ground_truth": { | |
| "name": "Rajesh Kumar Verma", | |
| "job_title": "Senior Software Engineer", | |
| "company": "Tata Consultancy Services (TCS)", | |
| "email": "rajesh.verma@tcs.com", | |
| "phone": "+91 98765 43210", | |
| "city": "Bangalore", | |
| }, | |
| "field_types": { | |
| "name": "fuzzy", | |
| "job_title": "fuzzy", | |
| "company": "contains", | |
| "email": "exact", | |
| "phone": "numeric", | |
| "city": "contains", | |
| }, | |
| }, | |
| { | |
| "id": "easy_2", | |
| "difficulty": "easy", | |
| "description": "Extract product details from this e-commerce listing.", | |
| "raw_text": """ | |
| Samsung Galaxy S24 Ultra 5G (Titanium Black, 256 GB) (12 GB RAM) | |
| Price: ₹1,29,999 | |
| MRP: ₹1,49,999 (13% off) | |
| Rating: 4.5 out of 5 (23,847 reviews) | |
| Brand: Samsung | |
| Category: Smartphones | |
| In Stock: Yes — Ships within 2 days | |
| Seller: Appario Retail Private Ltd | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "product_name", "price", "brand", "rating", "in_stock", "seller" | |
| ], | |
| "extraction_hints": ( | |
| "product_name: the full name of the product. " | |
| "price: the selling price as a number (not MRP). " | |
| "brand: the manufacturer/brand name. " | |
| "rating: the numerical rating (e.g. 4.5). " | |
| "in_stock: 'Yes' or 'No'. " | |
| "seller: the name of the seller." | |
| ), | |
| "ground_truth": { | |
| "product_name": "Samsung Galaxy S24 Ultra 5G", | |
| "price": "129999", | |
| "brand": "Samsung", | |
| "rating": "4.5", | |
| "in_stock": "Yes", | |
| "seller": "Appario Retail Private Ltd", | |
| }, | |
| "field_types": { | |
| "product_name": "contains", | |
| "price": "numeric", | |
| "brand": "exact", | |
| "rating": "numeric", | |
| "in_stock": "exact", | |
| "seller": "fuzzy", | |
| }, | |
| }, | |
| { | |
| "id": "easy_3", | |
| "difficulty": "easy", | |
| "description": "Extract event details from this invitation.", | |
| "raw_text": """ | |
| You're Invited! 🎉 | |
| Annual Tech Meetup 2026 — "Building the Future with AI" | |
| Date: Saturday, April 18, 2026 | |
| Time: 10:00 AM to 5:00 PM IST | |
| Venue: Koramangala Indoor Stadium, 80 Feet Road, Koramangala, Bangalore | |
| Organized by: Bangalore Developer Community | |
| Entry Fee: Free (Registration Required) | |
| Expected Attendees: 500+ | |
| RSVP: events@bangaloredev.org | |
| Contact: Priya Nair — +91 87654 32109 | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "event_name", "date", "time", "venue", "organizer", "entry_fee", "contact_email" | |
| ], | |
| "extraction_hints": ( | |
| "event_name: name of the event. " | |
| "date: the date in any readable format. " | |
| "time: the time range. " | |
| "venue: the location/address. " | |
| "organizer: who organized it. " | |
| "entry_fee: the cost (or 'Free'). " | |
| "contact_email: the email address for RSVP/contact." | |
| ), | |
| "ground_truth": { | |
| "event_name": "Annual Tech Meetup 2026", | |
| "date": "April 18, 2026", | |
| "time": "10:00 AM to 5:00 PM", | |
| "venue": "Koramangala Indoor Stadium", | |
| "organizer": "Bangalore Developer Community", | |
| "entry_fee": "Free", | |
| "contact_email": "events@bangaloredev.org", | |
| }, | |
| "field_types": { | |
| "event_name": "contains", | |
| "date": "contains", | |
| "time": "contains", | |
| "venue": "contains", | |
| "organizer": "fuzzy", | |
| "entry_fee": "exact", | |
| "contact_email": "exact", | |
| }, | |
| }, | |
| # ================================================================ | |
| # MEDIUM TASKS — Messier text, more fields, some ambiguity | |
| # ================================================================ | |
| { | |
| "id": "medium_1", | |
| "difficulty": "medium", | |
| "description": "Extract job details from this job posting. The text is messy and has inconsistent formatting.", | |
| "raw_text": """ | |
| 🔥 HIRING NOW 🔥 We are looking for talented people to join our team!! | |
| Position: Backend Developer (Python/Django) | |
| Company: Flipkart Internet Pvt Ltd | |
| Location: Bellandur, Bangalore (Hybrid — 3 days WFO) | |
| About the role: | |
| We need someone who can build scalable microservices, work with | |
| PostgreSQL and Redis, and collaborate with a team of 15 engineers. | |
| You'll report to the Engineering Manager. | |
| Requirements: | |
| - 3-5 years experience in Python | |
| - Strong knowledge of Django or Flask | |
| - Experience with cloud platforms (AWS preferred) | |
| - Good communication skills | |
| - BTech/BE in Computer Science or equivalent | |
| Compensation: ₹18,00,000 - ₹28,00,000 per annum + stock options | |
| Benefits include health insurance, meal coupons, and gym membership. | |
| Apply before: 30 April 2026 | |
| Apply at: careers@flipkart.com or visit careers.flipkart.com | |
| Posted by: HR Team, Flipkart | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "job_title", "company", "location", "work_mode", | |
| "experience_required", "min_salary", "max_salary", | |
| "apply_by", "apply_email" | |
| ], | |
| "extraction_hints": ( | |
| "job_title: the position title. " | |
| "company: the hiring company's name. " | |
| "location: the city/area. " | |
| "work_mode: e.g. Remote, Hybrid, On-site. " | |
| "experience_required: years of experience needed (e.g. '3-5 years'). " | |
| "min_salary: minimum salary as a number. " | |
| "max_salary: maximum salary as a number. " | |
| "apply_by: application deadline date. " | |
| "apply_email: email to apply." | |
| ), | |
| "ground_truth": { | |
| "job_title": "Backend Developer", | |
| "company": "Flipkart", | |
| "location": "Bangalore", | |
| "work_mode": "Hybrid", | |
| "experience_required": "3-5 years", | |
| "min_salary": "1800000", | |
| "max_salary": "2800000", | |
| "apply_by": "30 April 2026", | |
| "apply_email": "careers@flipkart.com", | |
| }, | |
| "field_types": { | |
| "job_title": "contains", | |
| "company": "contains", | |
| "location": "contains", | |
| "work_mode": "contains", | |
| "experience_required": "contains", | |
| "min_salary": "numeric", | |
| "max_salary": "numeric", | |
| "apply_by": "contains", | |
| "apply_email": "exact", | |
| }, | |
| }, | |
| { | |
| "id": "medium_2", | |
| "difficulty": "medium", | |
| "description": "Extract invoice details from this messy invoice text. Numbers use Indian formatting.", | |
| "raw_text": """ | |
| TAX INVOICE | |
| Invoice No: INV-2026-03847 | |
| Date: 22-Mar-2026 | |
| BILLED TO: SHIPPED TO: | |
| Pradeep Machinery Works Same as billing address | |
| 45-B, Industrial Area Phase II | |
| Peenya, Bangalore - 560058 | |
| GSTIN: 29AABCP1234F1ZV | |
| FROM: | |
| Mehta Steel Suppliers Pvt Ltd | |
| Naroda GIDC, Ahmedabad, Gujarat | |
| GSTIN: 24AAACM5678K1Z2 | |
| S.No | Description | HSN | Qty | Rate | Amount | |
| -----+----------------------+-------+-----+----------+--------- | |
| 1 | MS Round Bar 20mm | 7214 | 50 | 4,500.00 | 2,25,000 | |
| 2 | MS Flat Bar 40x5mm | 7214 | 30 | 3,200.00 | 96,000 | |
| 3 | SS Rod 12mm | 7222 | 20 | 8,750.00 | 1,75,000 | |
| Subtotal: ₹4,96,000.00 | |
| CGST (9%): ₹44,640.00 | |
| SGST (9%): ₹44,640.00 | |
| ───────────────────────── | |
| TOTAL: ₹5,85,280.00 | |
| Payment Terms: Net 30 days | |
| Bank: HDFC Bank, A/c: 50100123456789, IFSC: HDFC0001234 | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "invoice_number", "invoice_date", "buyer_name", "buyer_city", | |
| "seller_name", "seller_city", "subtotal", "total_amount", | |
| "payment_terms" | |
| ], | |
| "extraction_hints": ( | |
| "invoice_number: the invoice reference number. " | |
| "invoice_date: the date of the invoice. " | |
| "buyer_name: name of the company being billed. " | |
| "buyer_city: city of the buyer. " | |
| "seller_name: name of the company issuing the invoice. " | |
| "seller_city: city of the seller. " | |
| "subtotal: subtotal amount before tax, as a number. " | |
| "total_amount: final total including tax, as a number. " | |
| "payment_terms: the payment terms." | |
| ), | |
| "ground_truth": { | |
| "invoice_number": "INV-2026-03847", | |
| "invoice_date": "22-Mar-2026", | |
| "buyer_name": "Pradeep Machinery Works", | |
| "buyer_city": "Bangalore", | |
| "seller_name": "Mehta Steel Suppliers Pvt Ltd", | |
| "seller_city": "Ahmedabad", | |
| "subtotal": "496000", | |
| "total_amount": "585280", | |
| "payment_terms": "Net 30 days", | |
| }, | |
| "field_types": { | |
| "invoice_number": "exact", | |
| "invoice_date": "contains", | |
| "buyer_name": "fuzzy", | |
| "buyer_city": "contains", | |
| "seller_name": "contains", | |
| "seller_city": "contains", | |
| "subtotal": "numeric", | |
| "total_amount": "numeric", | |
| "payment_terms": "contains", | |
| }, | |
| }, | |
| { | |
| "id": "medium_3", | |
| "difficulty": "medium", | |
| "description": "Extract details from this restaurant review. The review is casual and rambling.", | |
| "raw_text": """ | |
| just went to this place called The Bombay Canteen in Lower Parel, Mumbai | |
| last night and honestly? BLOWN AWAY. 10/10 would go again. | |
| ok so the cuisine is basically modern indian — they take classic desi dishes | |
| and do this crazy fusion twist. we tried the Coorgi Pandi Curry (pork) and | |
| the Charred Broccoli with sesame chutney. the pandi curry was probably the | |
| best thing ive eaten this year ngl | |
| price wise its def on the expensive side — we paid about 4500 for two people | |
| including drinks. worth it tho for a special occasion. they also have a great | |
| cocktail menu, tried the Old Monk cocktail and it slaps | |
| ambiance is super chill, kinda industrial-chic vibe. reservations highly | |
| recommended especially on weekends. we went on a Saturday and it was packed. | |
| service was really good, our server Amit was super attentive and knew the | |
| menu inside out. only downside is parking — lower parel is a nightmare for | |
| parking lol | |
| rating: 4.5/5 | |
| would recommend for: date nights, celebrations, foodies | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "restaurant_name", "location", "cuisine_type", "price_for_two", | |
| "rating", "ambiance", "recommended_for" | |
| ], | |
| "extraction_hints": ( | |
| "restaurant_name: name of the restaurant. " | |
| "location: area and city. " | |
| "cuisine_type: type of cuisine (e.g. 'Modern Indian'). " | |
| "price_for_two: approximate cost for two people as a number. " | |
| "rating: numerical rating out of 5. " | |
| "ambiance: description of the ambiance in a few words. " | |
| "recommended_for: what occasions it's good for." | |
| ), | |
| "ground_truth": { | |
| "restaurant_name": "The Bombay Canteen", | |
| "location": "Lower Parel, Mumbai", | |
| "cuisine_type": "Modern Indian", | |
| "price_for_two": "4500", | |
| "rating": "4.5", | |
| "ambiance": "industrial-chic", | |
| "recommended_for": "date nights, celebrations, foodies", | |
| }, | |
| "field_types": { | |
| "restaurant_name": "fuzzy", | |
| "location": "contains", | |
| "cuisine_type": "contains", | |
| "price_for_two": "numeric", | |
| "rating": "numeric", | |
| "ambiance": "contains", | |
| "recommended_for": "contains", | |
| }, | |
| }, | |
| # ================================================================ | |
| # HARD TASKS — Very messy, lots of noise, tricky edge cases | |
| # ================================================================ | |
| { | |
| "id": "hard_1", | |
| "difficulty": "hard", | |
| "description": "Extract property details from this real estate listing. The text is full of abbreviations and agent jargon.", | |
| "raw_text": """ | |
| 🏠 URGENT SALE — Below Market Price!! Owner Relocating Abroad | |
| 2BHK Semi-Furnished Flat in Prestige Lakeside Habitat, Whitefield | |
| Blr East. Tower B, 14th floor, East facing. Vastu compliant. | |
| Config: 2 Bed + 2 Bath + 1 Balcony, Servant Qtr available | |
| Carpet Area: 1,180 sq.ft (Super Built-up: 1,650 sq.ft) | |
| Possession: Immediate (OC received) | |
| PRICE: ₹1.15 Cr (negotiable) — that's ₹6,970/sqft on carpet!! | |
| Maintenance: ₹4.50/sqft/month (approx ₹5,300/month) | |
| Parking: 1 Covered + 1 Open | |
| Society amenities: Club house, Gym, Swimming pool, Tennis court, | |
| Jogging track, Children play area, 24/7 security, Power backup | |
| Near Whitefield Metro (800m), ITPL (2km), International Airport (35km) | |
| Schools nearby: Oakridge, Delhi Public School, Inventure Academy | |
| Contact: Suresh Reddy (Owner Direct — No Brokers!) | |
| Mobile: +91 99001 22334 | |
| WhatsApp same number. Genuine buyers only. Available weekdays after 6 PM. | |
| Ref: PROP-WF-2026-0892 | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "property_type", "bedrooms", "bathrooms", "project_name", | |
| "location", "floor", "carpet_area_sqft", "price", | |
| "price_per_sqft", "parking", "contact_name", "contact_phone", | |
| "reference_id" | |
| ], | |
| "extraction_hints": ( | |
| "property_type: e.g. 'Apartment', 'Flat', 'Villa'. " | |
| "bedrooms: number of bedrooms as a number. " | |
| "bathrooms: number of bathrooms as a number. " | |
| "project_name: name of the residential project/society. " | |
| "location: area name. " | |
| "floor: which floor number. " | |
| "carpet_area_sqft: carpet area in sq.ft as a number. " | |
| "price: total price as a number (in rupees, not crores). " | |
| "price_per_sqft: price per sqft as a number. " | |
| "parking: description of parking spots. " | |
| "contact_name: name of the contact person. " | |
| "contact_phone: phone number. " | |
| "reference_id: the property reference ID." | |
| ), | |
| "ground_truth": { | |
| "property_type": "Flat", | |
| "bedrooms": "2", | |
| "bathrooms": "2", | |
| "project_name": "Prestige Lakeside Habitat", | |
| "location": "Whitefield", | |
| "floor": "14", | |
| "carpet_area_sqft": "1180", | |
| "price": "11500000", | |
| "price_per_sqft": "6970", | |
| "parking": "1 Covered + 1 Open", | |
| "contact_name": "Suresh Reddy", | |
| "contact_phone": "+91 99001 22334", | |
| "reference_id": "PROP-WF-2026-0892", | |
| }, | |
| "field_types": { | |
| "property_type": "contains", | |
| "bedrooms": "numeric", | |
| "bathrooms": "numeric", | |
| "project_name": "fuzzy", | |
| "location": "contains", | |
| "floor": "numeric", | |
| "carpet_area_sqft": "numeric", | |
| "price": "numeric", | |
| "price_per_sqft": "numeric", | |
| "parking": "contains", | |
| "contact_name": "fuzzy", | |
| "contact_phone": "contains", | |
| "reference_id": "exact", | |
| }, | |
| }, | |
| { | |
| "id": "hard_2", | |
| "difficulty": "hard", | |
| "description": "Extract details from this messy resume text. The formatting is inconsistent and uses abbreviations.", | |
| "raw_text": """ | |
| ANANYA KRISHNAN | |
| ananya.k93@outlook.com | +91-70123-45678 | github.com/ananyak93 | |
| Hyderabad, Telangana | |
| ---- | |
| PROFESSIONAL SUMMARY | |
| ML Engineer with 4.5 yrs exp in NLP & computer vision. Built prod systems | |
| at scale handling 10M+ requests/day. Published at ACL 2025. Strong in | |
| PyTorch, transformers, and MLOps. | |
| EXPERIENCE | |
| Machine Learning Engineer — Razorpay (Bangalore) | |
| Jul 2023 – Present (2.5 yrs) | |
| • Built fraud detection pipeline processing 10M txns/day, reduced fraud by 34% | |
| • Fine-tuned LLMs for merchant category classification, F1 score 0.94 | |
| • Led team of 3 for real-time risk scoring system | |
| Data Scientist — Swiggy (Hyderabad) | |
| Jan 2022 – Jun 2023 (1.5 yrs) | |
| • Developed demand forecasting model improving delivery partner allocation by 22% | |
| • A/B tested recommendation engine changes, 15% increase in order value | |
| EDUCATION | |
| BTech Computer Science & Engineering | |
| IIIT Hyderabad, 2018-2022 | |
| CGPA: 8.7/10 | |
| SKILLS: Python, PyTorch, TensorFlow, Hugging Face, FastAPI, Docker, | |
| Kubernetes, PostgreSQL, Redis, AWS (SageMaker, EC2, S3), MLflow, Wandb | |
| PUBLICATIONS | |
| "Efficient Attention Mechanisms for Low-Resource NLP" — ACL 2025 | |
| CERTIFICATIONS | |
| AWS Certified ML Specialty (2024) | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "name", "email", "phone", "current_city", | |
| "years_of_experience", "current_company", "current_role", | |
| "previous_company", "degree", "college", | |
| "cgpa", "publication_venue" | |
| ], | |
| "extraction_hints": ( | |
| "name: full name. " | |
| "email: email address. " | |
| "phone: phone number. " | |
| "current_city: city of residence. " | |
| "years_of_experience: total years (as a number like '4.5'). " | |
| "current_company: where they currently work. " | |
| "current_role: current job title. " | |
| "previous_company: the company before the current one. " | |
| "degree: educational degree name. " | |
| "college: name of the college/university. " | |
| "cgpa: their CGPA as a number. " | |
| "publication_venue: conference/journal name." | |
| ), | |
| "ground_truth": { | |
| "name": "Ananya Krishnan", | |
| "email": "ananya.k93@outlook.com", | |
| "phone": "+91-70123-45678", | |
| "current_city": "Hyderabad", | |
| "years_of_experience": "4.5", | |
| "current_company": "Razorpay", | |
| "current_role": "Machine Learning Engineer", | |
| "previous_company": "Swiggy", | |
| "degree": "BTech Computer Science", | |
| "college": "IIIT Hyderabad", | |
| "cgpa": "8.7", | |
| "publication_venue": "ACL 2025", | |
| }, | |
| "field_types": { | |
| "name": "fuzzy", | |
| "email": "exact", | |
| "phone": "numeric", | |
| "current_city": "contains", | |
| "years_of_experience": "numeric", | |
| "current_company": "exact", | |
| "current_role": "contains", | |
| "previous_company": "exact", | |
| "degree": "contains", | |
| "college": "contains", | |
| "cgpa": "numeric", | |
| "publication_venue": "contains", | |
| }, | |
| }, | |
| { | |
| "id": "hard_3", | |
| "difficulty": "hard", | |
| "description": "Extract key facts from this news article snippet. The article mixes facts with opinions and quotes.", | |
| "raw_text": """ | |
| BENGALURU/NEW DELHI: In what industry analysts are calling a "landmark | |
| moment for Indian tech," Wipro Ltd on Thursday announced it will acquire | |
| UK-based cloud consulting firm CloudReach Technologies for an estimated | |
| $620 million (approximately ₹5,160 crore at current exchange rates). | |
| The deal, which is expected to close by Q2 FY2027 (July-September 2026), | |
| will add roughly 2,800 employees to Wipro's workforce, primarily in the | |
| UK, Germany, and the Netherlands. Wipro's CEO Thierry Delaporte said in | |
| a press conference, "This acquisition strengthens our position in the | |
| European cloud market significantly." | |
| CloudReach, founded in 2009 by CEO James Wilman, reported revenues of | |
| $180 million in FY2026 with a client base that includes three FTSE 100 | |
| companies. The firm specializes in multi-cloud architecture and has | |
| partnerships with AWS, Azure, and Google Cloud. | |
| Wipro shares rose 3.2% on BSE following the announcement, closing at | |
| ₹487.65. Market experts at ICICI Securities maintained a 'Buy' rating | |
| with a target price of ₹540. Some analysts, however, expressed concerns | |
| about the premium paid, noting the acquisition price represents roughly | |
| 3.4x CloudReach's annual revenue. | |
| The Competition Commission of India (CCI) approval is still pending. | |
| """.strip(), | |
| "fields_to_extract": [ | |
| "acquiring_company", "target_company", "deal_value_usd", | |
| "deal_value_inr_crore", "expected_close_date", | |
| "employees_added", "acquiring_company_ceo", | |
| "target_company_ceo", "target_revenue_usd", | |
| "share_price_change_percent", "closing_share_price" | |
| ], | |
| "extraction_hints": ( | |
| "acquiring_company: company making the acquisition. " | |
| "target_company: company being acquired. " | |
| "deal_value_usd: deal value in USD millions as a number. " | |
| "deal_value_inr_crore: deal value in INR crore as a number. " | |
| "expected_close_date: when the deal is expected to close. " | |
| "employees_added: number of employees being added. " | |
| "acquiring_company_ceo: CEO of the acquiring company. " | |
| "target_company_ceo: CEO/founder of the target company. " | |
| "target_revenue_usd: target company revenue in USD millions. " | |
| "share_price_change_percent: percentage change in share price. " | |
| "closing_share_price: the closing share price in INR." | |
| ), | |
| "ground_truth": { | |
| "acquiring_company": "Wipro", | |
| "target_company": "CloudReach Technologies", | |
| "deal_value_usd": "620", | |
| "deal_value_inr_crore": "5160", | |
| "expected_close_date": "Q2 FY2027", | |
| "employees_added": "2800", | |
| "acquiring_company_ceo": "Thierry Delaporte", | |
| "target_company_ceo": "James Wilman", | |
| "target_revenue_usd": "180", | |
| "share_price_change_percent": "3.2", | |
| "closing_share_price": "487.65", | |
| }, | |
| "field_types": { | |
| "acquiring_company": "contains", | |
| "target_company": "contains", | |
| "deal_value_usd": "numeric", | |
| "deal_value_inr_crore": "numeric", | |
| "expected_close_date": "contains", | |
| "employees_added": "numeric", | |
| "acquiring_company_ceo": "fuzzy", | |
| "target_company_ceo": "fuzzy", | |
| "target_revenue_usd": "numeric", | |
| "share_price_change_percent": "numeric", | |
| "closing_share_price": "numeric", | |
| }, | |
| }, | |
| ] | |
| def get_tasks_by_difficulty(difficulty: str) -> list[dict]: | |
| return [t for t in TASKS if t["difficulty"] == difficulty] | |
| def get_task_by_id(task_id: str) -> dict | None: | |
| for task in TASKS: | |
| if task["id"] == task_id: | |
| return task | |
| return None | |
| def get_all_task_ids() -> list[str]: | |
| return [t["id"] for t in TASKS] |